Layered Architecture--分层体系结构

来源:互联网 发布:服装零售软件 编辑:程序博客网 时间:2024/06/07 17:06

分层架构是最常见的架构模式,也被称为n层架构模式。这种模式是绝大多数JAVA EE应用的标准模式,因此被大多数架构师,设计师和开发者所熟悉。分层架构紧密联系着传统IT通信和多数公司的组织结构。分层因此成为多数商业应用开发的一个自然选择。


模式描述


分层架构模式中的组件被组织成水平层,每个层执行应用中的一个具体角色(比如,表示逻辑或业务逻辑)。尽管分层架构模式不会具体要求模式中必须存在的层的数目和类型,但大多数分层架构由四个标准层:表示(presentation),业务(business),持久(persistence)和数据库(database),如下图所示。


在一些情况下,业务层和持久层结合成一个单一的业务层,特别是在持久逻辑(比如,SQL或HSQL)嵌入到业务层组件的时候。因此,小一些的应用有可能只有三个层次,而大一些或者更复杂的商业应用会有五个以上的层次。


层次架构模式的每层有一个具体角色和职责。比如,一个表示层用于处理所有用户接口和浏览通信逻辑,而一个业务层会用于执行具体的和要求(request)相关的业务规则。架构的每个层会形成满足具体业务要求的一个抽象。举个例子,表示层不必知道或不必关心如何得到用户的数据,而只需要以特定的格式展示屏幕上的信息。同样地,业务层不必关心如何格式化用户数据来展示在屏幕上,甚至用户数据从哪里来;只需从持久层获得数据,用业务逻辑处理数据(比如,计算值或聚集数据),最后把信息传到表示层。


分层架构模式最重要的特性之一就是组件的关注分离(separation of concerns)。一个层中的组件只处理和该层相关的逻辑。比如,表示层中的组件只处理表示逻辑,而业务层中的组件只处理业务逻辑。这种组件分类使构建有效角色和职责模型变得容易,也有益于开发,测试,掌控和维护,这是因为这个架构有着定义明确的组件接口和限制的组件视野。


关键概念


注意下图中的架构中每个层都被标记为关闭着的(closed)。这是层次架构模式中非常重要的概念。一个关闭着的层意味着当一个请求从一个层移动到另一个层,它必须首先到移动到一个层的下层,然后继续移动。举个例子,一个请求从表示层开始在到数据库层之前必须先移动到业务层,然后到持久层。



那为什么不允许表示层直接访问表示层或数据库层呢?毕竟,直接的数据库访问会比经过一些没有必要的层快很多。问题的答案隐藏在一个重要的概念中,叫做层次隔离


层次隔离概念意味着架构中一个层的改变通常不会影响其他层的组件:改变被隔离在一个层的组件中,也许会影响另一个相关的层(比如包含SQL的持久层)。如果你允许表示层直接访问持久层,那么持久层中对SQL的改变会影响业务层和表示层,因此会产生一个组件相互依赖的耦合紧密的应用。这种架构会非常难于改变。


层次的隔离概念也意味着每个层独立于其他层,因此不需要知道其他层的内部工作机理。为了理解这个概念的重要性,考虑一个大型的重构工作,该工作是转变表示框架从JSP(Java Server Pages) 到JSF(Java Server Faces)。假如表示层和业务层用的合同保持一样,那么业务层没有被重构影响,仍杨保持完全独立于表示层所用的用户界面框架的类型。


尽管关闭着的层有助于层次的隔离因而有助于隔离架构中的改变,仍然会有某些层保持开放(open)的特例。假如你想增加

0 0
原创粉丝点击