博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
《面向模式的软件体系结构4-分布式计算的模式语言》读书笔记(1)--- 从混沌到结构(1)...
阅读量:6114 次
发布时间:2019-06-21

本文共 2488 字,大约阅读时间需要 8 分钟。

1.1 Domain Model

      创建一个模型来定义系统的业务职责及其变化范畴,模型元素是对应用领域的有用抽象,其角色和交互反映了该领域的工作流。

      我们可以通过适当的方法来创建Domain Model,比如领域驱动设计和领域分析,还有一些专门表现领域变化的方法,如普遍性/多样性分析和特性建模等。领域相关的模式能进一步支持Domain Model的创建,它们可以提供该领域中公共抽象和工作重复采用的经典解决方案,包括这些解决方案可能的相应变体。

 

1.2 Layers

      不管软件系统不同部分之间有什么样的交互和耦合,我们都希望能对其进行独立的开发和改进,这可能跟系统的大小有关或者是上市时间方面的要求。然而,如果对系统软件架构的不同方面没有一个清晰合理的划分,就很难支持各部分之间的合理交互,进而也无法独立开发。

      因此,要为待开发系统定义多个Layers,每一层都有明确而具体的职责。

      Layers架构根据(子)系统级属性定义了软件功能的横向划分,从而将每组功能都清晰封装起来以便独立改进。具体的划分标准可以通过各种不同的维度来定义,如抽象性、粒度、硬件距离以及变化率。例如,将架构划分为表现层,应用逻辑层和持久化数据层的分层方法是从抽象性维度来划分的;引入业务对象层,其内部实体单元供业务处理层使用,这种分层机制是按粒度来划分;而将系统分为操作系统抽象层,通信协议层和应用功能层的分层机制是按照硬件距离来划分的;采用变化率作为分层标准使得划分后的功能能彼此独立地升级。实现应用中会结合使用多种维度。

      Layers的关键问题是确定“合适”的层数。层数太少可能无法将系统中的不同问题充分地分离开以便独立升级。相反,层数太多又容易导致软件架构过于零碎而没有清晰的视图和范畴,从而非常难以改进。此外,定义的层数越多,端到端的控制需要穿越的中间层就越多,可能会引入性能问题——特别是在层与层之间是远程的时候。

 

1.3 Model - View - Controller

      用户界面总倾向于发生变化,有些必须支持多种外观体验,另一些必须满足特定顾客的偏好。然而,更改用户界面必须不影响应用的核心功能,这部分通常是独立于外观的,变化也较少。

      因此:将交互式应用划分为3个独立部分:处理、输入和输出。采用变化传播机制来确保这3部分的一致性。

      将应用的功能核心封装到Model中,其实现独立于具体的用户界面视感和机制。当Model中的某个方面需要通过应用的用户界面展示出来时,为其引入一个或多个自我完备的View,将各View和一系列独立的Controller关联起来,以接收用户输入并将其转换成对Model或相关View的请求。这样,用户就可以只通过Controller和应用交互。

      将Model,View和Controller组件通过变化传播机制连接起来,当Model的状态发生变化,通知所有View和Controller做相应的改变,以便它们能通过Model的API完成对自身状态及时准确的更新。

      Model - View - Controller的实现方式将不同变化率的应用职责分离开,从而支持它们独立地改进。

 

1.4 Presentation - Abstraction - Control

      人-机界面允许用户通过特定“方式”与应用交互,如窗体、菜单、对话框等。不过,某些应用最好通过不同的界面形式来操作其所提供的不同功能类型。 

      因此,将交互式应用结构化,使其形成由多个解耦的代理构成的层次:一个顶层代理,几个中间层代理和许多底层代理。每个代理负责应用的一个特定功能并为其提供特定用户界面。

      底层代理实现了用户可与之交互的自我完备功能,如管理性任务、出错处理和数据操作。中间层代理协调多个相关的底层代理,例如用于呈现特定数据类型的所有View。顶层代理提供所有代理共享的核心功能,如访问数据库。

      Presentation - Abstraction - Control架构有助于连接多个自我完备的子系统,甚至是连接整个应用,通过专门的人-机交互Model构成内聚的(分布式)系统。这种方式的不足之处在于其复杂性:必须提供多个用户界面,而且当控制流分散在多个子系统中,当需要在相关的用户界面中做出反应或更新View时,必须对某个用户界面触发的行为进行仔细明确地协调。因此,Presentation - Abstraction - Control架构只有在软件系统不采用单一用户界面模式实现时才有实用价值。

 

1.5 Microkernel

      有些应用存在多个版本。每个版本向用户提供不同的功能集,或者是和其他版本在特定方面有所不同,比如用户界面。尽管它们存在差异,应用的所有版本都应当基于一个公共的架构和功能核心。

      因此,通过“即插即用”机制来扩展一个公共且最小的内核来为应用构造不同的版本。

      Microkernel实现应用的所有版本共享的功能,并为集成某个版本特有的功能提供基础设施。内部服务器实现自我完备的特定版本的功能。外部服务器实现特定版本的用户界面或API。要配置应用的特定版本,我们只需要将相应的内部服务器和Microkernel连接起来,并提供合适的外部服务器来访问其功能。因此,应用的所有版本共享一个公共的功能和基础设施内核,但却可以提供不同的功能集和外观体验。

      Microkernel架构确保应用的每个版本可以完全按照其目的进行裁剪。用户或客户端系统只得到其要求的功能和外观体验,而不会为他们所不需要的特性引入任何开销。一般来说,改进某一特定版本以包含新的或不同功能和特性,“只”需要重新配置合适的内部和外部服务器,Microkernel自身不受这种升级的影响,已存在的内部和外部服务器以及应用的其他版本同样不受影响。此外,Microkernel架构降低了开发和维护整个应用系统中所有成员的成本,每个服务,用户界面和API只需要实现一次。 

转载于:https://www.cnblogs.com/pennant/archive/2012/10/30/2742098.html

你可能感兴趣的文章
foundation-sites 6.4.0 rc2 发布,响应前端框架
查看>>
《Adobe InDesign CS6中文版经典教程》—第2课2.5添加文本
查看>>
CoreThink 之 Git 模块 v1.1.2 支持二级域名
查看>>
《Unity 3D人工智能编程》——第1章 人工智能导论
查看>>
《Linux 设备驱动开发详解(第2版)》——1.3 有操作系统时的设备驱动
查看>>
《数据库技术原理与应用教程(第2版)》——1.5 数据管理的变迁
查看>>
《CMOS集成电路后端设计与实战》——1.2 国内集成电路发展现状
查看>>
《拥抱机器人时代——Servo杂志中文精华合集》——第3章 智能连接:欢迎来到物联网的世界...
查看>>
微软 IIS 服务器的市场占有率接近 Apache
查看>>
mongodb授权登录,经过自己修改后的授权登录方式
查看>>
Windows 原生运行 Linux 的技术细节
查看>>
《Abaqus GUI程序开发指南(Python语言)》——2.12 文件的操作
查看>>
Yocto Project 1.4 "Dylan" 发布
查看>>
《游戏视频主播手册》——1.5 游戏视频直播的发展趋势
查看>>
《Adobe Premiere Pro CC经典教程》——第14 课 颜色校正和分级 14.1 开始
查看>>
《从Excel到R 数据分析进阶指南》一2.4 查看空值
查看>>
命令行星期二——第七部分
查看>>
《正则表达式经典实例(第2版)》——2.16 测试一个匹配,但不添加到整体匹配中...
查看>>
《移动App测试的22条军规》——第5章,第5.1节横竖屏幕测试
查看>>
《Servlet、JSP和Spring MVC初学指南》——1.8 GenericServlet
查看>>