使用Micrisoft.net设计方案 第二章组织模式

模式不仅依赖于它所包含的更小模式,同时也依赖包含它的更大的模式。它是描述复杂软件的系统方法。

本章的目标是让我们了解以下问题:

1、如何标识模式与模式的关系

2、如何把模式组织成模式集合

3、如何采用不同抽象级别去划分模式

4、如何使用模式解决系统中涉及到的各个方面

5、如何用模式描述解决方案

模式与模式

模式能够描述关系。采用面向对象设计的软件都是有类组成,如果抛开类与类间的关系,模式将什么问题也不能解决。模式把一组类组织成便于管理的模式集合。

我们设计系统时,会发现使用的模式比使用的类都多,那么如何理解模式的作用呢?关键问题是理解项目间的关系。模式与模式的关系比较密切,因此在组织模式是按照关系去组织。

模式集群

我们很容易从一种模式转换到另一种模式上,但我们还不知道如何在系统中使用这些模式,或者应该学习哪些模式。因此这就引起了另一个概念,那就是模式集群。模式集群是涉及特定主题的一组模式的集合。通过模式集群,我们能了解到模式与模式是如何组合,是如何去构建企业级解决方案。模式集群分为5大类,分别是:

集群类型     解决的问题

Web表示     创建动态网站

分布式系统    解决在不同计算机或进程间通信的问题

部署         解决分层应用程序部署到分级硬件上

性能和安全    为某些重要的特定操作提供可靠的保障机制

服务          使用外部服务和对外提供服务

不同级别的抽象

将模式划分为群集方便管理,如构建Web前端只要从Web群集入手就可以。但不同人在项目的不同阶段,感兴趣的方向也不同。如开发人员喜欢Page Control模式,而体系设计人员喜欢分层(Layer)模式。因此我们从抽象级别上对模式进行分类,便于不同人查找自己感兴趣的方向。传统上,使用抽象级别把模式划分为3类,分别是:

体系结构模式:主要描述软件的基础结构,会提前设定子系统或组建间的关系、准则、行为以及职能。例如层(Layer)模式

设计模式:优化子系统或组建间的关系。主要解决在上下中反复出现的问题。例如MVC设计模式、单件(Singleton)模式

实现模式:特定于某种语言或平台的设计模式,如Microsoft.Net的Page Control模式

视点

代码不能全部反应解决方案中的各个方面,比如硬件、网络和部署等方面,因此需要有与设计模式相对应的名称,因此引入视点的概念。视点不描述层次结构,而只是提供看待事情的不同方法。从软件体系上一般分为四个视点,分别是:

1、  数据库视点:是软件的持久层,用于存储数据

2、  应用程序视点:是解决方法的可执行部分,包括域模型、类、程序集、进程等

3、  基础结构视点

4、  部署视点

模式框架

作为参考点和导航助手随每个单独的模式提供描述,同时把各种有意义的子类别组织模式的集合。模式框架有如下特定:

1、  联机事物处理:管理事务处理的数据库子系统,为业务处理提供原子操作

2、  面向对象

3、  分层应用程序

4、  分级分布系统

使用模式描述解决方案

受到约束的模式框架及其所包含的模式提供了足够多的数据点,以便开始使用模式来描述整个解决方案。实际上,第 1 章中的报价示例可以用模式术语来描述。回忆一下,其要求中指定了一个基于 Web 的报价应用程序。描述解决方案体系结构的用户可能会做如下表述:

首先让我们在抽象的体系结构级别看一下这个报价应用程序。从应用程序视点,报价应用程序是面向对象的应用程序,它在逻辑上构造成Three-Layered Services Application. (三层服务应用程序)。从数据库视点,应用程序是基于 OLTP 处理模型的。从基础结构视点,硬件和网络体系结构是基于 Four-Tiered Distribution(四级分布)的,这要求 Web 服务器功能和应用程序服务器功能具有不同的物理级。最后,从部署视点,小组已经基于复杂的 Web 应用程序创建了一个Deployment Plan (部署规划),以便将组件映射到服务器。

这从所有这四个视点向熟悉参考模式的读者简述了解决方案的体系结构。继续向下移动一个抽象级别,可能会看到作者这样描述系统设计:

从应用程序视点,让我们分别考虑 Three-Layered Services Application(三层服务应用程序)的每一层。

表示层是围绕基于Model-View-Controller (MVC) 的 Web 表示框架构造的。 尽管 MVC 将业务层和表示逻辑层分开了,但是每一页都包含大量公共逻辑。为了消除这种冗余,我们使用 Page Controller 来呈现公共头和尾注信息并为用户设置友好的显示名称。

业务层包含客户、报价、订单、系列物品和库存域对象。由于开发速度是一个重要要求,因此这些域对象是使用 Table Module(表模块)实现的。复杂的 Web 应用程序 Deployment Model (部署模型)要求 Web 级和应用程序级分开。因此,这两级通过一个代理程序进行通信。业务实体充当 Data Transfer Objects,用于封装在这两级之间传送的信息。

数据层使用 Data Table Gateway来访问 OLTP 数据库子系统,并使用大量数据访问组件来支持域对象的持久性要求。

从基础结构视点:为了满足业务的操作要求,我们通过添加Load-Balanced Cluster (负载平衡群集)和Failover Cluster(故障转移群集)来基于基本的 Four-Tiered Distribution(四级分布)模型构建。为了满足高级别并发用户的要求,我们在 Web 级中添加了负载平衡功能。为了满足可用性要求,我们在数据库级中添加了群集。

可以继续描述位于同一抽象级别的数据和部署视点。为此,再向下移动一个抽象级别,可能会看到作者这样描述解决方案的实现:

让我们从应用程序视点来查看解决方案。解决方案是使用 Microsoft .NET 技术构建的。表示层基于 ASP.NET 中内置的 Web 表示框架。ASP.NET 使用内置的代码隐藏页功能来简化 Model-View-Controller 的实现。我们使用 ASP.NET 中内置的 Page Controller 机制来实现表示逻辑。业务层中的域对象是 .NET 托管对象。因为表示层和业务层部署在不同的级上,所以我们使用服务器激活对象通过 .NET Remoting 实现 Broker。最后,数据层基于 .NET Framework 中的 ADO.NET 类来提供数据库访问。Table Modules(表模块)和业务实体是使用 ADO.NET 的数据集组件构造的。数据访问组件的其余部分由 Microsoft Application Blocks for .NET 构建块提供。

从基础结构视点:Microsoft SQL Server? 运行在故障转移群集中,用于 OLTP 数据库子系统中。Microsoft 网络负载平衡群集在 Web 服务器之间提供负载平衡。

所有这些会话都经常参考各种模式。最初,这可能有点让人望而却步,但当您了解所使用的模式后,就会认识到即使是一个简短的描述也会让您详细了解系统是如何工作的。请注意,您不必翻阅大量文档或逐步执行无穷无尽的代码行,即可对此有所了解。设想一下在不使用模式的情况下描述解决方案而需涉及到的工作,就不难知道模式所带来的沟通好处。

时间: 2024-10-24 12:08:05

使用Micrisoft.net设计方案 第二章组织模式的相关文章

【PMP】Head First PMP 学习笔记 第二章 组织、约束和项目

第二章 组织.约束和项目 如果你希望正确地完成工作--最好有一个正确的组织. 项目联络人 项目联络人(project expediter),只是记录项目的进展情况,但是没有权利对项目做任何决策.他可能参与项目,但是并不管理任何事务. 不同类型的组织项目 职能型 项目经理的决策需要和职能经理确认 项目经理作为职能经理的助手,协助职能经理完成工作 项目经理大部分时间都用于行政任务,通常只有部分时间投入到项目管理中 在职能型组织中往往会有项目联络人 矩阵型 弱矩阵型 项目经理有一些经理有一些权利,但是

使用Micrisoft.net设计方案 第一章 企业解决方案中构建设计模式

第一章企业解决方案中构建设计模式 我们知道的系统总是由简单到复杂,而不是直接去设计一个复杂系统.如果直接去设计一个复杂系统,结果最终会导致失败.在设计系统的时候,先设计一个能够正常工作的系统,然后在此基础上逐步扩展.而一个好的企业设计方案就是由一些短小.简单.可靠.有效的并能够解决问题的机制组成.由这些短小精悍的机制进行组合,形成复杂的系统.而这些机制就设计模式.设计模式就是能够记录这些机制的一些描述. 企业级业务解决方案一般是复杂.性能要好.可扩展性好以及容易维护和可伸缩性强,而设计模式可以帮

第二章 策略模式

策略模式封装了变化. 标准策略模式: /** * Created by hero on 16-3-29. */ public abstract class CashSuper { public abstract double acceptCash(double money); } /** * Created by hero on 16-3-29. */ public class CashNormal extends CashSuper{ @Override public double accep

《大话设计模式》 --- 第二章 策略模式

面向对象的编程,并不是类越多越好,类的划分是为了封装,但分类的基础是抽象,具有相同属性和功能的对象的抽象集合才是类. 策略模式:定义了算法,分别封装,让它们之间可以互相替换,此模式让算法的变化,不会影响到使用算法的客户. 策略模式是一种定义一系列算法的方法,从概念上看,所有这些算法完成的都是相同的工作,只是实现不同,他可以以相同的方式调用所有的算法,减少了各种算法类与使用算法类之间的耦合. 策略模式中普通算法的策略类为环境定义了一系列可供重用的算法或行为.继承有助于析出出这些算法中的公共功能.

大话设计模式java版本 第二章 策略模式

package strategy; //嵌入策略 public class CashContext { private Cash cs; public CashContext(Cash cs) { super(); this.cs = cs; } public double getResult(double money){ return cs.acceptCash(money); } } package strategy; public interface Cash { public abstr

软件开发工具 第二章 软件开发过程及其组织

第二章 软件开发过程及其组织 为了对付“软件危机”,先后提出了结构化程序设计方法.软件工程的方法.面向对象的方法.即插即用的程序设计方法.面向互联网平台和开源软件的程序设计. 1.软件开发的基本问题及解决办法. 对程序员来说,做好软件的关键是做好两个转换: 第一个:从用户对软件的理解到程序员对软件功能的理解的转换 第二个:从程序员的理解到程序的实现 为保证第一个转换:尽可能利用标准化的方法编写程序设计任务书,用明确的语言或图形.表格,把程序要处理的信息.格式.来源.去向.存储.处理等清楚地表达处

Android艺术开发探索——第二章:IPC机制(下)

Android艺术开发探索--第二章:IPC机制(下) 我们继续来讲IPC机制,在本篇中你将会学习到 ContentProvider Socket Binder连接池 一.使用ContentProvider ContentProvider是Android中提供的专门用来不同应用之间数据共享的方式,从这一点来看,他天生就是适合进程间通信,和Messenger一样,ContentProvider的底层实现同样也是Binder,由此可见,Binder在Android系统中是何等的重要,虽然Conten

高项3.7日第一次课,第一章信息化基础知识与第二章信息系统服务管理梳理

第一章 信息化的基础知识 1.国家信息化体系要素: 主要包括6要素,信息技术应用(龙头).信息资源(关键).信息网络(必要手段).信息技术产业(基础).信息化人才(成功之本).信息化法规政策和规范(保障). 2.电子政务: 电子政务建设的指导原则: (1)统一规划,加强领导. (2)需求主导,突出重点. (3)统一规划,拉动产业. (4)统一标准,保障安全. 主要任务: (1)电子政务网络由政务内网和政务外网构成,两网之间物理隔离,政务外网与互联网之间逻辑隔离.政务内网主要是副省级以上政务部门的

Pro ASP.NET Core MVC 第6版 第二章(前半章)

目录 第二章 第一个MVC 应用程序 学习一个软件开发框架的最好方法是跳进他的内部并使用它.在本章,你将用ASP.NET Core MVC创建一个简单的数据登录应用.我将它一步一步地展示,以便你能看清楚怎样构建一个MVC 应用程序.为了让事情简单,我跳过了一些技术细节,但是不要担心,如果你是一个MVC的新手,你将会发现许多东西足够提起你的兴趣.因为我用的东西有些没做解释,所以我提供了一些参考以便你可以看到所有的细节的东西. 安装Visual Studio 要想根据本书实践的话,必须安装Visua