如何制作一个简单的 WebService 并消费它
如何制作一个简单的 WebService 并消费它
引言
我们经常谈论 webservice,webservice 可以做什么,webservice 可以实现什么。但当我们被要求创建一个时,我们却犹豫了。也许是因为我们以前从未创建过 webservice,而一直以来都是在 Webforms、Windows Forms 甚至控制台应用程序中进行开发。顺便说一句,我喜欢控制台应用程序。在这篇文章中,我将向您展示如何创建一个简单的 webservice,并由一个控制台应用程序客户端来调用它。
创建 WebService
首先,启动您的 Visual Studio .NET,然后在项目类型中选择 ASP.NET WebService。在左窗格中,选择您喜欢的语言。在本例中,我将使用 Visual C# .NET。选择项目后,将出现一个页面,该页面更像一个设计页面,切换到其代码视图。在代码视图中,您会看到很多注释和已经为您写好的 C# 代码。您还会注意到,在底部有一个 `HelloWorld` 方法,这是默认为您编写的,所以您可以测试您的服务,当然也可以向世界问好。在删除不需要的代码和注释后,您的代码将如下所示:
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Web;
using System.Web.Services;
namespace WebServiceExample
{
public class Service1 : System.Web.Services.WebService
{
public Service1()
{
InitializeComponent();
}
// Add the Description Attribute so you
// will know the purpose of your WebService
[WebMethod(Description="This Method prints HelloWorld")]
public string HelloWorld()
{
return "Hello World";
}
}
}
让我们深入研究一下这段小代码。[WebMethod]
特性表示该方法将被客户端使用,并且该方法必须是 `public` 的,以便客户端能够使用它。`WebMethod` 特性中的描述只是给方法赋予了更深的含义。不用担心 `InitializeComponent()` 方法,因为它是默认写入的。
运行 WebService
好的,现在您已经创建了您的第一个超棒的 WebService(甚至没有写一行代码)。让我们运行它,看看它是否能给出正确的结果。在解决方案资源管理器中,右键单击 .asmx 文件,然后选择 **在浏览器中查看**,如下图所示:
单击“**在浏览器中查看**”后,您将看到的下一个屏幕如下所示:
我已经删除了大部分内容,所以您只能看到本例中需要的方法。下面,您可以看到 `HelloWorld` 方法以及您为该方法编写的描述。
现在,单击 `HelloWorld` 方法。我不想用所有生成的 SOAP 和 HTTP 代码来吓唬您,所以我只粘贴与本例相关的屏幕截图。
好了,到目前为止一切顺利。现在,只需按 **Invoke** 按钮即可查看名为 `HelloWorld()` 的方法的运行结果。
这太酷了。您刚刚测试了您的第一个 webservice,并且它运行正常,因为您还没有编写代码。我知道您现在在想什么。客户端会看到这种奇怪格式的结果吗(这是 XML 格式)?当然不是。这就是为什么您需要创建一个 `Proxy` 类来调用这个服务。
创建代理客户端
让我们创建一个调用此服务的控制台应用程序。您可以使用任何语言和平台来调用此服务,这就是 XML WebService 的目的。现在,此过程需要一些鼠标点击 :)。所以我会写下步骤而不是粘贴屏幕截图。
- 启动一个新项目,该项目将是一个 Visual C# .NET 中的控制台应用程序。
- 在控制台应用程序中看到代码视图后,右键单击解决方案资源管理器中的项目名称。请记住,项目名称将以粗体显示。
- 单击“**添加 Web 引用**”。
- 粘贴您的 WebService 的 URL。当您在 Internet Explorer 或任何其他浏览器中查看您的 webservice 时,可以获取您的 WebService 的 URL。
- 单击 GO。
- 您的 webservice 将被加载。在 Web Reference Name 文本框中,输入“
MyService
”并单击 Add Reference。 - 您会看到,Web 引用已添加到您的解决方案资源管理器中,这意味着 webservice 已准备好大显身手。
现在,您只需要使用您提供的引用名称“MyService
”来创建 `WebService` 类的实例。
using System;
namespace MyClient
{
class Class1
{
[STAThread]
static void Main(string[] args)
{
// Make an instance of the WebService Class
// using the Web Reference you provided
MyService.Service1 service = new MyService.Service1();
// Assign message what ever is returned
// from HelloWorld in this case "HelloWorld"
string message = service.HelloWorld();
// Prints out the message on the screen
Console.WriteLine(message);
}
}
}
就是这样。您可以像使用其他类一样使用 `webservice` 类。您需要记住的一点是,如果您决定在 `webservice` 中创建一个新方法并希望将其提供给客户端,那么请务必重新生成您的 `webservice` 解决方案,以便更新程序集。如果您不重新生成 `webservice`,您将无法在客户端看到这些方法。
我想就是这样了!!