Microsoft? .NET Framework 最令人激动的一点是包含了可扩展标记语言 (XML) Web Service。Web 服务允许应用程序间以基于标准的方式来通信和交换信息。Microsoft 的 Web 服务的实现有许多内在的好处。使用超文本传输协议 (HTTP) 和传输控制协议/Internet 协议 (TCP/IP),可以以 XML 格式交换信息。因此,Web 服务使用现有结构,可以在现有环境中方便地实现。
本文中,我们将使用 Microsoft GotDotNet Web 站点上的 EightBall Web 服务。我们将创建一个 Web 页,该页将向 EightBall Web 服务发送请求。EightBall Web 服务将接受并处理请求,并发回一个响应,可以在我们的 Web 页上显示该响应。这个使用 Web 服务的响应的过程就是所谓的“使用”Web 服务。
使用 Web 服务的要求
要使用 Web 服务,必须具有几个组件。如果您使用的是 Microsoft Visual Studio? .NET,那么这些组件会自动安装到合适的位置。而为了实现本文的目标,我们将采用 Microsoft FrontPage? 的 Web 站点创建和管理工具来使用 Web 服务。
要利用 FrontPage 来使用 Web 服务,您需要具备:
1 Microsoft .NET Framework 软件开发工具包 (SDK)
2 Microsoft Internet Information Services (IIS,Windows? 2000 Server 操作系统内置的 Web 服务器)
3 Web 服务代理
4 ASP.NET Web 窗体
Microsoft .NET Framework SDK
Microsoft .NET Framework 提供了用于 Microsoft .NET 平台的编程模型。它允许我们创建完善的 Web 服务和应用程序。.NET Framework 允许创建 ASP.NET 页,该页是使用 EightBall Web 服务时所必需的。要完成本文所述的这些步骤,您需要具有 .NET Framework SDK。
Microsoft Internet Information Services
我们必须具有 Web 服务器,而且 Web 服务器必须支持 ASP.NET。可以在 Windows 2000 或 Windows XP 上使用 Microsoft Internet Information Services。可能还需要安装必要的安全更新。
客户端和 Web 服务之间使用简单对象访问协议 (SOAP) 消息来通信。详细信息请参阅 SOAP 站点。Web 服务代理负责形成 SOAP 消息并通过网络发送这些消息。这使得使用 Web 服务异常容易,因为无需将参数映射给 XML 元素。Web 服务代理包括本地 Web 服务器上的动态链接库 (DLL)。使用 .NET Framework SDK 附带的名为 WSDL.exe 的实用程序,可以生成 Microsoft Visual Basic? .NET 或 C# 的源代码文件,然后使用该文件来编译 Web 服务代理。这是非常容易实现的,稍后我们将进行更加详细的说明。
ASP.NET Web 窗体
我们需要为用户提供一种向 EightBall 服务提问的方式。我们将使用 ASP.NET Web 窗体来实现这一目的。因为 FrontPage 不具备在用户界面中生成 ASP.NET 组件的能力,我们将在 HTML 视图中通过手动编码生成 Web 窗体。
为使用 Web 服务做准备
如果您已经安装了 Microsoft .NET Framework SDK 和 Internet Information Services,我们就可以马上探究如何使用 EightBall Web 服务了。以下是使用 Web 服务需要采取的步骤:
1. 检查 Web 服务。
2. 生成源代码文件。
3. 编译 Web 服务代理。
4. 设计 ASP.NET 界面。
5. 连接 Web 服务。
6. 复制代理。
7. 测试 ASP.NET 应用程序。
检查 Web 服务
为了检查 Web 服务和查看其提供的信息类型,我们浏览到 Web 服务入口点。该特定 Web 服务的链接是 http://www.gotdotnet.com/playground/services/EightBall/eightballws.asmx。如果您浏览至该 URL,将会看到该 Web 服务所支持的操作的列表。本例中,您将会看到指向 Ask 操作的链接。
图 1:用于 Ask 操作的 HTTP Post 信息
如果单击指向 Ask 操作的链接,将会看到 SOAP 请求和 Web 服务响应的实例。如果检查该请求和响应,将会发现 Ask 操作要求传递给它一个字符串(注意 HTTP POST 段中的“psQuestion=string”文本)并返回一个字符串。该页上包括一个文本框,可以在其中键入问题并接收来自 EightBall Web 服务的 XML 格式的回答。
要在 FrontPage 中设计界面来使用该 Web 服务,需要使用该信息。通过检查 Web 服务入口点的信息,我们断定需要设计一个窗体,窗体上要有一个文本框用于输入问题,并且要有一个按钮用来向 Web 服务提交问题。然后需要提供一个页面元素来包含从 Web 服务返回的回答。以后我们将深入讨论。现在,我们需要生成源程序代码,用来编译 Web 服务代理类。
生成源代码文件
用于 Web 服务的实际 .NET 程序集驻留在装载了该 Web 服务的 Web 服务器上。然而,客户端的代理类负责为 Web 服务创建格式正确的 SOAP 请求。因此,我们需要在本地 Web 服务器上创建充当代理类的 .NET 程序集。使用 Microsoft 的 .NET Framework SDK 中提供的工具可以很容易地完成此操作。
要生成代理类的源代码文件,我们将使用 Web 服务说明语言实用程序,即 WSDL.exe。您可以在安装了 .NET Framework SDK 的目录中找到该实用程序。(默认情况下,该实用程序将被安装在 c:\Program Files\Microsoft Visual Studio .NET\FrameworkSDK\Bin 文件夹中。)WSDL.exe 允许我们为代理类创建源文件。
生成源文件之前,请在驱动器 C 的根目录中创建一个用于 Web 服务文件的目录。将该目录命名为 8Ball。创建该目录后,我们就可以生成使用 EightBall Web 服务所必需的文件了。
将问题传递给 Ask 操作的方式是:将之前创建的 TextBox Web 窗体控件 (tbQuestion) 的 Text 属性传递该操作。我们已经知道 Web 服务的 Ask 操作将答案作为字符串传回给我们。因此,执行了上面的行后,strAnswer 将包含从 Web 服务返回的问题答案组成的字符串。
剩下要做的事情就是显示我们检索的答案。要完成此操作,需要将 strAnswer 中包含的值赋给 Label 控件的 Text 属性。
lblAnswer.Text = strAnswer
现在保存该页面。确保页面保存为 8ball.aspx。
复制代理类
测试新的 ASP.NET 页前要做的最后一步是,将已编译的代理类复制到 ASP.NET 应用程序中正确的位置。
1. 在 FrontPage 站点中创建新文件夹并命名为 bin。
2. 将之前编译的 8BallClient.dll 文件导入到该文件夹。
测试 ASP.NET 应用程序
现在我们可以测试 ASP.NET 应用程序了。浏览到 8ball.aspx 页面。您会看到一个文本框和一个按钮。在文本框中输入问题并单击按钮。您将看到文本框下方会显示来自 Web 服务的响应。
图 2:操作中的 EightBall Web 服务
小结
在本文中,我们创建了一个非常简单的 ASP.NET Web 窗体,以通过 Microsoft FrontPage 使用 Web 服务。我们已经展示了 XML Web Service 体系结构的优点,并说明了通过访问 Web 服务入口点来查找关于 Web 服务特定信息的方法。 使用简单的 Web 服务(例如 EightBall Web 服务)是非常容易的。如果希望使用复杂的 Web 服务,您可能需要考虑使用 Microsoft Visual Studio .NET,因为它提供了强大的工具集,可用于使用 Web 服务,并可以在所见即所得 (WYSIWYG) 的环境中设计 ASP.NET Web 窗体。