一起谈.NET技术,关于大型ASP.NET应用系统的架构—如何做到高性能高可伸缩性 - 博客文库 - 博客园?
博客园首页一起谈.NET技术,关于大型ASP.NET应用系统的架构—如何做到高性能高可伸缩性作者:吴艾伟 来源:博客园 发布时间:2011-09-02
00:20 阅读:4 次 原文链接 [收藏]
简介
前面一篇《关于大型asp.net应用系统的架构-架构的选择》写完之后,有一些同仁热心回复,有的是提问题,同时希望能举一些例子来说明;有的是提建议,希望下一篇写得更详细点;还有的同仁提出不同的观点。感谢大家的参与。会继续努力的。本文将针对Layer和Tier的区别做个辨析。并详细介绍3
Tier / N Tier架构中各Tier的开发。各Tier的分布式方式。以及为了达到高性能,低延迟,高可伸缩性,需要采取哪些方法和手段。
关于“大型asp.net应用系统 ”的概念
意指能支持同时在线用户数目很多的asp.net应用系统。同时在线用户数目要达到多少才算大型。其实也没有一个可以作为共识的定义,个人认为如果一个应用
系统能做到7x24小时同时在线用户数不少于5000的,应该可以称为大型应用系统。例如:微软的官网(microsoft),7x24小时都有来自全球的人访问,有查阅MSDN的,有访问微软博客的,有看微软产品信息的,有逛微软论坛的,等等等等。同时访问微软官网的人太多了,远多于5000。还有Myspace。
它有总数为几千万的用户,它的同时在线用户数也是相当惊人的。它之所以能服务众多的用户,是因其背后有一个庞大的系统来支撑。
层Layer和排Tier的辨析
这里针对上篇的评论,对层Layer和排Tier做个辨析。上篇提到了分层Layer的架构只能部署在同一台服务上,有同仁在评论里提出不同意见,说分层的架构也可以部署到多台服务器上的。层Layer是指应用程序各功能在逻辑上的分组,而排Tier表示了应用程序各功能是物理分部在多台
计算机上。层Layer很好理解,就是相同功能的类被逻辑上分到了一组,如:数据存取的类都放到了一块,在同一个名称空间下,在同一个程序集里,商务逻辑的类也是一样进行分组,各组之间有统一的调用形式。如商务逻辑的类引用数据存取的类,调用其方法,取得返回结果。同时UI层可调用商务逻辑层的类。商务逻辑层的类既有服务UI层的功能,也有调用数据访问层的功能。是个承上启下的层。这些层都是按照功能来划分的。层Layer是一种逻辑上的划分。排Tier是特指物理的划分,应用程序的各功能,分别被放在了不同的服务器上,如UI功能单独占用一些服务器,商务逻辑功能占用另外的一些服务器。这两种功
能部件之间有服务器的边界,那么就有专门负责分布式调用的功能部件。如果单从功能逻辑上看,排Tier中也是有层Layer的,只是比传统层Layer的划分多了一些用于分布式调用的层Layer。排Tier是各层Layer物理分离后,再加入一些负责分布式调用的层Layer才形成的。排Tier和层Layer是有着联系的。从这个意义上说,排Tier是层Layer物理分离时的特例。有层Layer物理分离的情况下,可以称之为分层的架构,但是实际上这并不准确,因为排Tier是专门为这个场景定义的。有物理分离,就叫排Tier更准确些。层Layer只要一做物理分离,就转化成了排Tier。
从部署角度试图来区别分层Layer的架构和3 排Tier / N
排Tier的架构。因为物理分离的场景已经被定义成排Tier,那么剩下的就只能是物理不分离的场景了。所以分层Layered架构就特指部署在同一台服务上的场景(即物理不分离),3
排Tier / N
排Tier架构就特指各层Layer物理分离的场景。分层的架构部署到多台服务器上,理论上是可以的,但是光靠原有的层是不够的,有了服务器的边界之后,原来在同一个进程里面的方法调用就不再可行,必须新加