Team Architect Edition 应用程序设计器简介,第一部分

来源:互联网 发布:java并发实例 编辑:程序博客网 时间:2024/05/16 07:42

Team Architect Edition 应用程序设计器简介,第一部分

 

发布日期: 4/19/2005 | 更新日期: 4/19/2005

Tony Loton
LOTONtech Limited

摘要:实用简介:从面向服务的系统设计开始学习应用程序设计器。

下载 ApplicationDesignerExample.exe 文件。

*
本页内容
简介 简介 分布式系统设计器环境中的应用程序设计器 分布式系统设计器环境中的应用程序设计器 创建分布式系统解决方案 创建分布式系统解决方案 应用程序与原型 应用程序与原型 设计面向服务的应用程序 设计面向服务的应用程序 小结 小结

简介

本文,我将为您介绍应用程序设计器,它是 Visual Studio 2005 Team Architect Edition 提供的 4 个新分布式系统设计器中的一员。

首先,我将解释应用程序设计器是如何与其他可视化设计器作为一致的工具集进行配合。然后,我将使用一个自己设计的面向服务的货币转换示例,以提供应用程序设计的实际演示。在谈及实际时,我的意思是,将向您展示我是如何真正使用 Visual Studio 2005 Team Architect 来设计该分布式系统的。

在本系列的第二部分,我将讨论在本文开始部分设计的面向服务示例的实现。最后,我会以论述如何在整体设计中整合某些其他应用程序类型(即,外部 Web 服务和外部数据库)作为本文的结束。

返回页首返回页首

分布式系统设计器环境中的应用程序设计器

Visual Studio 2005 Team Architect Edition 提供 4 个可视化设计器,统称为分布式系统设计器。如图 1 所示,这些设计器协同工作,因此在深入研究任何一个设计器之前,都应该首先查看整套工具之间的关系,这一点非常重要。


1. 分布式系统设计器

您可以使用应用程序设计器来定义包含分布式系统的应用程序。然后,您可以在系统设计器中使用这些应用程序定义,将应用程序组合到可部署的系统中。之后,您可以使用部署设计器来评估系统部署。

您可以单独使用逻辑数据中心设计器,来定义一个将在其中部署应用程序(这些应用程序组成了系统)的目标数据中心的逻辑表示形式。因此,部署设计器不仅将系统设计器的一组系统定义作为输入,而且将逻辑数据中心设计器的一组逻辑服务器定义也作为输入。

这一系列文章描述图中所示的分布式系统设计器中的每个设计器。您现在阅读的这篇文章将重点介绍应用程序设计器。

返回页首返回页首

创建分布式系统解决方案

在开始使用应用程序设计器设计分布式系统之前,您必须首先在 Visual Studio 中创建一个分布式系统解决方案,或者将一个应用程序关系图添加到现有的解决方案中。创建分布式系统解决方案很容易。在创建新项目时,您只需从分布式系统解决方案项目类型中选择“Distributed System”模板。

最初,新的解决方案包含一个具有 .ad 扩展名的应用程序关系图,它的名称与该解决方案的名称相同。如果您和我一样,将解决方案命名为 ApplicationDesign,那么应用程序关系图将被命名为 ApplicationDesign.ad。您只能在解决方案中包含一个应用程序关系图,原因在于关系图根据相互连接的应用程序来描述解决方案的整体结构。然而,一个解决方案可以有多个系统关系图、部署关系图,以及逻辑数据中心关系图。

返回页首返回页首

应用程序与原型

应用程序设计器将重点放在设计适合面向服务(例如,ASP.NET Web 服务)的体系结构 (SOA) 的应用程序。应用程序设计器中的工具箱包含用于设计应用程序的应用程序原型。每个原型都描述基本应用程序类型的一种预先配置的版本。因此,将某个原型拖到应用程序关系图,就可以创建一个基本类型的应用程序,它是按照该原型的定义进行配置的。

工具箱包括两种基于 ASP.NET 的原型。ASP.NET Web 服务由带有一个或多个 Web 服务终结点的 ASP.NET 应用程序表示。因此,ASP.NETWebService 原型可以创建带有默认 Web 服务提供程序终结点的 ASP.NET 应用程序。ASP.NETWebApplication 原型可以创建带有 Web 内容终结点的 ASP.NET 应用程序。本主题包含有关终结点的详细信息。

下表描述支持的其他应用程序类型及其相关原型:

Windows 应用程序: WindowsApplication 原型

Office 应用程序: OfficeApplication 原型

外部或第三方 Web 服务: ExternalWebService 原型

外部数据库: ExternalDatabase 原型

BizTalk Web 服务: BizTalkWebService 原型

通用应用程序(针对所有其他应用程序类型): GenericApplication 原型

您还可以加载由 Microsoft 或第三方提供的其他应用程序类型和原型,或者使用应用程序的现有基本类型或已添加到应用程序的终结点来创建自己的自定义原型。

Microsoft 提供的某些应用程序类型(尤其是 ASP.NET 应用程序和 Windows 应用程序)利用代码来支持完整的往返体验。即,对代码所做的更改将在设计器中有所反映,而在设计器中所做的更改也会在代码中得到反映。此外,其他应用程序类型(尤其是外部 Web 服务、BizTalk Web 服务和外部数据库),都可以用来帮助您定义从应用程序到外部资源的连接。GenericApplication 原型可以提供一种简单方式来记录不支持的其他类型的应用程序,例如,Unix 应用程序或 CICS 事务应用程序。这是扩展性的一种基本形式。要获得更高级的扩展性,您还可以使用 SDK 来创建新的基本类型和原型。应用程序设计器中的原型在很多方面都与统一建模语言 (UML) 的定型 (stereotype) 类似,但比 UML 提供的简单标记机制要强大得多。

返回页首返回页首

设计面向服务的应用程序

让我们通过一个示例来研究如何使用应用程序设计器。在该示例中,我将尽量保持示例本身简单,而将注意力放在 ASP.NETWebApplication 和 ASP.NETWebService 原型上,您可以使用它们来设计面向服务的系统。随后,我将告诉您如何将其他的应用程序类型加入到设计中。

图 2 展示我构思的整体设计。


2. 面向服务的体系结构的应用程序关系图

前端是两个 ASP.NET Web 应用程序,每个应用程序专门负责将金额转换为指定的货币。DollarExchangeApp 提供一个能以一种货币指定金额并将其转换为美元的窗体,而 EuroExchangeApp 则可以将指定金额转换为欧元。

设计的下一层包含一个公开了两项 Web 服务的 ASP.NET Web 应用程序:

其中一个服务支持转换到美元 — USDollarService

另一个服务支持转换到欧元 — EuroService

尽管在该设计中每个 Web 服务都通过一个专用的前端应用程序公开,但是如果能够为所有的货币转换设计一个连接到这两种 Web 服务的单独 ExchangeApp 前端应用程序,效果将非常好。

所有的货币转换均取决于如何确定货币之间的当前市场汇率,因此下一层设计将包括一个 ASP.NET Web 应用程序,该应用程序公开一个 Web 服务来提供此信息。对于第三方提供的外部 Web 服务,ExchangeRateService 是一个不错的候选对象,但现在我要使用 BureauDeChange 应用程序来提供自己的实现。

设计考虑事项

本示例演示设计面向服务的体系结构 (SOA) 的两项重要原则。第一项原则是,服务可以使用其他服务。第二项原则是,可以根据这些服务的应用程序特定性、业务通用性或技术依赖性来对它们进行分层。

CurrencyConverter 向 DollarExchangeApp 和 EuroExchangeApp 表示应用程序提供应用程序特定的服务。而它又使用一个由 BureauDeChange 应用程序提供的、更为通用的服务,名为 ExchangeRateService。

本示例还演示单一应用程序 (CurrencyConverter) 可以通过多个提供程序终结点来支持多个服务(USDollarService 和 EuroService),从而反映 UML 中单一组件公开多个接口的概念。

设计应用程序

正如我说过的,应用程序设计是通过将应用程序原型从工具箱拖到该关系图来构造的。我拖动了两个 ASP.NETWebApplication 原型(分别为 DollarExchangeApp 和 EuroExchangeApp)和两个 ASP.NETWebService 原型(分别为CurrencyConverter 和 BureauDeChange 应用程序)。您可能对此感到奇怪,为什么关系图上显示的所有应用程序都标记为 ASP.NETWebApplication?

这里的微妙之处在于,当您将 ASP.NETWebApplication 原型拖到设计图面时,使用默认的 Web 内容终结点对其进行修饰,而当您将 ASP.NETWebService 原型拖到设计图面时,则使用默认的 Web 服务终结点对其进行修饰。因此,ASP.NETWebService 原型实际上是一个 ASP.NETWebApplication 原型,它将 Web 内容终结点删除,然后添加一个 Web 服务终结点,以便为您提供方便。

您可以基于现有的原型来定义自己的应用程序原型,并将其添加到工具箱中。但这个话题已经超出了本文的范围。

引入了术语终结点 之后,现在我要定义这个术语。

终结点和连接

应用程序通过终结点进行通信,对于要连接到一起的两个应用程序,必须在连接的一端有一个提供程序终结点,在另一端有一个使用程序终结点。

BureauDeChange 有一个默认的 Web 服务提供程序终结点,我将其重命名为 ExchangeRateService。我只需按 ALT 键,并将连接线从提供程序终结点拖到 CurrencyConverter 应用程序,即可将此终结点连接到 CurrencyConverter 应用程序。这会自动在 CurrencyConverter 上创建适当的使用程序终结点。

CurrencyConverter 应用程序有一个默认的 Web 服务终结点,我将其重命名为 USDollarService,并以刚才描述的方式将其连接到 DollarExchangeApp 上。我将另外一个 Web 服务终结点从工具箱拖到 CurrencyConverter 上,将其命名为 EuroService 并连接到 EuroExchangeApp。

因为本例不需要,所以我删除了 DollarExchangeApp 和 EuroExchangeApp 应用程序上默认的 Web 内容提供程序终结点。

您可以在 ASP.NET Web 应用程序上创建任意数目的 Web 服务终结点或 Web 内容终结点,而无需考虑这些应用程序是基于 ASP.NETWebApplication 原型还是基于 ASP.NETWebService 原型。最终,它们都是 Web 应用程序。

Web 服务详细信息

右键单击 ASP.NET 应用程序上的 Web 服务提供程序终结点,并从上下文菜单选择 Define Operations,通过该菜单您可以使用“Web Service Details”窗口来查看和更改为此 Web 服务所定义的操作。

如图 3 所示,我已将该 Web 服务定义为一个带有 getExchangeRate 操作的服务,该操作根据两个作为 String 参数提供的货币代码来返回一个双精度值(汇率转换因数)。


3. ExchangeRateService Web 服务详细信息

根据需要,您可以通过单击 和 指示器来添加其他操作和参数。

对于这个示例,我指定了两个由 USDollarService Web 服务提供的操作,如图 4 所示。可以将金额从欧元或英镑转换成美元。


4. USDollarService Web 服务详细信息

EuroService 的 Web 服务详细信息(未显示)大体上相同,唯一的不同之处在于,fromDollars 操作替换了 fromEuros 操作。

尝试一下!

利用我为您提供的信息,您应该可以尝试着亲自使用 Microsoft Visual Studio 2005 December CTP(或更高版本)来设计这个应用程序。如果您对此还没有把握,则可以加载我为本文附带的下载提供的示例。如果只需要创建一个新的分布式系统解决方案,请删除默认的应用程序关系图 (.ad) 文件,然后使用 Add Existing Item 选项来添加我提供的 ApplicationDesign.ad 文件。

设置和约束

正如您可以查看和修正 Web 服务提供程序终结点的 Web 服务详细信息一样,您也可以查看和修正终结点或整个应用程序的设置和约束。设置控制应用程序或运行时环境的行为。在应用程序中,约束限制可以宿主该应用程序的逻辑服务器类型。在终结点,约束限制应用程序终结点可以绑定的逻辑服务器终结点的类型。图 5 显示 CurrencyConverter 应用程序的设置和约束,默认情况下,将此应用程序限制为由 IIS Web 服务器宿主。


5. CurrencyConverter 的设置和约束

这意味着,将此应用程序部署到一个由逻辑数据中心关系图(将在本系列的后面讨论)的逻辑服务器所表示的服务器上时,该服务器必须具有适当的 IIS Web 服务器设置。否则,将无法满足约束,因而应用程序就无法成功部署到该服务器。

在图 5 中,之所以没有选择“Operating System”约束,是因为只要能够满足 IISWebServer 约束,就可以将此 Web 应用程序部署到运行任何操作系统的服务器上。

对于终结点,WebSiteEndpoint 约束将是一个典型的约束,该约束限制带有 Web 服务终结点的应用程序 (CurrencyConverter),该应用程序将由一个带有 Web 站点终结点的服务器宿主。

您将会在我为系统设计器撰写的文章中再次碰到“Settings and Constraints”编辑器,此编辑器允许重写应用程序上的设置。在本系列后面的文章中,当您发现在目标数据中心是如何使用部署设计器来评估应用程序系统的部署时,您将真正明白设置这些值的含意。

返回页首返回页首

小结

正如本文图 1 所示,应用程序设计器代表 Team Architect 拼图中的一块。您可以看到,作为一种设计应用程序的方式,它是多么有用。

Tony Loton 是一位 Microsoft 认证专家 (MCP),他身兼数职,如 LOTONtech Limited 的首席顾问/主管、Cogenture 的 Microsoft 实践首席顾问/首脑,以及英国 Open University 的助理讲师。目前他正在与人合著 Professional Visual Studio 2005 Team System (ISBN 0764584367) 一书,该书将于 2005 年夏天由 Wiley/Wrox 出版。

转到原英文页面