摘自《Enterprise Solution Patterns Using Microsoft .NET》
描述解决方案体系结构的用户可能会做如下表述:
首先让我们在抽象的体系结构级别看一下这个报价应用程序。从应用程序视点,报价应用程序是面向对象的应用程序,它在逻辑上构造成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(表模块)[Fowler03] 实现的。复杂的 Web 应用程序 Deployment Model (部署模型)要求 Web 级和应用程序级分开。因此,这两级通过一个代理程序进行通信。业务实体充当 Data Transfer Objects [Fowler03],用于封装在这两级之间传送的信息。
数据层使用 Data Table Gateway [Fowler03] 来访问 OLTP 数据库子系统,并使用大量数据访问组件来支持域对象的持久性要求。
从基础结构视点:为了满足业务的操作要求,我们通过添加Load-Balanced Cluster (负载平衡群集)和FailoverCluster(故障转移群集)来基于基本的 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 服务器之间提供负载平衡。