I am assigned a task to develop a large scale social web application like Facebook, twitter etc, using ASP.net with C#
Before this my development was based on three tier architecture (i.e Presentation Layer, business logic l开发者_如何学编程ayer, and data access layer) but for this project i am confused because its my first large scale project :(
I just want to know what are other possible architectural choices i have?
I know its difficult to answer such question, but i only want to have good resource, then i study each possible option and finally, choose one that suits my requirement. I did a little RnD over internet but didn't succeed much.
You should check out Windows Azure. it offers hosting, 3 types of scalable (but not relational) storage in the form of Blobs (or files / images / raw), Queues (for distributed communication) and Table Storage (to maintain 'entity' data in a non-relational manner).
There is also SQL Azure for relational storage and AppFabric for hybrid (on-prem/cloud) application addressibility and Access Control for Claims-based Identity Management.
It has built-in diagnostics and if you know C#/ASP.NET/ASP.NET MVC no new skills are needed to take advantage of this platform. It also works with Java and PHP.
windows.azure.com
As far as architecture goes, you can still maintain your 3 tiers. What you want to be able to do is easily scale your database reads and ideally have a caching layer in place like memcached or membase. Facebook, YouTube, and basically every other high traffic application use these caches.
After that, it's optimizing the page load and delivery time - which is a broad task, but also much easier than trying to figure out how to modify a table with 100 million records.
I would choose Service Oriented Architecture. All business logic and DAL on good server to perform all time and resource consuming operations, logic. There is all architecture patters elaborated for us by best practices and patterns Microsoft Team. Read about Web Service Software Factory and choose it to perform BLL and DAL, and simply call services from server on which is hosted web site. On another server you should put presentation layer - pages.
This will give up following benefits:
1. Best practices and architecture
2. If you are developing with someone else, you can easily split the work.
3. Performance, all work is done on server.
These are major perspectives, which are more than enough.
Regards,
Sergiu.
I think for designing large web architecture not only performance, you have to look broadly, both the resource, the data architecture, easy to refactor and can view different handling service (multi-layer), see my blog post about large web architecture with javascript.
http://faizalpribadi.github.io/web-architecture-for-large-scale-application/
精彩评论