技术开发 频道

Team Architect Edition设计器简介(一)

    前端是两个 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 服务详细信息

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

   

0
相关文章