Internet Application Architecture : Tiers ? Layers?
这两天考虑最多的一个问题是Tiers/Layers问题。这是一个争论广泛似乎没有答案的问题。下午试用Google Pages做网站时受了启发。任何一种架构,存在了就是合理的,就应是满足了某种需求解决了某类问题。所以,为什么一定要为所有的问题找一个统一的解决放案呢?互联网网站有大有小、有简单的有复杂的、有专一的有综合的、有长久发展的有临时实验的,千姿百态,共性的东西其实并不多。这样的话,寻找一种能够包容所有问题域的解决方案似乎就挺不务实的。一个方案解决所有问题,听上去似乎很好:统一了开发过程。可是执行起来就有问题了:无论网站大小,都用同样的架构,写同样多的基础代码。如果做十个网站有八个是短平快且不相似的,那开发成本是提高了而不是降低了。
大型的网站,像Amazon,ebay,Taobao,Yahoo,My Space,其架构、技术、开发都是工业级的,自有Enterprise的方法和技术。
专一的网站:Flickr,Delicious,BaseCamp等所谓Web2.0网站,有Getting Real思想指导下的过程。
普通的网站,比如那些企业门户,又可以用简单快速的技术实现。
个人的网站:比如Blog,比如个人portal,更可以根本不需要编程就实现,比如使用Windows Live Space,Google Pages。
不同类型的网站,可以使用不同的架构、不同的语言、不同的过程来实现。所以,对于Tiers/Layers问题,如果说Case by Case不是一个好的答案,那么Type by Type应该算是一个还好的答案。
Recommended Blogs on Architecture
Web Applications: N-Tier vs. N-Layer - Benefits and Trade-Offs
Should all apps be n-tier?
Avoid Chatty Interfaces Between the Tiers in Your ASP.NET Web Application
What is n-Tier Architecture?
N-Tier Web Applications using ASP.NET 2.0 and SQL Server 2005
http://msdn.microsoft.com/architecture/shareideas/sharebrowseblogs/