简介
分布式系统设计器由各种支持分布式系统图形设计和验证的工具组成。该工具集包括适用于应用程序架构师、设计人员、开发人员和操作架构师的工具。分布式系统设计器是源于动态系统计划 (DSI) 的早期工具,旨在改进企业级分布式系统的开发、部署和管理。有关 DSI 的详细信息,请参阅 Microsoft Dynamic Systems Initiative。这些工具是 Visual Studio 2005 Team System 的一部分。
面向服务的体系结构是下一代分布式应用程序的基础。Microsoft 的“Indigo”平台将提供业界领先的、面向服务的系统。“Indigo”将基于 SOAP 和目前 Windows 平台所提供的 Web 服务支持进行构建,并增加了对各种传输和系统拓扑结构的广泛支持,从而能够在服务之间进行安全、可靠和持久的基于消息的通信。既然 Indigo 平台本身有了许多重要的改进,企业现在就可以使用 SOAP、XML 消息处理和 ASP.NET Web 服务来开发面向服务的系统。有关详细信息,请参阅 Indigo。
设计分布式系统的难题
设计和部署分布式系统是一个相当复杂的过程。本节解释一些可能出现的问题。
使分布式系统的设计可视化
将系统结构作为一个整体进行可视化已变得越来越困难,这是因为在面向服务的体系结构中,系统变得越发支离破碎。此外,随着时间的推移,由于各个部门购买、开发或获取各种各样的应用程序,因此企业通常聚集了许多不同的系统。由于各个系统可能采用了很多编程技术,因此在它们之间共享功能和数据常常十分困难。为了实现互操作,设计基于消息的界面已日益成为对开发人员和架构师的一项基本要求;设计新消息并确保与现有的消息架构保持一致至关重要。通过消息进行互操作是面向服务的体系结构的核心。
保持设计和代码同步
为了保持系统设计文档最新,架构师和开发人员之间要进行密切沟通。然而,一旦开始编码(即便是出于完善的目的),系统设计文档常常会变得过时且不准确。但这种使设计文档与迅速变化的代码同步的艰巨任务很快就要成为过去。
为部署而设计
软件和硬件供应商经常认为开发人员了解平台配置(SQL、IIS、BizTalk 等)的每个细微差别,并认定操作管理能完全识别应用程序开发人员使用的框架和消息协议。尽管操作应该是整个软件开发生命周期的一部分,但是这一部分在组织和功能上是与开发分离的。操作人员与开发人员很少主动进行合作,双方通常是在开发后期被动地合作以诊断可早期预防的问题。
考虑开发和部署 Web 服务的简单情况。尽管开发人员的关注焦点是实现服务,但他们仍需考虑以下方面:安全性、身份验证模型、目标环境所需的其他支持服务以及使 Web 服务按预期方式运行所需的配置设置。操作需要识别新服务所需的协议和服务,以及企业 IT 策略是否得以遵循。开发与操作之间的分离导致的不匹配配置经常会引发部署问题,更糟糕的是,与数据中心不兼容的设计会导致将大量的 IT 预算花费在纠正部署问题上。
尽管很多企业试图通过文档、设计审查及精心绘制的图表来解决沟通问题,但往往由于缺少相关的工具和公共语言而无法有效地实施和传达他们的策略。此外,这些过程目前已经从开发人员和操作人员日常所使用的实际工具中删除,因此过程本身存在一定的问题。
为安全性配置应用程序
确保分布式应用程序的安全是一个既耗时又复杂的过程,原因在于要涉及许多影响应用程序设计的技术和设置。目前,在设计应用程序时,没有一种用来表示应用程序的安全配置或数据中心安全需求的集成方法。因此,确保正确实现安全性非常困难。
改进分布式系统的设计和部署
分布式系统设计器提供一种集成的设计经验,其目标是实现分布式系统的可视化设计和验证。设计器使用系统定义模型(System Definition Model,SDM)作为描述应用程序服务和运行时环境的连接状况、配置情况和相互关系的基础元模型。SDM 基于多层模型,该模型包括应用程序、应用程序宿主环境、网络拓扑、操作系统和物理设备。该模型不仅允许分布式系统设计器描述每层的设计,而且还允许它表达各层的约束和策略,以便跨越分布式系统的所有层。
分布式系统设计器支持两个域(开发和操作)的集成模型。这样,设计人员可以使用下面的方法来解决客户的问题:
| • |
提供公共语言(基于 SDM)来描述分布式系统的设计和配置。
|
| • |
允许开发人员表达应用程序对运行时环境的要求。
|
| • |
允许操作人员表达作为目标部署环境策略的应用程序运行时、安全和连接要求。
|
| • |
使用允许开发人员和操作人员在共同的基础上进行交流的抽象。
|
| • |
与现有的 Visual Studio 项目系统和 .NET 技术集成。
|
| • |
提供可视设计元素与代码之间的完全同步。
|
| • |
包含一种扩展性框架,允许对新型应用程序和宿主系统进行建模。
|
下面一节详细描述了分布式系统设计器工具集中的各个设计器和编辑器的功能。
分布式系统设计器概述
分布式系统设计器包括以下设计器:
| • |
应用程序连接设计器
|
| • |
逻辑数据中心设计器
|
| • |
系统设计器
|
| • |
部署设计器
|
应用程序连接设计器
应用程序连接设计器 (ACD) 可以帮助开发人员或架构师定义和配置组成供部署的系统的应用程序。工具箱中提供了一组预定义的应用程序原型,它包括 Web 服务、Web 应用程序、Windows 应用程序、外部数据库、外部 Web 服务和外部 BizTalk 服务。此外,还包括一种用于在设计中记录其他应用程序类型的通用应用程序原型。
应用程序连接关系图显示单个 Visual Studio 解决方案中定义的应用程序。可以通过从工具箱中添加每个应用程序来从头创建关系图,也可以通过从现有解决方案或现有项目进行反向工程来创建关系图。
图 1 显示一个应用程序连接关系图示例。
图 1. 应用程序连接设计器
ACD 可以同时显示“内部”和“外部”应用程序。内部应用程序是在解决方案中定义的单个可部署应用程序,它们可以组成一个或多个可部署系统。通常,一个内部应用程序就是一个项目,它定义一个可宿主的可执行程序(例如,Web 应用程序或 Windows 应用程序)。资源既可以包括在该项目中,也可以位于其他引用项目或共享项目中,包括类库项目。外部应用程序允许开发人员对部署过程中所要涉及的其他系统进行可视化引用。
每个应用程序都用一个框表示,较小的框代表连接点,说明应用程序是连接目标还是连接源。这些连接点称为终结点。应用程序提供的服务由提供程序终结点(实心形状)表示;其他应用程序提供的服务的连接点由客户终结点(空心形状)表示。各个应用程序都通过它们的终结点彼此连接在一起。
尽管 SDM 模型主要关注终结点的类型、配置和连接,但各个应用程序可以扩展该模型来表示服务所提供的行为的定义。例如,可以使用以下两种方法之一来定义 Web 服务终结点:单击某个 Web 服务提供程序终结点,允许在“Endpoint Details”窗口中定义该 Web 服务的操作;也可以导入现有的 Web 服务描述语言 (.wsdl) 文件中的行为定义。通过这种方法扩展模型,ACD 可以支持完整的设计体验,例如,允许完全指定 Web 服务应用程序的行为和配置。
ACD 上显示的连接描述了开发环境中应用程序的当前配置。如果应用程序经过调试,它将沿着显示的连接路径运行。
ACD 支持一种延迟的实现方法,允许用户在将设计实现为代码之前创建和验证设计。如果从工具箱中将应用程序定义添加到 ACD,则相应的项目、代码和配置文件不会立即创建。代码的第一次生成称为“实现”。应用程序定义可以增量实现,也可以一次性实现。在关系图中,已实现的应用程序用阴影来区分。一旦实现了一个应用程序,则只要保持关系图和代码文件打开,关系图中显示的所生成的代码文件、配置文件和应用程序设计就会始终保持同步。如果关系图由于某种原因关闭,重新打开它将使其与代码同步,同时可用关闭关系图时对代码所做的更改来更新它。这样,ACD 中的设计模型便可轻松地与对代码所做的任何更改保持同步,而这是其他工具的一个常见问题。如果应用程序是通过对现有项目或解决方案进行反向工程而创建的,则认为它已经实现,并且自此会自动同步。
通过对实现加以延迟,架构师和应用程序设计人员可以集中精力完成系统的功能设计和验证,同时延迟一些最好稍后由开发团队作出决策的实现。这些决策可能包括选择编程语言和模板,或者用于 Web 项目的服务器位置。
由于关系图保存为文件(.dsdgm 文件),因此可以将其包括在源代码管理中,并合并到团队的正常工作流。有关实现的应用程序的信息保存在每个项目的 .sdm 文件中。这使得可以在多个解决方案中重用项目,并且可以将工作在团队的开发人员之间进行划分。
ACD 可以访问应用程序配置设置的完整模型,并且能够定义宿主约束。宿主约束允许应用程序设计人员指定宿主环境的要求。通过在设置和约束编辑器中定义应用程序定义的宿主约束,应用程序开发人员可以请求一组目标部署环境中可用的必需功能,这样就可以向操作人员传达重要的应用程序要求。之后,操作人员可以决定是否要对逻辑数据中心进行更改以满足这些请求。作为部署验证的一部分,系统要根据逻辑数据中心的设置和约束来验证应用程序的设置和宿主约束(请参见部署设计器)。
逻辑数据中心设计器
逻辑数据中心设计器 (LDD) 用于创建相互连接的逻辑服务器的关系图,这些关系图表示数据中心的逻辑结构。这些逻辑数据中心关系图可将有关目标部署环境的重要信息传达给开发人员。借助该设计器,操作架构师可以指定和配置数据中心的服务器类型、许可的通信类型、特定的通信路径,以及支持的服务类型。
通常,逻辑数据中心关系图由操作分析人员创建并拥有,但由开发人员使用。创建了逻辑数据中心关系图之后,操作分析人员可以在整个应用程序开发生命周期中锁定并管理关系图版本,以使其与数据中心的设计更改保持同步。和其他的分布式系统设计器一样,逻辑数据中心设计器也与 Visual Studio 完全集成。但是,逻辑数据中心关系图的创建与应用程序开发过程无关。这些关系图保存为 .lsad 文件,并可以由部署在同一目标环境中的其他分布式系统重用。
下图显示一个处于构建中的简单逻辑数据中心关系图示例。
图 2. 逻辑数据中心设计器
在 LDD 中,工具箱包含预定义的逻辑服务器原型,它们可以添加到关系图中。逻辑服务器表示数据中心中的应用程序主机。本地类型包括 Windows 客户端服务器、Web 服务器(IIS 服务器)、SQL Server 和通用服务器。除了通用服务器之外,每个原型都定义一组用于配置服务器的设置和适用约束。之所以包括通用服务器,只是为了记录的目的,并考虑到要进行建模的数据中心中存在其他类型的服务器。每个逻辑服务器都有两个指定特定通信协议的终结点。可以将终结点添加到逻辑服务器中,以便通过该终结点与其他逻辑服务器通信。
通过编辑所提供的设置,可以对数据中心内逻辑服务器的配置进行建模。除了编辑所提供的设置之外,也可以从实际的服务器中导入这些设置。描述数据中心之后,就可以使用设置和约束编辑器来指定与应用程序(它们可以宿主在数据中心的表示形式中)的类型和配置有关的策略约束。这些约束是根据应用程序层中的设置创建的,因为它们可以用于约束服务器可宿主的应用程序的类型,并且可以用于指定应用程序所需的配置。例如,对于 Web 服务器上宿主的应用程序,可以约束 ASP.NET 安全设置;对于 Windows 客户端服务器上宿主的应用程序,则必须具备所需的 NET Framework 版本。将某些设置标记为“固定”,可以指定这些设置不能在开发期间重写。
设置和约束编辑器如图 3 所示。
图 3. 设置和约束编辑器
工具箱还包含若干区域和终结点。区域表示数据中心的通信边界。区域终结点表示区域和服务器之间的连接点。区域和服务器之间的通信路径由区域终结点控制,可以配置区域终结点来确定允许进出该区域的通信协议的类型。服务器终结点用于指定服务器和跨区域发送或接收通信的服务器之间所允许的通信路径和协议。
作为部署验证的一部分,系统要根据应用程序中定义的设置和约束,来验证逻辑数据中心关系图中定义的配置设置和应用程序约束(请参见部署设计器)。这样,数据中心策略和部署要求便可以从操作小组传达到开发团队。
系统设计器
系统设计器用于根据 ACD 中定义的应用程序组成和配置系统。在分布式系统设计器中,系统是部署单元,而且是一个或多个应用程序及其他子系统的一项配置。因为系统可以由其他系统组成,所以允许定义大规模分布式系统方案。应用程序架构师可以设计复杂的多层系统,以此作为“嵌套”系统的层次结构。
在创建系统定义时,可以独立于 ACD 中显示的开发配置来定义部署配置。如果允许,在系统关系图中使用应用程序时,可以重写在 ACD 的应用程序定义中定义的应用程序设置。可以创建多个系统定义,每个定义对应于解决方案中定义的应用程序的不同配置。这样,允许针对不同的规划部署(也可能针对不同的数据中心配置、不同的地理部署或不同的客户)定义不同的配置。
图 4 显示一个包含嵌套系统的系统关系图示例。
图 4. 系统设计器
部署设计器
部署设计器用于定义如何将特定系统部署到目标逻辑数据中心。通常,部署设计器由开发人员和架构师使用。在部署设计器中,系统中的应用程序绑定到目标数据中心中的逻辑服务器。该设计器提供的功能突出了 SDM 模型的内在通信优势,SDM 模型是分布式系统设计器的基础。一旦定义了部署,就可以根据需要对其进行验证。验证可以确认系统中的所有应用程序是否都绑定到逻辑服务器,然后检查应用程序是否符合逻辑数据中心关系图中指定的应用程序约束。验证也可以确认逻辑服务器是否符合应用程序连接关系图和系统关系图中指定的宿主约束。
此外,验证还可以确保所需的通信路径存在,并确定是否存在正确的通信协议,以及这些协议是否在应用程序和主机服务器之间兼容。
图 5 显示一个部署关系图示例。
图 5. 部署设计器
所有的验证错误都显示在 Visual Studio 错误列表中,该列表为更正和调整错误提供了一种简单的导航机制。双击错误列表中的某项错误时,部署设计器将打开相应的关系图,选择适当的应用程序或逻辑服务器,并导航到适当的设置,从而可以对其进行更正。这样就能够在部署之前(甚至在完全实现系统之前)更正配置错误。可以从部署设计器中生成全部所需的应用程序和数据中心配置设置的报告,并且可以将其用于为自定义部署工具创建脚本。
扩展性
分布式系统设计器将包含一个扩展性模型,该模型允许合作伙伴对平台进行扩展,并添加对其他协议、其他种类的应用程序和逻辑服务器的支持。
与 Visual Studio 2005 Team System 集成
分布式系统设计器提供了对分布式应用程序的设计和部署的支持。该设计器通过以下几种方式与其他的 Visual Studio 2005 Team System 工具集成:
| • |
使用分布式系统设计器设计、开发和测试的供部署的分布式系统开发项目,均由 Visual Studio 2005 Portfolio Management Tools 管理。
|
| • |
使用 Visual Studio 2005 Team Test 对应用程序进行单元测试。
|
| • |
使用 Visual Studio 2005 Team Foundation Server and Client 跟踪源代码管理和集成工作项。
|
小结
分布式系统设计器是一个设计器集合,它们可以简化基于面向服务的体系结构设计和验证分布式系统的过程。
| • |
面向服务的体系结构:面向服务的体系结构预期会作为下一代分布式应用程序的基础,但可视化并设计所需的结构片段却非常困难。应用程序连接设计器和系统设计器将帮助应用程序架构师、设计人员和开发人员从整体上可视化并设计面向服务的系统。
|
| • |
为操作而设计:分布式系统设计器可以创建关系图来表示系统的应用程序层和应用程序宿主层。由于组成应用程序的服务不断变化,因此在第一次部署应用程序时以及应用程序的整个生命周期中,这些关系图都可以帮助设计和部署应用程序的人根据操作要求来验证应用程序配置。
|
| • |
可执行设计:借助分布式系统设计器中的统一模型,应用程序和基础结构架构师可以在设计过程中捕获丰富的元数据。这种元数据既可用于生成代码,也可用于根据数据中心定义验证应用程序设计。使用该模型,应用程序架构师可以创建更正式、更精确的设计。在应用程序的整个生命周期中,保持设计与代码同步仍然很关键,这有助于应用程序架构师根据需要维护和扩展应用程序。
|
分布式系统设计器可以帮助企业成功地构建基于 Web 服务且面向服务的应用程序,并有效地为在数据中心成功部署它们做好准备。 |