`

NET 应用架构指导 V2 学习笔记(十七) 组件设计指导

阅读更多

  组件提供了一种将功能划分的方式,可以分开安装和部署。

  组件设计的常用原则

  在设计组件的时候,可以参考下面的原则:

  •   对于组件中的类,应该遵守S.O.L.I.D的类设计原则。这方面大家可以参考:面向对象设计的SOLID原则。简单的说,S.O.L.I.D原则就是:
    •   Single responsibility principal:单一职责原则,一个类应该只有一个职责。
    •   Open/Closed principal:开放封闭原则,类应该支持扩展,而不是去修改它。
    •   Liskov substitution principal:里氏替换原则,子类应该可以被基类替换。
    •   Interface segregation principal:接口分离原则,不同的客户端,不同的需求,应该暴露不同的接口。
    •   Dependency inversion principal:依赖倒置原则,对类的依赖应该被抽象代替,抽象不应该依赖细节,细节应该依赖于抽象。
  •   设计的组件应该是高内聚的。不要添加无关的的功能,或者是混合其他的功能,使得类的负担过重。例如:在业务组件中要避免将数据访问和业务逻辑混合在一起。只有当功能内聚,你创建的程序集就可以包含多个组件,就可以将组件安装在适当的应用层中,甚至是部署在独立的物理层。
  •   一个组件不应该依赖于其他组件的内部实现。每个组件和对象应该调用另外一个对象和组件的方法,方法包括如何处理请求,如果需要的话,应该会路由到适当的子组件或者是其他组件。
  •   理解组件之间是如何通信的。你一定要考虑通信是否跨越物理边界,还是跨越进程边界,还是所有的组件都运行在同一个进程。
  •   保持跨层关注的代码从应用逻辑中抽象出来。跨曾关注的代码,例如:安全,通信,操作管理,日志和性能仪表盘。将这些代码混合在组件中,会导致系统难以维护和扩展。
  •   应用组件为基础的架构风格的关键原则。包括可重用性,可替代性,扩展性,封装性,独立性,不和特定上下文相关。

  分层组件分布

  应用的每一层都有很多实现本层功能的组件。这些组件应该是内聚的,松散耦合的,简化重用性和维护性。下图显示了每一层的组件类型。

  

 

  表现层组件

  表现层组件实现的功能需要允许用户和应用进行交互。在设计的时候可以参考下面的原则:

  •   用户界面组件。应用的用户界面被封装在用户界面组件中。他们是应用的可视化元素,给用户显示信息,并且接收用户的输入。
  •   表现层逻辑组件。表现逻辑是一些定义逻辑行为的代码,以及独立于用户界面的代码。他们通常负责组织从业务逻辑层来的数据,将他们组织为用户界面可以消费的格式,方便数据的显示。表现层组件又可以分为两个部分:
    •   Presenter,Controller,Presenter Model,ViewModel组件。这些组件封装表现层的表现逻辑。最大化支持重用和可测试性,这些组件和特定的用户界面、元素、控件没有关系。
    •   表现层的实体组件。这些组件封装了表现层的数据,使得数据很容易被用户界面消费。例如:数据类型的转换。在某些情况,可能是从业务逻辑层来的实体直接被消费,也可能会转换成用户界面可以消费的实体。

  服务层组件

  你的应用可能暴露出服务层,供客户端或者是其他系统交互。服务层提供客户端和其他系统一种访问业务逻辑层的方式,通过消息使用系统的功能,通常包括下面的内容:

  •   服务接口。服务层暴露服务接口,你可以将服务接口看做是暴露应用业务逻辑层的外观模式。
  •   消息类型。在和服务层进行数据交互的时候,数据结构背包装在消息中。

  业务层组件

  业务逻辑层组件实现了系统的核心功能,封装了业务逻辑。通常包括下面类型的组件:

  •   应用外观。这个可选的组件提供一个简化了的业务逻辑组件,通常将多个业务操作组合成一个,使得业务逻辑更容易使用。减少依赖性,因为外部调用者不知道业务组件的细节,及他们之间的关系。
  •   业务逻辑组件。通常包括:
    •   业务流程组件。
    •   业务实体组件。

  数据访问层组件

  数据访问层组件提供了数据访问,向其他网络系统暴露数据,通常包括下面的部分:

  •   数据访问组件。组件抽象了数据访问的逻辑。工具和帮助组件通常封装在一个独立的框架中,方便在其他应用中使用。
  •   服务代理。当业务逻辑一定要使用外部服务提供的数据,你可能需要一个管理和外部通信的代理。

  跨层关注的组件

  很多功能需要在很多层实现。例如:

  •   实现安全的组件。包括用户验证,授权,验证。
  •   实现操作管理的组件。异常处理策略,日志,性能计数器,配置,跟踪。
  •   实现通信的组件。

  相关的设计模式

  

分类 相关模式
Business Component
  • Application Facade
  • Chain of Responsibility
  • Command 
Business Entity
  • Domain Model
  • Entity Translator
  • Table Model 
Presentation Entity
  • Entity Translator
Presentation Logic
  • Application Controller
  • Model-View-Controller
  • Model-View-ViewModel
  • Model-View-Presenter
  • Passive View
  • Presentation Model
  • Supervising Presenter
Service Interface
  • Facade
  • Remote Facade
  • Service Interface
Workflow
  • Data-Driven Workflow
  • Human workflow
  • Sequential workflow
  • State-Driven workflow

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

分享到:
评论

相关推荐

    牛【SystemVerilog】路科验证V2学习笔记(全600页)

    "牛【SystemVerilog】路科验证V2学习笔记(全600页)"是一份详尽的学习资料,涵盖了路科验证方法论的第二版(V2)在SystemVerilog中的应用。 笔记内容可能包含了以下几个关键知识点: 1. **基础语法**:...

    【SystemVerilog】路科验证V2学习笔记(全600页).pdf

    SystemVerilog的听课学习笔记,包括讲义截取、知识点记录、注意事项等细节的标注。 目录如下: 第一章 SV环境构建常识 1 1.1 数据类型 1 四、二值逻辑 4 定宽数组 9 foreach 13 动态数组 16 队列 19 ...

    【SystemVerilog】路科验证V2学习笔记(全600页)

    SystemVerilog的听课学习笔记,包括讲义截取、知识点记录、注意事项等细节的标注。 目录如下: 第一章 SV环境构建常识 1 1.1 数据类型 1 四、二值逻辑 4 定宽数组 9 foreach 13 动态数组 16 队列 19 关联数组 21 ...

    03.AxureUX中后台管理信息系统通用原型设计方案 v2(设计组件).rp

    03.AxureUX中后台管理信息系统通用原型设计方案 v2(设计组件).rp 03.AxureUX中后台管理信息系统通用原型设计方案 v2(设计组件).rp 03.AxureUX中后台管理信息系统通用原型设计方案 v2(设计组件).rp 03.AxureUX中...

    AADL 学习笔记_V2_aadl_

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

    大型金融数据中心网络架构设计V2.pptx

    "大型金融数据中心网络架构设计V2.pptx" 本资源摘要信息来自一个关于大型金融数据中心网络架构设计的PPT文件,内容涵盖了金融数据中心网络架构设计的演进路线、金融网络应用场景的划分、数据中心应用服务域、双活...

    《软件架构设计文档》ADMEMS模板v2.docx

    软件架构设计文档ADMEMS模板v2是软件开发过程中的重要文档,旨在描述软件系统的架构设计,提供软件系统的总体架构、组件之间的关系、数据流向、接口定义等信息,以便于项目团队和stakeholders之间的沟通和协作。

    SystemVerilog路科验证V2学习笔记

    SystemVerilog路科验证V2是一个SystemVerilog的听课学习笔记,包括讲义截取、知识点记录、注意事项等细节的标注,可快速获取自已需要的知识,喜欢的平台可下载试试! 介绍设计描述和验证语言SystemVerilog的基本...

    一种结合车联网和C-V2X的终端设备系统架构设计.pdf

    结合车联网和C-V2X技术的终端设备系统架构设计,旨在通过高效的通信模块和先进的信息处理能力,推动智能交通系统的发展,实现交通事故的减少和交通效率的提升,最终为驾驶者提供一个更安全、更便捷的驾驶体验。...

    云平台系统架构设计文档v2.docx

    云平台系统架构设计文档v2.docx云平台系统架构设计文档v2.docx云平台系统架构设计文档v2.docx云平台系统架构设计文档v2.docx云平台系统架构设计文档v2.docx云平台系统架构设计文档v2.docx云平台系统架构设计文档v2....

    Application Architecture Guide v2

    《应用架构指南v2》是微软发布的一份深入探讨应用架构的重要文档,旨在为软件开发者、架构师和项目管理者提供一套全面的指导原则和最佳实践。这份指南详细阐述了如何设计、构建和优化应用程序,以确保其高效、可扩展...

    【SystemVerilog】路科验证V2学习笔记.7z

    本文将深入探讨“路科验证V2”学习笔记中的关键知识点,主要基于提供的"SV部分讲义"。 一、SystemVerilog基础 1. **数据类型**:SystemVerilog提供了丰富的数据类型,包括位(bit)、逻辑(logic)、整型(int)、...

    COM组件用例和测试代码V2

    4. **接口设计**:学习如何设计有效的COM接口,使其能够满足多种应用场景。 5. **测试策略**:掌握如何编写测试代码来验证COM组件的功能,包括单元测试和集成测试。 6. **注册与反注册**:理解如何在系统中注册和反...

    云平台系统架构设计文档v2.pdf

    云平台系统架构设计文档v2.pdf云平台系统架构设计文档v2.pdf云平台系统架构设计文档v2.pdf云平台系统架构设计文档v2.pdf云平台系统架构设计文档v2.pdf云平台系统架构设计文档v2.pdf云平台系统架构设计文档v2.pdf云...

    王晓波-从微服务到Serverless+架构应用与实践V2-32页.pdf

    微服务和Serverless是当前云计算架构设计中非常热门的概念,它们在解决传统单体应用所面临的可伸缩性、运维复杂性和快速迭代等问题上表现出了明显优势。在王晓波所著的《从微服务到Serverless+架构应用与实践》这份...

    【论文】旷视科技提出的新型轻量架构ShuffleNet V2

    旷视科技提出的ShuffleNet V2是一种针对移动端深度学习应用优化的卷积神经网络架构。这种新型架构的提出,旨在解决移动端深度学习领域中计算资源受限和对速度效率需求较高的问题。ShuffleNet V2的设计思想来源于对于...

    kinect V2 学习资料

    从内容中可以看出,本文档主要是针对初学者设计,它介绍了如何从零开始搭建一个用于Windows 8.1平台的Kinect V2应用程序。文中提到了如何在Visual Studio 2013中创建一个项目,并且确保了使用的是适合Windows Store...

    LSD-TEST430F5438-01_V2_1学习板实验指导书

    通过以上知识点的梳理,可以看出LSD-TEST430F5438-01_V2_1学习板实验指导书覆盖了从硬件资源介绍到软件编程实践的全面内容,旨在帮助学习者深入理解MSP430F5438单片机的各项特性和实际应用,是一份非常实用的学习...

    中兴物联ME3760_V2公网模块硬件用户指导手册_V1.6.pdf

    硬件用户指导手册中还详细说明了ME3760_V2模块的机械特性,这涉及到模块的外形尺寸和天线接口,是硬件设计阶段必须要考虑的实际物理参数。对于天线接口的描述,包括不同频段的具体频率信息,保证了模块在不同的应用...

    ADMEMS方法推荐《软件架构设计文档》模板

    他的著作《一线架构师实践指南》和《软件架构设计》在业内广受好评,为许多IT从业者提供了宝贵的指导。 ADMEMS方法是温昱对软件架构设计的独特贡献,它代表了六大核心要素,旨在帮助架构师和开发团队系统地进行架构...

Global site tag (gtag.js) - Google Analytics