技术开发 频道

Team Architect Edition设计器简介(二)

     CurrencyConverter 实现

    CurrencyConverter 应用程序提供两项 Web 服务。我将向您展示我如何完成 USDollarService 的实现,至于如何实现补充的 EuroService 需要您自己去领会。正如您将看到的,这并不是什么高深的火箭科学。

    首先,我右键单击 USDollarService.asmx 文件,然后选择 View Code。Visual Studio 生成的主干代码如下所示:
Imports System.Web Imports System.Web.Services Imports System.Web.Services.Protocols Namespace CurrencyConverter <System.Web.Services.WebServiceBinding(Name:="USDollarService")> _ Public Class USDollarService Inherits System.Web.Services.WebService ''' <System.Web.Services.WebMethod()> _ <System.Web.Services.Protocols.SoapDocumentMethod(Binding:="USDollarService")> _ Public Function fromEuros(ByVal amount As Double) As Double End Function ''' <System.Web.Services.WebMethod()> _ <System.Web.Services.Protocols.SoapDocumentMethod(Binding:="USDollarService")> _ Public Function fromPoundsSterling(ByVal amount As Double) As Double End Function End Class End Namespace
    为了完成 Web 服务的实现,我将几行代码输入到 Web 方法体中。如果是 fromEuros 方法,则所需的代码为:
Dim rate As Double Dim exchangeService As New CurrencyConverter.WebServiceProxies.ExchangeRateService rate = exchangeService.getExchangeRate("EUR", "USD") Return amount * rate
    这段代码的作用是设置 BureauDeChange 应用程序提供的 ExchangeRateService 的一个代理,调用该服务的 getExchangeRate 操作,再将提供的金额(单位为欧元)与汇率相乘,然后以美元为单位返回金额。

    注代理是一个本地对象,您可以将它作为远程 Web 服务本身(虽然它实际上不是)来调用。代理在内部发出适当的 SOAP 请求并对响应进行解包,而您无需了解它是如何工作的。实际上,代理从概念上填写了图 4 中的窗体并捕获如图 5 所示的响应。

    一旦输入并保存了这段代码,我就能够测试由 CurrencyConverter 应用程序的 USDollarService 提供的 fromEuros 操作的实现,方式与我以前测试 BureauDeChange 应用程序的 ExchangeRateService 提供的 getExchangeRate 操作完全相同。只需在浏览器中查看 USDollarService.asmx 文件,选择 fromEuros 操作,然后填写一个类似于图 4 所示的 HTML 窗体,不过这次要求输入金额(单位为欧元)。

    当我输入的金额为 100 欧元时,以美元为单位的响应如下所示:
<?xml version="1.0" encoding="utf-8" ?> <double xmlns="http://tempuri.org/">128</double>
    DollarExchangeApp 实现

    我现在要描述的 DollarExchangeApp 实现也可以用于演示 EuroExchangeApp 的实现,这几乎是完全相同的。在开始时,Visual Studio 将生成一个默认的 Web 页 — Default.aspx,其内容如下。
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="Default_aspx" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>Untitled Page</title> </head> <body> <form id="form1" runat="server"> <div> </div> </form> </body> </html>
    我使用 Web 窗体设计器构造应用程序的 UI,您可以提前看一看下面的图 6 以对此有一个感性认识。设计完窗体之后,下面的 HTML 代码会出现在上述清单的 <div> 和 </div> 标记之间:
<asp:Label ID="Label1" Runat="server" Text="Enter amount in Euros" Width="142px" Height="19px"></asp:Label> <asp:TextBox ID="euroAmount" Runat="server"></asp:TextBox> <asp:Button ID="convertButton" Runat="server" Text="Convert to US Dollars" OnClick="convertButton_Click" /> <br /> <asp:Label ID="Label2" Runat="server" Text="Amount in US Dollars is" Width="158px" Height="19px"> </asp:Label> <asp:TextBox ID="dollarAmount" Runat="server"></asp:TextBox>
    当您亲自实现这个应用程序时,只需将这段代码粘贴到 Default.aspx 文件而不用自己重新设计该窗体。

    除了 UI 代码之外,我还需要一个用于按钮的事件处理程序,因此我在窗体设计视图中双击此按钮,然后输入以下代码。
Protected Sub convertButton_Click(ByVal sender As Object, ByVal e As System.EventArgs) Dim dollarService As New DollarExchangeApp.WebServiceProxies.USDollarService dollarAmount.Text = dollarService.fromEuros(Double.Parse(euroAmount.Text)) End Sub
     这段代码创建一个 USDollarService 的代理,并对它进行调用,调用方式与先前 USDollarService 调用 ExchangeRateService 所采用的方式相同。

    从名为 euroAmount 的文本框中获得要从欧元转换为美元的金额,在带有 dollarAmount 标记的文本框中显示以美元为单位的结果金额。图 6 显示我测试该应用程序时发生的情况。
图 6. DollarExchangeApp


    尝试一下!

    现在,您可以按照上面的描述,尝试着完成 DollarExchangeApp 和补充的 EuroExchangeApp 的实现。如果您还未这样做,那么您首先需要完成其他 Web 服务应用程序的实现。
0
相关文章