开发手册 欢迎您!
软件开发者资料库

Web服务 - 示例

Web服务示例 - 从简单和简单的步骤学习Web服务,从基本到高级概念,包括什么是Web服务,为什么选择Web服务,特性,XML,肥皂,HTTP,Web服务体系结构,组件,示例,安全问题和可用标准。

基于Web服务体系结构,我们创建以下两个组件作为Web服务实现的一部分 :

服务提供者或发布者

这是Web服务的提供者.服务提供商实现该服务并使其在Internet或Intranet上可用.

我们将使用.NET SDK编写和发布简单的Web服务.

服务请求者或消费者

这是Web服务的任何消费者.请求者通过打开网络连接并发送XML请求来利用现有的Web服务.

我们还将编写两个Web服务请求者:一个基于Web的使用者(ASP.NET应用程序)和另一个基于Windows应用程序的消费者.

以下是我们的第一个Web服务示例,它作为服务提供者工作,并公开两个方法(add和SayHello)作为应用程序使用的Web服务.这是Web服务的标准模板. .NET Web服务使用.asmx扩展名.请注意,作为Web服务公开的方法具有WebMethod属性.将此文件保存为IIS虚拟目录中的FirstService.asmx(如配置IIS中所述;例如,c:\ MyWebSerces).

FirstService.asmx<%@ WebService language = "C#" class = "FirstService" %>using System;using System.Web.Services;using System.Xml.Serialization;[WebService(Namespace = "http://localhost/MyWebServices/")]public class FirstService : WebService{   [WebMethod]   public int Add(int a, int b) {      return a + b;   }   [WebMethod]   public String SayHello() {      return "Hello World";   }}

要测试Web服务,必须发布它. Web服务可以在Intranet或Internet上发布.我们将在本地计算机上运行的IIS上发布此Web服务.让我们从配置IIS开始.

  • 打开Start → 设置 → 控制面板 → 管理工具 →  Internet服务管理器.

  • 展开并右键单击默认网站;选择New&#rarr;虚拟目录.将打开"虚拟目录创建向导".单击"下一步".

  • 将打开"虚拟目录别名"屏幕.输入虚拟目录名称.例如,MyWebServices.单击下一步.

  • 将打开"网站内容目录"屏幕.

  • 输入虚拟目录的目录路径名.例如,c:\ MyWebServices.单击"下一步".

  • 将打开"访问权限"屏幕.根据您的要求更改设置.让我们保留此练习的默认设置.

  • 单击"下一步"按钮.它完成了IIS配置.

  • 单击"完成"以完成配置.

要测试是否已正确配置IIS,请在上面创建的虚拟目录(C:\ MyWebServices)中复制HTML文件(例如,x.html).现在,打开Internet Explorer并键入 http://localhost/MyWebServices/x.html .它应该打开x.html文件.

注意 : 如果它不起作用,请尝试使用计算机的IP地址替换localhost.如果它仍然不起作用,请检查IIS是否正在运行;您可能需要重新配置IIS和虚拟目录.

要测试此Web服务,请在上面创建的IIS虚拟目录(C:\ MyWebServices)中复制FirstService.asmx.在Internet Explorer中打开Web服务(http://localhost/MyWebServices/FirstService.asmx).它应该打开您的Web服务页面.该页面应该包含指向我们的应用程序作为Web服务公开的两个方法的链接.恭喜!您已经编写了第一个Web服务!

测试Web服务

正如我们刚才所见,在.NET Framework中编写Web服务很简单.在.NET框架中编写Web服务使用者也很容易;然而,它涉及更多.如前所述,我们将编写两种类型的服务使用者,一种是基于Web的,另一种是基于Windows应用程序的使用者.让我们编写第一个Web服务使用者.

基于Web的服务使用者

编写一个基于Web的使用者,如下所示.称之为WebApp.aspx.请注意,它是一个ASP.NET应用程序.将其保存在Web服务的虚拟目录中(c:\ MyWebServices \ WebApp.axpx).

此应用程序有两个文本字段,用于从用户获取数字加上.它有一个按钮,Execute,单击时获取Add和SayHello Web服务.

WebApp.aspx<%@ Page Language = "C#" %>   void runSrvice_Click(Object sender, EventArgs e) {      FirstService mySvc = new FirstService();      Label1.Text = mySvc.SayHello();      Label2.Text = mySvc.Add(Int32.Parse(txtNum1.Text),  Int32.Parse(txtNum2.Text)).ToString();   }                         

            First Number to Add :            4<  /asp:TextBox>         

         

            Second Number To Add :            5         

         

            Web Service Result -         

         

            Hello world Service :            Label< /asp:Label>         

         

            Add Service :            & Label         

                              

         

创建消费者之后,我们需要为要使用的Web服务创建代理.在引用已添加的Web服务时,Visual Studio .NET会自动完成此工作.以下是要遵循和减去的步骤;

  • 为要使用的Web服务创建代理.使用随.NET SDK提供的WSDL实用程序创建代理.此实用程序从Web Service中提取信息并创建代理.代理仅对特定Web服务有效.如果需要使用其他Web服务,则还需要为此服务创建代理.添加Web服务引用时,Visual Studio .NET会自动为您创建代理.使用随.NET SDK提供的WSDL实用程序为Web Service创建代理.它将在当前目录中创建FirstSevice.cs文件.我们需要编译它来为Web服务创建FirstService.dll(代理).

c:> WSDL http://localhost/MyWebServices/FirstService.asmx?WSDLc:> csc /t:library FirstService.cs

  • 将编译后的代理放入bin目录Web服务的虚拟目录(c:\ MyWebServices \ bin). Internet信息服务(IIS)在此目录中查找代理.

  • 以与我们相同的方式创建服务使用者.请注意,Web服务代理的对象在使用者中实例化.此代理负责与服务进行交互.

  • 在IE中键入消费者的URL以对其进行测试(例如,http://localhost/MyWebServices/WebApp.aspx).

基于Windows应用程序的Web服务消费者

编写Windows基于应用程序的Web服务使用者与编写任何其他Windows应用程序相同.您只需要创建代理(我们已经完成)并在编译应用程序时引用此代理.以下是我们使用Web服务的Windows应用程序.这个应用程序创建一个Web服务对象(当然,代理)并调用SayHello,并在其上添加方法.

WinApp.csusing System;using System.IO;namespace SvcConsumer {   class SvcEater {      public static void Main(String[] args) {         FirstService mySvc = new FirstService();         Console.WriteLine("Calling Hello World Service: " + mySvc.SayHello());         Console.WriteLine("Calling Add(2, 3) Service: " + mySvc.Add(2, 3).ToString());      }   }}

使用 c:\> csc/编译它r:FirstService.dll WinApp.cs .它将创建WinApp.exe.运行它来测试应用程序和Web服务.

现在,问题出现了:你怎么能确定这个应用程序实际上是在调用Web服务?

测试很简单.停止Web服务器,以便无法联系Web服务.现在,运行WinApp应用程序.它将触发运行时异常.现在,再次启动Web服务器.它应该工作.