📜  Web服务-示例

📅  最后修改于: 2020-10-17 06:25:05             🧑  作者: Mango


基于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


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开始。

  • 打开开始→设置→控制面板→管理工具→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(http://localhost/MyWebServices/FirstService.asmx)中打开Web服务。它应该打开您的Web服务页面。该页面应具有指向我们的应用程序公开为Web服务的两种方法的链接。恭喜你!您已经编写了第一个Web服务!

测试Web服务

正如我们已经看到的,在.NET Framework中编写Web服务很容易。在.NET框架中,编写Web服务使用者也很容易。但是,它涉及更多。如前所述,我们将编写两种类型的服务使用者,一种是基于Web的使用者,另一种是基于Windows应用程序的使用者。让我们写我们的第一个Web服务使用者。

基于Web的服务使用者

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

此应用程序有两个文本字段,用于从要添加的用户那里获取数字。它具有一个执行按钮,单击该按钮即可获取Add和SayHello Web服务。

WebApp.aspx




    
   
   
      

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

Second Number To Add : 5

Web Service Result -

Hello world Service :

Add Service : &

创建使用者后,我们需要为要使用的Web服务创建代理。当引用添加的Web服务时,Visual Studio .NET会自动为我们完成这项工作。这是要遵循的步骤-

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

c:> WSDL http://localhost/MyWebServices/FirstService.asmx?WSDL
c:> csc /t:library FirstService.cs
  • 将已编译的代理放在Web服务虚拟目录(c:\ MyWebServices \ bin)的bin目录中。 Internet信息服务(IIS)在此目录中查找代理。

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

  • 在IE中键入使用者的URL进行测试(例如,http://localhost/MyWebServices/WebApp.aspx)。

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

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

WinApp.cs

using 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服务器。它应该工作。