版本: 1.1.0
序言
欢迎阅读《使用 Microsoft .NET 的企业解决方案模式》。本指南简要介绍了各种模式,并描述一个按照各种视点和关系对它们进行分类的新组织方法,随后,本指南讨论了其中几个视点所涉及的 32 种模式,并解释了如何将它们集成到企业解决方案中。
在构建和生成企业解决方案时,软件设计人员更多地使用了模式来有效地共享重要的体系结构权衡方法和设计决策。Christopher Alexander 在他的 The Timeless Way of Building 一书中首先用模式来描述体系结构和设计;但是,他的模式是针对城市、建筑物和房屋的。不久,软件设计人员认识到模式作为一种共享设计经验的语言所具有的价值。
在过去的十年中,迅速发展的模式社区已经在系统体系结构和软件开发的许多区域发现了模式。本书包含模式社区持续不断的工作所获得的成果,并通过展示如何将模式应用于构建使用 Microsoft® .NET 的软件密集型系统对它进行了扩展。在早期,客户、合作伙伴和内部反馈指出应当用一本书来回顾已建立的模式和 Microsoft 的特有模式。因此,这就是本书的宗旨。
本书包括已建立的、与平台无关的体系结构和设计模式,然后用专门应用于 Microsoft .NET 的实现模式来扩充了这些模式。来自 .NET 开发人员和系统体系结构设计者的早期反馈已经确认模式是共享 .NET 专业知识的宝贵工具。模式为开发人员和体系结构设计者提供一种通用语言,帮助他们在两个原则之间实现了沟通。本书的作者希望能够向您证明模式的有用性,并且希望您为日益发展的 .NET 模式社区做出贡献。在这方面,还有更多的任务需要完成。
本书面向的读者
本书的大多数读者属于以下三类之一:
- 不熟悉模式的体系结构设计者、设计人员和开发人员
- 已经使用模式构建过企业解决方案的体系结构设计者和设计人员
- 架构或设计系统基础机构的系统体系结构设计者或系统工程师
对于第一组中的读者,前两章对于了解为何以及如何使用模式非常重要。这两章对于理解后四章非常重要,后四章构成模式目录。您可能会发现您已经实现了其中的一些模式,而并不知道它们是模式。
第二组中的读者熟悉第 1 章“企业解决方案的构建模式”中的大部分内容。第 2 章“组织模式”介绍了有关 Microsoft 如何组织其模式储存库的新资料。您将在第 3 章到第 7 章中熟悉大多数模式;但是,所提供的实现示例应当能够帮助您将它们应用于 .NET。
最后一组应当阅读前两章,并特别注意第 4 章“部署模式”和第 7 章“性能和可靠性模式”。这几章专门讨论直接应用于基础结构的模式。
本书结构
第 1 章 企业解决方案的构建模式
介绍了模式的概念,并解释了模式如何记录经过验证的简单机制,最后讨论了模式集如何为开发人员和体系结构设计者提供通用语言。为了阐释这些概念,本章将实际模式的简化版本应用于实际的开发情形。
第 2 章 组织模式
解释了模式如何出现在不同的抽象层和各个域之间。本章详细探讨了模式级别,并概括了有助于快速查找相关模式的组织框架。随后,这一章阐释了模式如何在不牺牲细节的情况下提供可高效描述复杂解决方案的词汇。
第 3 章到第 7 章提供了 32 种模式的目录,它们组合成群集。每一章都首先描述特定群集中的模式如何相关,然后给出如何使用模式的指导。对于实现模式,代码示例是用 C# 编写的,并且仅用作示例。示例代码并非针对生产环境。
第 3 章 Web 表示模式
描述了与构造动态 Web 应用程序相关的设计和实现模式。取决于应用程序的大小和复杂程度,必须做出不同的设计取舍。Web 表示模式群集提供了许多模式替代选项,以阐释应用程序及其最终利弊的各种类型。
本章节包括以下部分内容
- 模型-视图-控制器
- 在 ASP.NET 中实现 Model-View-Controller
- 页面控制器
- 在 ASP.NET 中实现 Page Controller
- 前端控制器
- 在 ASP.NET 中使用 HTTPHandler 实现 Front Controller
- 截取筛选器
- 在 ASP.NET 中使用 HTTP 模块实现 Intercepting Filter
- 页面缓存
- 在 ASP.NET 中使用绝对过期实现 Page Cache
- 观察器
- 在 .NET 中实现 Observer
第 4 章 部署模式
“部署模式”有助于减小应用程序开发小组和系统基础结构小组之间的交流困难,其方法是指导他们如何以最优方式构造可高效满足解决方案要求的应用程序和技术基础结构。模式讨论了多个主题,如按逻辑分层组织应用程序、优化分层以提供和使用服务、按物理层组织硬件以及用部署计划将进程分配给处理器。
本章节包括以下部分内容
第 5 章 分布式系统模式
介绍与分布式系统和服务模式群集都相关的概念,其中包括基于接口的协作和基于服务的协作之间的区别,以及近链接和远链接的概念。正如此处定义的那样,分布式系统模式强调基于实例的协作和近链接。
本章节包括以下部分内容
- 代理程序
- 使用服务器激活对象通过 .NET Remoting 实现 Broker
- 使用客户端激活对象通过 .NET Remoting 实现 Broker
- 数据传输对象
- 在 .NET 中使用 DataSet 实现 Data Transfer Object
- 在 .NET 中使用类型化 DataSet 实现 Data Transfer Object
- Singleton
- 在 C# 中实现 Singleton
第 6 章 服务模式
先简要回顾第 5 章中介绍的协作概念,然后介绍多个强调应用程序和外部服务之间协作的模式。与分布式系统相比,服务模式主要关注使用基于服务的协作由远链接连在一起的系统。
本章节包括以下部分内容
第 7 章 性能和可靠性模式
讨论了企业解决方案如何必须确保满足不可预知数量的用户的要求,并且通常必须每周工作七天、每天工作 24 小时。尽管可通过多种方法来提高性能和可靠性,但此模式群集主要关注如何组合服务任意数量的应用程序或用户的多个系统,以提高可伸缩性和可用性。
本章节包括以下部分内容
附录 A
“Pattlet”提供了本指南所提及的模式的列表,但是并不详细讨论它们。这些模式称作 pattlet,以便与该目录中的其余模式区分开来。有关为何使用 pattlet 的详细信息,请参阅第 2 章“组织模式”。
文档约定
本指南使用下面的样式约定和术语。表 1:样式惯例表
元素 | 含义 |
加粗 字体 | 对象、类、方法、预定义的函数和事件。 |
倾斜 字体 | 本指南中引用的模式和 pattlet 的名称。第一次出现的新术语也用倾斜字体表示。 |
Monospace 字体 | 代码示例。 |
注意 | 提示注意补充信息。 |
社区
本指南中的模式属于 GotDotNet 上的新模式社区。GotDotNet 是在联机协作开发环境中使用工作区的 Microsoft .NET Framework 社区网站,在这种环境中,.NET 开发人员可以在整个项目生命周期以内创建、托管和管理项目。还可以使用这个模式社区张贴问题、提供反馈或连接其他用户以共享想法。
可从以下网址访问模式社区:http://gotdotnet.com/team/architecture/patterns
反馈和支持
本书作者欢迎您就本书内容提供反馈意见。特别是,如果能就下列主题提供任何指导,他们将不胜感激:
- 本指南中提供的信息对您是否有用?
- 本指南中的信息是否按正确的顺序提供?它们的详细程度是否合适?
- 其中的章节是否具有可读性?是否有趣?
- 总的来说,您如何评价本资料?
请将您的反馈意见发送到以下电子邮件地址:pnppatfb@microsoft.com。请注意,不能通过该地址获得技术支持;要获得对 Microsoft 产品和技术的支持,请访问 http://support.microsoft.com
此处记录的模式旨在推动企业应用程序的构造和设计。模式是要应用于所面临问题的简单机制,它们通常与其他模式结合使用。它们并不是要插入到应用程序中。示例代码按原样提供,但并不针对生产环境。它们仅用于阐释模式,因此其中不包括额外代码(如异常处理、日志记录、安全性和验证)。尽管本资料已经通过测试并且由行家审核过,但我们并不提供象传统的 Microsoft 产品那样的支持。
致谢
非常感谢以下顾问为我们提供了宝贵的帮助:- Ward Cunningham, Cunningham & Cunningham, Inc.
- Martin Fowler, ThoughtWorks, Inc.
- Ralph Johnson, University of Illinois at Urbana-Champaign
- Robert C. Martin, Object Mentor
- Mohammad Al-Sabt, Microsoft Prescriptive Architecture Guidance
- Chris Colleran, Colleran.net, LLC
- Matt Evans, Microsoft Prescriptive Architecture Guidance
- Xiao Guo, ThoughtWorks, Inc.
- Steve Kirk, MSDN
- Rick McUmber, RDA
- Vijay Srinivasan, Satyam Computer Services
- Jonathan Wanagel, Microsoft Prescriptive Architecture Guidance
- Atmedica USA, LLC, a MediMedia USA company
- Safeco Insurance Company
- SBI and Company
- ThoughtWorks, Inc.
文章来源于领测软件测试网 https://www.ltesting.net/