`

NET 应用架构指导 V2 学习笔记(四) 软件架构的模式和风格

阅读更多

  Layered Architecture Style分层架构风格

  分层的架构模式集中在将应用的不同功能分组,进而成为不同的层,就好像栈一样,竖方向一层在一层上面。每一层的功能和一个常用的角色或者职责相关。层之间暴露通信接口,松散耦合。将你的应用分层可以很好的分离关注点,换句话说,支持灵活性和易维护性。

  分层的架构风格被描述为倒金字塔行的复用,每一层都集中了一些职责,对它的直接下一层都是抽象的。在严格的分层中,每一层的组件只能和同层的组件进行通信,或者是和直接下一层进行通信。松散一点的分层中,不仅运行同层之间的通信,还允许任何层之间的通信。

  应用的层次可能会部署在同一个物理机器上,也可以分布在不同的物理机器上。每一层的组件和另外一层的组件使用定义好的接口进行通信。例如:一个典型的web应用设计由表现层、业务层、数据访问层。

  设计分层架构的常用原则:

  •   抽象性,分层的架构将系统抽象为角色和职责在不同的层次,以及他们之间的关系。
  •   封装性,
  •   清晰的定义层之间的功能,分离在每一层的功能定义是清晰的,处于上层的表现层向下一层发出命令,例如业务层或者是数据访问层,需要对这些事件作出响应,允许数据在上下层之间流动。
  •   高内聚,为每一层定义良好的职责边界,确保每一层的功能直接和本层的主要职责相关,将会最大化内聚性。
  •   可复用,底层对于高层没有依赖,要允许底层可以在各种方案中使用。
  •   松散耦合,层之间的通信建立在抽象和事件的基础上,在层之间提供松散的耦合。

  分层的例子包括Line-of-Business(LOB),例如帐户和客户关系管理;企业级的web应用;企业级的桌面应用;智能客户端应用,集中处理业务逻辑。

  很多设计模式都支持分层架构,例如:将表现层分离的模式,包含了很多处理用户的UI请求的方法。具有下面的好处:

  •   分离关注点,例如:MVC有三个角色,Model、View、Controller。Model代表数据(可能是领域对象,也可能是业务对象);View代表UI;Controller处理请求,操作数据model,实现其他功能。
  •   事件为基础通知机制,观察者模式经常被用来在数据Model发生改变的情况下,通知View。
  •   委托事件处理,controller处理来自UI的view触发的事件。

  分层架构的主要好处:

  抽象性。允许层在抽象级别上进行改变,可以减少或者增加抽象的级别。

  分离。允许在每一层升级技术,减少风险,最小化对系统的影响。

  可以控制。分离关注点帮助识别依赖,将代码组织到更加可以管理部分。

  性能。分布在不同的物理层,可以提高可伸缩性、容错性和性能。

  重用性。分离职责提升了可重用性。例如,在MVC中,controller可以在其他兼容的view中复用。

  可测试性。在层之间具有良好定义,增加了可测试性。分层之后,你可以为不同的层建立Mock对象,进行单元测试。

  Message Bus Architecture Style消息总线架构风格

  消息总线架构描述了一种软件系统可以从一个或者多个通信通道获取数据和发送数据的原则,因此应用可以在不需要知道细节的情况下进行交互。这个风格设计的应用之间的交互是通过在总线上传递消息(通常是异步)。消息总线提供了下面的处理能力:

  •   以消息为中心的通信。
  •   复杂的逻辑处理。
  •   对处理逻辑的修改。
  •   与不同的环境进行整合。因为使用以消息为基础的通信,如果大家使用一样的通信标准,应用可以在和不同的平台进行通信,例如:.NET和java。

  消息总线的好处:

  可扩展性。

  减少复杂性,因为每个应用只需要知道如何和总线进行通信就可以了。

  灵活性。

  松散耦合。

  伸缩性。同一个应用的多个实例都可以附加到总线上,可以在同时处理多个请求。

  简化应用。尽管消息总线实现了添加复杂的基础架构,但是每个应用只需要支持和总线的连接就可以了,而不用支持应用之间的连接。

  

  

  

  未完待续。。。。。。。。。。。。。。。。。。。。。。。

  P30

分享到:
评论

相关推荐

    AADL 学习笔记_V2_aadl_

    在“AADL学习笔记.docx”文档中,读者可以期待找到对这些概念的详细解释、实例演示以及如何将它们应用到实际项目中的指导。这份笔记对于正在学习AADL或准备采用AADL进行系统设计的人来说是一份宝贵的资源。

    SNMP学习笔记

    ### SNMP学习笔记 #### SNMP架构概述 简单网络管理协议(Simple Network Management Protocol,简称SNMP)是一种用于收集和组织有关网络设备的信息,并更改该设备配置的互联网标准协议。SNMP在许多网络管理系统的...

    PTN原理学习笔记

    本文档的内容摘录自中兴资料《Unitrans ZXCTN 9008(V2[1].08.31)分组传送产品产品描述.pdf》中。 2.1. PTN的定义 分组传送网(PTN)是指这样一种传送网络架构和具体技术:  在IP业务和底层光传输媒质之间设置了一...

    51单片机RFID射频IC卡板子资料V2

    51单片机是微控制器的一种,因其8位CPU和相对简单的架构而广泛应用于各种嵌入式系统中,包括RFID系统。这个资料包的亮点在于它结合了51单片机和RFID技术,使用户能够实现射频识别功能。 资料包中包含的元素如下: ...

    车联网学习笔记.pptx

    介绍车联网相关内容,包括自动驾驶感知、决策相关技术、C-V2X相关技术、架构、厂家,适合快速了解车路协同领域

    redis学习笔记

    ### Redis 学习笔记知识点梳理 #### 一、Redis 关机命令及检查启动状态方法 在使用 Redis 过程中,我们可能会遇到需要重启或关闭 Redis 的情况。以下是几种常用的 Redis 关机命令: 1. **halt**: 立刻关机。 2. *...

    Linux平台开发资源.rar_Linux平台开发资源链接汇总_V2J_linux 平台

    在IT行业中,Linux平台开发是一项至关重要的技能,尤其对于嵌入式系统和服务器端软件的构建。本资源压缩包“Linux平台开发资源.rar”提供了一个综合性的学习和工作辅助资料库,特别适合那些想要深入理解或者提升...

    20个精典微信小程序源码

    9. **步步高字典**:可能是一个基于步步高学习设备的词典应用,涉及单词查询、发音和例句等功能,对于学习教育类小程序的开发有指导意义。 10. **Gank**:Gank.IO是一个开源技术分享平台,此小程序可能展示了如何...

    7.2024年大唐杯学习知识点_思维导图.zip

    例如,5G在智能交通中的应用,包括车联网(V2X)通信,可以实现车与车、车与路的实时交互,提高交通安全和效率。在智能制造中,5G低延迟特性有助于实现远程操控和自动化生产。 此外,5G网络的安全性也是重要一环。5G...

    分布式系统原理与范型 V2 (2008)

    这种设计模式允许扩展性、容错性和高性能。 2. **分布式系统的核心特性**: - **透明性**:用户应感觉不到系统的分布性,如位置透明性、复制透明性等。 - **并发控制**:处理多个节点同时操作同一资源的情况。 -...

    红茶三杯技术文档.rar

    红茶三杯技术,源于网络技术领域中的路由协议学习,是一种形象化的术语,通常用来指代Cisco IOS中的三种基本路由协议:静态路由、RIP(Routing Information Protocol)和OSPF(Open Shortest Path First)。...

    展讯的相关资料

    "SC6600L软件平台介绍.pdf"则专门介绍了SC6600L这款芯片的软件平台,包括其架构、功能特性、软件开发工具和流程等,对于理解这款芯片的性能和优化代码有极大的帮助。 "Mocor平台MMI开发指南_V1[1].0.0.pdf"可能是一...

    基于MSP432的智能小车代码

    "TI-RSLK基础版资料v2"可能指的是TI推出的Robot Systems Learning Kit(RSLK)的基础版本的第二版教程资料,这个套件通常包含一系列实验和教学资源,帮助学习者了解如何利用MSP432来构建和编程智能小车。 在这些...

    stm32f4编程资料

    这个“stm32f4编程资料”压缩包显然包含了与STM32F4开发相关的多个资源,包括固件库使用、学习笔记和简介等内容,为开发者提供了深入理解并应用STM32F4处理器的基础。 1. **STM32F4固件库使用**:STM32F4固件库是由...

    最全STM8例程+工具

    压缩包可能还包括用户手册、参考手册、应用笔记和开发板文档,这些文档是理解STM8特性和应用的关键。开发者可以从中学习如何配置寄存器、如何编写中断服务程序、如何优化代码等。 5. 应用场景: STM8适用于各种领域...

    STM32教程总结学习资源(2)

    这是一份针对具体型号STM32F103C8T6的学习笔记,包括了硬件连接、初始化、外设使用等实战经验,对于新手上手STM32开发板非常实用。 7. **STM32选型指南.pdf**: 选型指南提供了选择STM32微控制器的依据和建议,...

    Hawkboard Using Code Composer Studio V4 & XDS100V2 Emulator

    本应用笔记旨在指导初学者如何在Hawkboard平台上利用Code Composer Studio V4(CCS)及XDS100V2仿真器构建并运行一个简单的基于裸机的程序。此项目特别适用于那些希望了解如何在ARM架构处理器上编写基本代码的人群。...

Global site tag (gtag.js) - Google Analytics