本节主要讨论在目前的应用中,经常使用的高层的模式和原则。通常会涉及架构风格,包括模式,例如:C/S,分层架构,组件为基础的架构,消息总线架构,SOA架构。对于每一种架构,都会从整体、主要原则、主要优点,和帮助你的应用选择合适的架构风格上讲述一些信息。描述不同类型的应用的风格很重要。例如:一些架构模式描述部署模式,一些描述结构和设计问题,另外一些描述通信因素。因此,在本章中,一个典型的应用将会组合包括一种以上的风格。
架构风格,有时候也叫架构模式,是为一个系统提供的一系列抽象框架。架构风格通过为经常发生的问题提供解决方案,来提高设计重用和改善程序结构。你可以把架构风格和模式想象成规划一个应用的一系列原则。
下面列出主要的关注点和对应的架构模式
关注点 | 架构风格 |
Communication | SOA,Message Bus |
Deployment | c/s,N-Tier,3-Tier |
Domain | Domain Driven Design |
Structure | Component-Based,Object-Based, Layered Architecture |
架构风格简介
组合架构风格
一个软件系统通常不止使用一种架构风格,通常是组合多种架构风格来完成系统。例如:你可以使用SOA设计,开发方式使用layered architecture和面向对象架构风格。
如果你正在建立一个公共web应用,组合架构风格会很有帮助,通过layered architecture可以对重要的事情进行有效的分离。将你的表现逻辑从业务逻辑和数据访问逻辑中分离。你所在组织的安全需求可能会迫使你使用3-tier的方式部署应用,或者是部署到更多的层上。表现层会部署在组织的内联网和外联网之间,在表现层,可以使用单独的表现模式(分层设计的风格),例如:MVC,作为内部风格。你也可以用SOA架构风格,在web服务器和app服务器之间实现消息为基础的通信。
如果你正在建立一个桌面应用,你可能会有一个client,向服务端发送请求。在这种情况下,你就可以用C/S风格部署client和server,使用组件为基础的架构风格为独立组件之间设计通信的接口。在组建的设计过程中,使用面向对象设计方法,将会提高重用性、可测试性,和灵活性。
许多因素都会在你选择价格风格的时候影响你。这些因素包括你所在组织的设计和实现能力,开发者的经验,你的基础设施和组织规格的参数。下面将继续帮助你选择合适的架构风格。
C/S架构风格
C/S架构风格描述了一个将client和server分离的分布式系统,简单的模式就是一个server端的应用被很多的client直接访问,就是2-tier架构风格。
历史上,client/server架构代表了桌面的UI应用,直接和数据库服务器进行通行,数据库包括了大部分的业务逻辑,或者是一个专用的文件服务器。client/server架构风格描述的是一个client和一个或者是多个server之间的关系,client初始化一个或者是多个请求(客户端有可能会使用UI界面),等待响应,收到响应之后进行处理。server就是授权用户,然后返回结果。server可能会用一系列协议和数据格式于client进行通信。
现如今,使用client/server的架构风格的例子也包括:运行互联网或者是内联网上的,以web浏览器为基础的程序;以windows操作系统为基础的,访问网络服务的应用;访问远程数据的应用(邮件阅读,ftp client,数据库查询工具);操作远程系统的工具(远程系统管理和网络监视器)。
其他client/server风格的变种包括:
client/server的主要好处
如果你的应用是以服务器为基础的,需要支持很多的客户端访问,或者是建立的就是通过浏览器访问的web应用,实现的业务逻辑会被整个组织使用,或者是你创建的服务是供其他应用消费的,这种情况可以考虑client/server架构风格。
client/server架构风格,像很多网络风格一样,对于集中化数据存储、备份、管理,或者是你的应用需要支持不同的客户端类型、不同的设备,也比较合适。
但是,典型的2-tier有很大的缺陷,将应用逻辑和应用数据放在一个server,对于系统的扩展性和伸缩性是有负面影响的,它依赖于一个集中的服务器,对于系统的可靠性也有负面的影响。后面降到的3-tier,甚至是n-tier可以解决2-tier中遇到的问题,并且提供额外的好处。
未完待续。。。。。。。。。。。。。。。。。。。。。。。
P23