http://msdn.microsoft.com/en-us/library/hh917312.aspx
附录G:模式与实践模式目录
对于本指南中所涉及的主题的详细信息,请参阅本指南的内容 。
内容
WPF和Silverlight的复合应用程序指南
类别 | 模式 |
---|---|
模块化 | 服务定位器 。 创建一个服务定位器包含引用的服务,封装逻辑以找到他们。 在你的类,使用服务定位器获取服务实例。 请参阅“ 服务定位器 ”http://msdn.microsoft.com/en-us/library/dd458903.aspx 。 |
可测性 | 依赖注入 。 不要明确在你的类实例化的依赖。 相反,声明表达在类定义的依赖。 使用生成器对象,以获得有效的实例对象的依赖性,并把它们传递给你的对象,对象的创建和/或初始化期间。 请参阅“ 依赖注入 ” http://msdn.microsoft.com/en-us/library/dd458879.aspx 。 控制反转 。 委派选择一个具体的实现类的依赖外部组件或源类型的功能。 请参阅“ 控制反转 ” http://msdn.microsoft.com/en-us/library/dd458907.aspx 。 分居演示 。 从业务逻辑中分离显示逻辑分成不同的文物。 分居演示模式可以实现在多种方式,如监督简报或演示模型等http://msdn.microsoft.com/en-us/library/dd458859.aspx的 “ 分居演示 ” 。 演示模型 。 分开命名,分别为不同类别,视图和演示模型的可视化显示和用户界面(UI)的状态和行为的责任。 视图类管理上的控件的UI,UI特定的状态和行为模式上的一个门面,作为演示模型类,封装访问模型,并提供一个公共接口,很容易消耗从视图(例如,使用数据绑定)。 请参阅“ 演示模式 ” http://msdn.microsoft.com/en-us/library/dd458863.aspx 。 监督主讲人 (或,监督控制器)。 分开命名,分别为不同类别的观点和演示的可视化显示和事件处理行为的责任。 视图类主持人类管理控件在用户界面上,转发用户事件。 演示者包含的逻辑响应事件,更新模型(该应用程序的业务逻辑和数据),并反过来,操作状态的视图。 请参阅http://msdn.microsoft.com/en-us/library/dd490821.aspx的 “ 监督简报 ” 。 |
数据的运动模式
类别 | 模式 |
---|---|
数据的运动模式 | 数据复制 。 创建一个复制集和复制链接在两个位置之间移动数据。 一个高层次的模式,介绍更详细的数据在此表中描述的运动模式的一般过程。请参阅“ 数据复制 ” http://msdn.microsoft.com/en-us/library/ms978671.aspx 。 主法师复制 。 复制数据从源到目标,自上次复制(由于相同的数据源和目标的变化)所发生的任何更新冲突检测和解决。 该解决方案由两个方向相反的源和目标之间复制链接。 这两种复制链接发送在两个方向上设置相同的复制。 这样一对被称为复制链接相关链接 。见http://msdn.microsoft.com/en-us/library/ms978735.aspx的 “ 主-主复制 ” 。 主从复制 。 将数据从源到目标,而不考虑可能发生在复制自上次复制目标设定的更新。 见http://msdn.microsoft.com/en-us/library/ms978740.aspx “ 主从复制 ” 。 主-主行级同步 。 使用一对相关的复制源和目标和管理同步在两个方向同步控制器之间的联系。 要同步两个以上的副本复制集,建立适当的复制链接对每个额外的副本。 请参阅“ 主-主行级同步 ” http://msdn.microsoft.com/en-us/library/ms998434.aspx 主下属快照复制 。 源复制集中在一个特定的时间(这被称为快照)的副本,将其复制到目标,并覆盖目标数据。 通过这种方式,可能发生的任何变化,目标复制集改为由新源复制集。 请参阅“ 主下属快照复制 ” http://msdn.microsoft.com/en-us/library/ms998430.aspx 。 捕捉交易详情 。 创建额外的数据库对象,如触发器(影子)表,并记录属于复制组的所有表的变化。 请参阅“ 捕捉http://msdn.microsoft.com/en-us/library/ms978709.aspx 成交详情 “ 。 主下级事务增量复制 。 收购提交的事务有关的信息源和重放的交易时,他们以正确的顺序被写入到目标。 请参阅“ 主下级事务增量复制 ”http://msdn.microsoft.com/en-us/library/ms998441.aspx 。 主下级级联复制 。 增加的数量复制的源和目标之间的联系,通过添加一个或多个原始出处和年底的目标数据库之间的中介目标。 这些中介机构的数据存储,从源头上设置复制,从而起到在第一复制链接作为目标。 然后,他们采取行动来源移动数据复制链接到下一个,依此类推,直到他们到达梯级最终目标。 请参阅“ 主下级级联复制 ” http://msdn.microsoft.com/en-us/library/ms978712.aspx 。 |
Pattlets | 维护数据的副本 。 同步写入的数据副本从原始的应用程序,或同步数据发布后移动到本地缓存异步服务。 见http://msdn.microsoft.com/en-us/library/ms998465.aspx的 “ 模式和Pattlets的 ” 。 应用程序管理的数据副本 。 当一个特定的应用程序进行更改的数据的副本,它应该也使其他副本的变化。 应用程序应确保在同一事务中,改变了原有的数据更新的数据和/或派生数据的副本。 见http://msdn.microsoft.com/en-us/library/ms998465.aspx的 “ 模式和Pattlets的 ” 。 提取-转换-加载 “。 A型的数据移动,可以执行复杂的查询来获取不同来源数据,可以应用复杂的操作包括聚集和清洁的,但总是做一个简单的写替换目标的任何变化。 见http://msdn.microsoft.com/en-us/library/ms998465.aspx的 “ 模式和Pattlets的 ” 。 拓扑数据副本 。 在多种平台上部署数据复制的建筑方法。 见http://msdn.microsoft.com/en-us/library/ms998465.aspx的 “ 模式和Pattlets的 ” 。 |
企业解决方案模式
类别 | 模式 |
---|---|
部署模式 | 部署计划 。 创建部署计划,描述层,每个应用程序的组件将被部署到。 在分配组件层,如果它发现一个层是一个组件不是一个很好的匹配,确定修改组件的工作,以更好地与基础设施的成本和效益,或修改的基础设施,以更好地适应组件。 请参阅“ 部署计划 ” http://msdn.microsoft.com/en-us/library/ms978676.aspx 。 分层应用 。 您的解决方案的组成部分分开成层。 在每一层中的组件应该是凝聚力和在大致相同的抽象层次。 每个层底下的层是松耦合。 请参见“ 分层应用程序 ” http://msdn.microsoft.com/en-us/library/ms978678.aspx 。 三层服务应用 。 基地的分层体系结构三个层次:演示,业务层和数据层提供的去耦和增加凝聚力。 请参见“ 三层服务应用程序 ”http://msdn.microsoft.com/en-us/library/ms978689.aspx 。 分层分布 。 成一组物理层结构的服务器和客户端计算机和适当分发您的应用程序组件特定层。 见http://msdn.microsoft.com/en-us/library/ms978701.aspx “ 分层分布 ”的。 三层分布 。 您的应用程序结构围绕三个物理层:客户端,应用程序和数据库层。 请参阅“ 三级分布 ” http://msdn.microsoft.com/en-us/library/ms978694.aspx 。 |
分布式系统 | 经纪人 。 使用经纪图案隐藏远程服务调用的实现细节封装成层以外的其他业务组件本身。 请参阅“ 经纪 ” http://msdn.microsoft.com/en-us/library/ms978706.aspx 。 数据传输对象 。 创建数据传输对象(DTO)持有的所有数据的远程调用所需要的。 修改远程方法签名接受DTO作为单个参数,并返回到客户端的一个单一的DTO参数。 调用应用程序后接收的DTO,并把它存储为一个本地对象,应用程序可以使个别程序调用了一系列的DTO而招致远程调用的开销。 请参阅“ 数据传输对象 ” http://msdn.microsoft.com/en-us/library/ms978717.aspx 。 辛格尔顿 。 辛格尔顿提供了一个全球性的,单实例类本身的实例,建立一个单一的,允许其他对象来访问本实例通过一个全局访问类方法返回一个引用到实例。 此外,声明类的构造函数为private,没有其他的对象,可以创建一个新的实例。 请参阅“ 单身 ” http://msdn.microsoft.com/en-us/library/ms998426.aspx 。 |
性能和可靠性 | 服务器群集 。 服务器群集是两个或多个相互连接的服务器看起来就像是一个组合,从而创造了一个虚拟的资源,提高可用性,可伸缩性,或两者兼而有之。 请参见“ 服务器群集 ” http://msdn.microsoft.com/en-us/library/ms998414.aspx 。 负载均衡集群 。 服务或应用程序安装到多台服务器被配置为分担工作量。 这种类型的配置是一个负载均衡的集群。 基于服务器的程序,如Web服务器的性能负载平衡尺度,跨多个服务器分发客户端请求。 负载平衡技术,通常被称为负载均衡器,接收传入的请求,如果有必要将它们重定向到一个特定的主机。 负载平衡主机同时应对不同的客户端请求,即使从同一个客户端的多个请求。 请参阅“ 负载平衡群集 ” http://msdn.microsoft.com/en-us/library/ms978730.aspx 。 故障转移群集 。 故障转移群集是一组服务器的配置,所以,如果一个服务器变得不可用,另一台服务器会自动接管失败的服务器,并继续处理。 在集群中的每个服务器中的至少一个确定为它的备用服务器集群中的其他服务器。 请参阅“ 故障转移群集 ” http://msdn.microsoft.com/en-us/library/ms978720.aspx 。 |
服务模式 | 服务接口 。 创建一个组件,它提供了一个切入点,通过消费者的应用与服务交互,并暴露了一个粗粒度接口,同时从业务逻辑中去耦实施。 请参阅“服务接口 ” http://msdn.microsoft.com/en-us/library/ms998421.aspx 。 服务网关 。 封装的代码,实现对消费者的合同到其自己的服务作为其他服务的代理网关组件,封装连接的源和执行任何必要的翻译的细节部分。 请参阅“ 服务网关 ” http://msdn.microsoft.com/en-us/library/ms998420.aspx 。 |
Web演示文稿模式 | 模型-视图-控制器 。 模型 - 视图 - 控制器(MVC)模式中的数据域,演示文稿,以及用户输入三个单独的类的基础上的行动分开。 该模式管理的行为和数据的应用程序域,响应有关其状态的信息(通常是从视图)的要求,并响应指令来改变状态(通常从Controller)。 查看管理信息的显示。 控制器解释从用户的鼠标和键盘输入,通知模型和/或作相应的更改。 见http://msdn.microsoft.com/en-us/library/ms978748.aspx “ 模型-视图-控制器 ” 。 页面控制器 。 使用页面控制器模式,接受输入的页面请求,调用请求的操作模型,并确定正确的使用结果页面。 分隔调度逻辑从任何视图相关的代码。 在适当的情况下,建立一个公共基类的所有页面控制器,以避免代码重复,提高一致性和可测性。 请参阅“ 页面控制器 ”http://msdn.microsoft.com/en-us/library/ms978764.aspx 。 前端控制器 。 前端控制器模式存在窜通过一个单一的控制器的所有请求的页面控制器解决权力下放的问题。 控制器本身通常是实施分为两部分:一个处理程序和命令的层次结构。 该处理程序接收HTTP POST或GET请求从Web服务器检索相关参数的要求。 处理程序使用的参数的要求首先要选择正确的命令,然后将控制转移到的命令处理。 命令本身是控制器的一部分。 该命令用于表示命令模式中所描述的具体行动。 请参阅“ 前端控制器 ”http://msdn.microsoft.com/en-us/library/ms978723.aspx 。 拦截过滤器 。 使用Intercepting Filter模式来创建链组合的过滤器在Web页面请求来实现共同的预处理和后处理任务。 请参阅“ 拦截过滤器 ”http://msdn.microsoft.com/en-us/library/ms978727.aspx 。 页面缓存 。 输出缓存由服务器生成的页面被频繁访问,但变化较少,以减少服务器上的处理负载。 请参阅“ 页面缓存 ”http://msdn.microsoft.com/en-us/library/ms978759.aspx 。 观察员 。 使用Observer模式保持在一个单独的对象(主体)的列表,有兴趣的家属(观察者)。 所有个人观察家Observer接口实现一个共同的,消除了直接的主体和依赖的对象之间的依赖关系。 “ 观察家报 ”在http://msdn.microsoft.com/en-us/library/ms978753.aspx 。 |
集成模式
类别 | 模式 |
---|---|
集成层 | 实体集合 。 介绍一个实体集合的逻辑表示的实体层,提供企业级,支持访问,更新他们各自在后端资料库实例的物理连接。 请参阅“ 实体集合 ”http://msdn.microsoft.com/en-us/library/ms978573.aspx 。 流程集成 。 定义业务流程模型,介绍了各个步骤,使复杂的业务功能。 创建一个单独的进程管理器组件,可以解释这个模型的多个并发实例,可以与现有的应用程序执行过程中的各个步骤。 请参阅“ 流程集成 ” http://msdn.microsoft.com/en-us/library/ms978592.aspx 。 门户集成 。 创建门户应用程序显示来自多个应用程序检索到的信息在一个统一的用户界面。 然后,用户可以在这个网站上显示的信息执行所需的任务。 请参阅“ 门户集成 ” http://msdn.microsoft.com/en-us/library/ms978585.aspx 。 |
集成拓扑 | Message Broker的 。 扩展的集成解决方案,通过使用Message Broker的模式。 消息代理是一种物理的组件,用于处理应用程序之间的通信。 与对方进行通信,而不是应用程序只与消息代理。 一个应用程序发送一个消息到消息代理,提供接收器的逻辑名称。 消息代理看起来逻辑名称注册的应用程序,然后将消息传递给他们。 请参阅“ 消息代理 ” http://msdn.microsoft.com/en-us/library/ms978579.aspx 。 消息总线 。 连接所有的应用程序通过一个合乎逻辑的组成部分,被称为消息总线。 消息总线专业在应用程序之间传输消息。 消息总线包含三个关键要素:一组商定的消息架构,一组常见的命令消息,邮件的收件人发送总线共享的基础设施。 请参阅“ 消息总线 ” http://msdn.microsoft.com/en-us/library/ms978583.aspx 。 发布/订阅 。 启动类事件发布其他应用程序可以订阅以接收特定的消息。 一种发布\订阅机制的事件或消息发送给所有感兴趣的用户。 请参阅“ 发布/订阅 ” http://msdn.microsoft.com/en-us/library/ms978603.aspx 。 |
系统连接 | 数据集成 。 将上面的逻辑数据层的应用程序,通过允许在一个应用程序中的数据(源)由其他应用程序(目标)进行访问。 请参阅“ 数据集成 ”http://msdn.microsoft.com/en-us/library/ms978572.aspx 。 功能整合 。 将要访问其他应用程序(目标),允许一个应用程序(源)的业务功能的应用程序的业务逻辑层。 见“ 功能集成 ”http://msdn.microsoft.com/en-us/library/ms978578.aspx 。 面向服务的集成 。 在商务逻辑层将应用程序集成,使系统消耗,并提供可扩展标记语言(XML)为基础的Web服务。 使用Web服务描述语言(WSDL)合约来形容这些系统的介面。 确保互操作性的实施符合Web服务(WS-*)系列规格。 见http://msdn.microsoft.com/en-us/library/ms978594.aspx “ 面向服务的集成 ” 。 演讲整合 。 通过用户界面访问应用程序的功能,通过模拟用户的输入,并通过读取从屏幕上显示的数据。 请参阅“ 演示集成 ”http://msdn.microsoft.com/en-us/library/ms978588.aspx 。 |
额外的集成模式 | 管道和过滤器 。 实施转换,通过一系列的滤波元件,其中每个过滤器组件接收输入消息,适用于一个简单的转换,转换后的消息发送给下一个组件。通过管道连接的过滤器的输出和输入,则该缓冲器的过滤器之间的通信,进行消息。 见http://msdn.microsoft.com/en-us/library/ms978599.aspx “ 管道和过滤器 ” 。 网关 。 抽象到外部系统的访问,以一个单一的接口。 为多个系统的模式消除了需要知道如何连接到外部系统。 因此,网关模式简化了相关的外部系统的开发和维护过程。 请参阅“ 其他集成模式 ” http://msdn.microsoft.com/en-us/library/ms978722.aspx 。 |
Web服务安全模式
类别 | 模式 |
---|---|
认证 | 经纪公司的身份验证 。 Web服务验证客户提出的凭据,而不需要为双方之间的直接关系。 双方都信任独立颁发安全令牌的客户端身份验证代理。 然后,客户端可以提供凭据,包括安全令牌,到Web服务。 参见http://msdn.microsoft.com/en-us/library/aa480560.aspx “ 经纪人的身份验证 ” 。 以下三个模式描述的代理验证模式的具体实现。 经纪验证:Kerberos身份 。 使用Kerberos协议的客户端和Web服务之间的经纪人认证。 “ 经纪人的身份验证:Kerberos身份”的http://msdn.microsoft.com/en-us/library/aa480562.aspx 。 代理认证:X509 PKI。 使用斡旋验证使用X.509证书的证书颁发机构(CA)颁发的公共密钥基础设施(PKI)提出请求的应用程序验证的凭据。 “ 经纪人的身份验证:X509 PKI” http://msdn.microsoft.com/en-us/library/aa480565.aspx 。 代理认证:STS。 使用斡旋验证安全令牌服务(STS)颁发的安全令牌。 STS信任的客户端和Web服务来提供可互操作的安全性令牌。 “ 经纪人的身份验证:STS” http://msdn.microsoft.com/en-us/library/aa480563.aspx 。 直接认证 。 Web服务作为一种身份验证服务从客户端验证凭据。 的凭据,其中包括藏是基于共享秘密的证明,核对身份店。 请参阅“ 直接认证 ”http://msdn.microsoft.com/en-us/library/aa480566.aspx 。 |
授权 | 受信任的子系统 。 Web服务作为一个值得信赖的子系统访问额外的资源。 它使用自己的凭证,而不是用户的凭据访问资源。 请参阅http://msdn.microsoft.com/en-us/library/aa480587.aspx “ 受信任的子系统 ” 。 |
异常管理 | 异常屏蔽 。 消毒不安全代之以安全设计的异常异常。 只有那些例外返回到客户端已经消毒,或异常的设计是安全的。 例外是安全的设计不包含异常消息中的敏感信息,它们不包含一个详细的堆栈跟踪,可能泄露敏感信息的Web服务的内部运作。 请参阅http://msdn.microsoft.com/en-us/library/aa480591.aspx “ 异常屏蔽 ” 。 |
消息加密 | 数据保密性 。 使用加密来保护信息中包含的敏感数据。 未加密的数据,这是被称为明文 ,被转换为加密的数据,这是被称为密文 。 用的算法和加密密钥对数据进行加密。 密文再转换回明文其目的地。 请参阅http://msdn.microsoft.com/en-us/library/aa480570.aspx “ 数据保密 ” 。 |
消息重播检测 | 消息重播检测 。 缓存标识符传入的消息,并使用消息重放检测,识别并拒绝重播检测缓存中的条目相匹配的消息。 请参阅“ 消息重播检测 ”http://msdn.microsoft.com/en-us/library/aa480598.aspx 。 |
消息签名 | 数据来源认证 。 使用数据源认证,这使得接收者验证消息没有被篡改,在运输过程中(数据完整性),它们源自预期发件人(真实性)。 请参阅“ 数据源的认证 ” http://msdn.microsoft.com/en-us/library/aa480571.aspx 。 |
消息验证 | 消息验证 。 消息验证逻辑强制指定部分请求消息所需要的服务,成功地处理它的一个明确的政策。 对XML模式(XSD)验证XML消息负载,以确保他们形成符合什么服务期望处理。 验证逻辑也对某些标准措施的消息,通过检查邮件大小,邮件内容,以及所使用的字符集。 不符合标准的任何消息都将被拒绝。 请参阅http://msdn.microsoft.com/en-us/library/aa480600.aspx “ 留言验证 ” 。 |
部署 | 周边服务路由器 。 设计Web服务中介作为外围服务路由器的。 外围业务路由器提供了一个外部的外围网络上的内部Web服务接口。 它接受来自外部应用程序的消息,并将它们路由到适当的Web服务在专用网络上。 请参阅http://msdn.microsoft.com/en-us/library/aa480606.aspx的 “雷池服务路由器” 。 |
附加资源
欲了解更多信息,请参阅以下资源:
- 在复合应用程序库的模式的详细信息,请参见WPF和Silverlight的复合应用程序指南 。
- 数据模式的信息,请参阅数据模式 。
- 企业解决方案模式的详细信息,请参阅使用Microsoft的企业解决方案模式。
- 整合模式的详细信息,请参阅集成模式 。
- Web服务安全性的详细信息,请参阅Web服务安全指引:Web服务增强(WSE)3.0的方案,模式和实现指南 。