技术开发 频道

Team Architect Edition设计器简介(二)

    尝试一下!

    假定您已经重新创建了我的应用程序设计,或者从我提供的 ApplicationDesigner.ad 文件加载了该程序,那么您现在可以尝试着实现这些应用程序。使用相关的语言设置要实现的每个应用程序,然后右键单击此关系图的空白部分并选择 Implement All Applications。

    您可能希望首先复制一份 ApplicationDesign.ad 文件,这是因为一旦您实现了该文件中的应用程序,如果不重新实现所有的定义,就无法将此关系图作为另一个解决方案中应用程序设计的基础。

    编码实现

    尽管我已经使用 Visual Studio 为所有的应用程序生成了主干实现,但这些实现此时还不具备任何有用的功能。然而,许多困难的工作已经完成,因此使这些应用程序端到端工作不需要使用很多额外的代码,至少对于演示是这样。

    让我们来看一看这些应用程序中的每一个,然后浏览我添加到每个实现中以使其正常工作的额外代码。

    BureauDeChange 实现

    如果回顾一下图 2,您就会看到在 BureauDeChange 应用程序项目中列出的 ExchangeRateService.asmx 文件。该文件的内容和该 Web 服务的入口点如下所示:
<%@ webservice class="BureauDeChange.ExchangeRateService" language="c#" codebehind="~/Application_Code/ExchangeRateService.cs" %>
    根据上面这段信息,我可以确定实现该服务的代码隐藏文件,并在解决方案资源管理器中定位到此文件,或者只需右键单击 .asmx 文件,然后从 Context 菜单选择 View Code。

    以下清单显示在服务实现的起始阶段由 Visual Studio 生成的主干代码。请注意,其中包含我输入的注释,这些注释是本系列第一部分中的摘要信息的一部分。
namespace BureauDeChange { [System.Web.Services.WebServiceBinding(Name = "ExchangeRateService")] public class ExchangeRateService : System.Web.Services.WebService { /// /// 该操作提供 fromCurrency 和 toCurrency 之间的交易转换率。 /// /// 货币代码,如“USD”或“EUR”。 /// 货币代码,如“USD”或“EUR”。 [System.Web.Services.WebMethod(), System.Web.Services.Protocols.SoapDocumentMethod(Binding = "ExchangeRateService")] public double getExchangeRate(string fromCurrency, string toCurrency) { throw new System.NotImplementedException(); } } }
    它包含在应该执行的 getExchangeRate 操作的方法体,所以我对此进行了修改,直接在 throw 语句前面加入了以下代码行:
if (fromCurrency.Equals("USD") && toCurrency.Equals("EUR")) return 0.78; if (fromCurrency.Equals("EUR") && toCurrency.Equals("USD")) return 1.28;
    为了方便起见,我选择了保留 throw 语句作为该方法的最后一行,这样,对于任何尚未实现的货币转换,都会引发 NotImplementedException。根据实际情况,这意味着可以对英镑进行双向转换,如果您有兴趣,可以在尝试这个程序时添加此功能。

    添加以上这些代码行并保存更改之后,我可以测试这个 Web 服务。因此,我右键单击 ExchangeRateService.asmx 文件,然后选择 View in Browser,此时会看到一个类似于图 3 的页面,只不过这次列出的是 ExchangeRateService 的 getExchangeRate 操作。

    选择这个操作,进入图 4 所示的窗体,在调用此 Web 服务前,我可以使用该窗体为 fromCurrency 和 toCurrency 输入参数。
图 4. getExchangeRate Web 服务操作

    这正是我由衷喜欢 Web 服务的一个原因 — 可以使用一个自动生成的 HTML 窗体对其进行测试,而不必首先实现一个真实的客户端。

    图 5 给出了该 Web 操作调用的结果。快速回顾一下这段代码来确认这个结果 — 0.78,与我期望的完全相同。我可以重新测试该服务,方法是将“EUR”作为 fromCurrency 的参数,而将“USD”作为 toCurrency 的参数来产生结果 1.28。
图 5. getExchangeRateService 结果

    按照我上面给出的步骤,您可以非常顺利地编写此实现的代码并对其进行测试。但是我建议,在我介绍完所有这些实现之后,您在这一部分的最后正式地尝试一次。

0
相关文章