Layered Architecture Style分层架构风格
分层的架构模式集中在将应用的不同功能分组,进而成为不同的层,就好像栈一样,竖方向一层在一层上面。每一层的功能和一个常用的角色或者职责相关。层之间暴露通信接口,松散耦合。将你的应用分层可以很好的分离关注点,换句话说,支持灵活性和易维护性。
分层的架构风格被描述为倒金字塔行的复用,每一层都集中了一些职责,对它的直接下一层都是抽象的。在严格的分层中,每一层的组件只能和同层的组件进行通信,或者是和直接下一层进行通信。松散一点的分层中,不仅运行同层之间的通信,还允许任何层之间的通信。
应用的层次可能会部署在同一个物理机器上,也可以分布在不同的物理机器上。每一层的组件和另外一层的组件使用定义好的接口进行通信。例如:一个典型的web应用设计由表现层、业务层、数据访问层。
设计分层架构的常用原则:
分层的例子包括Line-of-Business(LOB),例如帐户和客户关系管理;企业级的web应用;企业级的桌面应用;智能客户端应用,集中处理业务逻辑。
很多设计模式都支持分层架构,例如:将表现层分离的模式,包含了很多处理用户的UI请求的方法。具有下面的好处:
分层架构的主要好处:
抽象性。允许层在抽象级别上进行改变,可以减少或者增加抽象的级别。
分离。允许在每一层升级技术,减少风险,最小化对系统的影响。
可以控制。分离关注点帮助识别依赖,将代码组织到更加可以管理部分。
性能。分布在不同的物理层,可以提高可伸缩性、容错性和性能。
重用性。分离职责提升了可重用性。例如,在MVC中,controller可以在其他兼容的view中复用。
可测试性。在层之间具有良好定义,增加了可测试性。分层之后,你可以为不同的层建立Mock对象,进行单元测试。
Message Bus Architecture Style消息总线架构风格
消息总线架构描述了一种软件系统可以从一个或者多个通信通道获取数据和发送数据的原则,因此应用可以在不需要知道细节的情况下进行交互。这个风格设计的应用之间的交互是通过在总线上传递消息(通常是异步)。消息总线提供了下面的处理能力:
消息总线的好处:
可扩展性。
减少复杂性,因为每个应用只需要知道如何和总线进行通信就可以了。
灵活性。
松散耦合。
伸缩性。同一个应用的多个实例都可以附加到总线上,可以在同时处理多个请求。
简化应用。尽管消息总线实现了添加复杂的基础架构,但是每个应用只需要支持和总线的连接就可以了,而不用支持应用之间的连接。