Tier 与 Layer的关系
Tier 与 Layer一般都被翻译为”层”,指应用程序的结构,我们听到最多的就是要按”三层”机构来构造应用程序。在写本文之前,我都一直很迷惑:浏览器属于应用程序的表示层吗?数据库是一个Tier还是一个Layer呢?最近看了一些应用程序体系结构方面的资料,小有心得,说说我目前的理解,欢迎大家指正。
Tier 是分布式应用程序部署时的结构(在微软的ESP2.0里翻译为”级”),如果说某个应用程序是三Tier,那么它肯定可以部署到三台不同的计算机上,当然也可以部署到同一台机器上。在.net框架下,Tier和Tier之间连接的桥梁一般是Remoting或Web Service。浏览器是不需要部署的,所以使用浏览器的客户端不应属于一个Tier,而数据库则属于一个Tier。而Layer指应用程序代码的逻辑结构,一般被设计为三层:表示层、业务逻辑层和数据访问层。浏览器无需编码当然也不属于Layer的范畴。编写应用程序时尽管可能包含存储过程,但存储过程是负责数据访问的,所以数据库不属于一个Layer。一个应用程序无论要部署为几个Tier,只要它访问数据,都可以按这三个Layer来编写。而一个应用程序要想部署为N(N大于等于2)Tier,则必须包含N-1个Layer。
那”三层”到底指什么呢?我觉得指Tier和Layer都有道理,如果是指Tier的话,那么它第一个Tier是WinForm或Asp.net,第二个Tier包含业务逻辑Layer和数据访问Layer,第三个Tier就是数据库了。第一和第二个Tier之间用Remoting或Web Service通信。如果指Layer的话代表什么我就不说了,呵呵。