Web Service 实例

任何应用程序都可使用 Web Service。

Web Services 的创建与编程语言的种类无关。


一个实例:ASP.NET Web Service

在这个例子中,我们会使用 ASP.NET 来创建一个简单的 Web Service。

  1. <%@ WebService Language="VB" Class="TempConvert" %>
  2. Imports System
  3. Imports System.Web.Services
  4. Public Class TempConvert :Inherits WebService
  5. <WebMethod()> Public Function FahrenheitToCelsius(ByVal Fahrenheit As Int16) As Int16
  6. Dim celsius As Int16
  7. celsius = ((((Fahrenheit) - 32) / 9) * 5)
  8. Return celsius
  9. End Function
  10. <WebMethod()> Public Function CelsiusToFahrenheit(ByVal Celsius As Int16) As Int16
  11. Dim fahrenheit As Int16
  12. fahrenheit = ((((Celsius) * 9) / 5) + 32)
  13. Return fahrenheit
  14. End Function
  15. End Class

此文档是一个 .asmx 文件。这是用于 XML Web Services 的 ASP.NET 文件扩展名。


要运行这个例子,我们需要一个 .NET 服务器

此文档中第一行表明这是一个 Web Service,由 VB 编写,其 class 名称是 "TempConvert"。

  1. <%@ WebService Language="VB" Class="TempConvert" %>

接下来的代码行从 .NET 框架导入了命名空间 "System.Web.Services"。

  1. Imports System
  2. Imports System.Web.Services

下面这一行定义 "TempConvert" 类是一个 WebSerivce 类:

  1. Public Class TempConvert :Inherits WebService

接下来的步骤是基础的 VB 编程。此应用程序有两个函数。一个把华氏度转换为摄氏度,而另一个把摄氏度转换为华氏度。

与普通的应用程序唯一的不同是,此函数被定义为 "WebMethod"。

请在您希望其成为 web services 的应用程序中使用 "WebMethod" 来标记函数。

  1. <WebMethod()> Public Function FahrenheitToCelsius(ByVal Fahrenheit As Int16) As Int16
  2. Dim celsius As Int16
  3. celsius = ((((Fahrenheit) - 32) / 9) * 5)
  4. Return celsius
  5. End Function
  6. <WebMethod()> Public Function CelsiusToFahrenheit(ByVal Celsius As Int16) As Int16
  7. Dim fahrenheit As Int16
  8. fahrenheit = ((((Celsius) * 9) / 5) + 32)
  9. Return fahrenheit
  10. End Function

最后要做的事情是终止函数和类:

  1. End Function
  2. End Class

假如您把此文件另存为 .asmx 文件,并发布于支持 .NET 的服务器上,那么您就拥有了第一个可工作的 Web Service。


ASP.NET 的自动化处理

通过 ASP.NET,你不必亲自编写 WSDL 和 SOAP 文档。

如果您仔细研究我们的这个例子,您会发现 ASP.NET 会自动创建 WSDL 和 SOAP 请求。


再用 ASP.Net 的 C# 来复写上述实例

  1. <%@ WebService Language="C#" Class="TempConvert" %>
  2. using System;
  3. using System.Web.Services;
  4. Public Class TempConvert :Inherits WebService
  5. {
  6. [WebMethod()]
  7. public short FahrenheitToCelsius(short Fahrenheit)
  8. {
  9. short celsius;
  10. celsius = (short)Math.Round((Fahrenheit - 32) / 9d * 5d);
  11. return celsius;
  12. }
  13. [WebMethod()]
  14. public short CelsiusToFahrenheit(short Celsius)
  15. {
  16. short fahrenheit;
  17. fahrenheit = (short)Math.Round(Celsius * 9 / 5d + 32d);
  18. return fahrenheit;
  19. }
  20. }

分类导航