Web服务(Web Service)

本文主要探讨Web服务的概念、技术和应用场景。重点介绍了SOAP协议在Web服务中的作用,以及Web服务在不同语言环境下的实现和交互。
摘要由CSDN通过智能技术生成

之前在网上找的一些文章,现在也忘了出处,现想放此以备不时之需,在此感谢原创! 

    今天是我第一次学习使用.Net编写WebService程序。当然得从最简单的Hello World开始了。

1.创建一个文本文件HelloWorld.asmx(.ASP.NET 使用 .asmx 文件提供 XML Web services 支持。)

using System;
using System.Web.Services;
public class HelloWorld : WebService
{
     [WebMethod]
     public String SayHelloWorld()
     {
          return "Hello World";
     }
}
2.将HelloWorld.asmx放在IIS工作目录下,现在我们可以通过http://localhost/helloworld.asmx访问它了.
这时候我们可以注意到提示:
此 Web 服务使用 http://tempuri.org/ 作为它的默认命名空间。建议:在使 XML Web service 公开之前,请更改默认命名空间。
 所以我们在HelloWorld.asmx中加入[WebService(Namespace="http://xcolor.cn/webservices/")]
 再次访问http://localhost/helloworld.asmx,建议没有了,一切正常。
 
3.为了在Visual C#中使用这个WebService服务,我们需要使用有一个 Web 服务描述语言工具 (WSDL.exe)。
此命令行工具用于从 WSDL 创建 代理类。我们输入: wsdl http://localhost/helloworld.asmx?wsdl 以生成
HelloWorld.cs文件,该文件包含了对该服务的调用。
 
4.为了试验如何在Visual C#中调用HelloWorld服务,我们新建一个空白的C#应用程序。
   在解决方案资源管理器中添加HelloWorld.cs文件。然后编写如下代码调用:
   HelloWorld myHelloWorld = new HelloWorld();      this.Text  = myHelloWorld.SayHelloWorld();
   编译,我们等待着HelloWorld的出现,可是遗憾的是。编译器告诉我们System.web.Service未引用。于是我们加入对
System.web.service.dll的引用,果然我们期待的HelloWorld出现了。

在Visual C#中的调用是成功了,我们还想试试,在其他开发环境下,效果怎么样了。
下面我使用Delphi来调用刚才的WebService服务。
1.新建一个空白的窗体工程
2.New ->Other->WebServices->WSDL Importer,
  在Wsdl Source 中输入 “http://localhost/helloworld.asmx?wsdl”
  生成HelloWorld.pas ,其中包含一个HelloWorldSoap接口和GetHelloWorldSoap函数
3.使用如下代码调用
procedure TForm1.Button1Click(Sender: TObject);var hello:HelloWorldSoap ;begin  hello:=GetHelloWorldSoap;  Caption:=hello.SayHelloWorld ;
end;
成功了,一切都是如此的简单和方便,我们真该为这个伟大的技术欢呼!

 

.NET 怎样调用WebServices 
最近的项目中需要调用WebServices,在网上找了很多资料,在这里对调用WebServics的方法总结一下。
无论那种客户端类型,调用WebServices的步骤都是十分类似的:

<!-- [if !supportLists] --> 1、   <!-- [endif] --> 获得WebServices的代理类;

<!-- [if !supportLists] --> 2、   <!-- [endif] --> 在客户端的代码中引用代理类;

<!-- [if !supportLists] --> 3、   <!-- [endif] --> 在客户端的代码中创建代理类的实例;

<!-- [if !supportLists] --> 4、   <!-- [endif] --> 通过调用代理类实例的方法来调用相应的WebServices服务接口方法。

 

<!-- [if !supportLists] --> 一、 <!-- [endif] --> 获得代理类

获得代理类的方法有两种:

<!-- [if !supportLists] --> 1、   <!-- [endif] --> 通过在Visual Stadio .NET2003中引用已有的WebService;

<!-- [if !supportLists] --> 2、   <!-- [endif] --> 通过.NET Framerwork SDK提供的wsdl.exe生成代理类。

方法一:

在VS2003中,可以使用Web引用的功能来创建代理类。

启动一个项目,在解决方案资源管理器里用右键选择Web引用。接下来输入WSDL文档的位置,或者输入一个Web URL,这个URL能够识别或发现链接到XML WebServices的页面或文档,在使用适当的链接来进行浏览。

方法二:

.NET Framework SDK中提供了一个命令行工具wsdl.exe,来获取WebServices的WSDL语言描述、XSD Schema或disco镜像文件生成该WebServics的代理类源代码。

在c:programe filesmicrosoft.net rameworkSDKin或者(C:Program FilesMicrosoft Visual Studio .NET 2003SDKv1.1Bin)下面可以找到这个工具。

具体语法:

Wsdl /language:language /protocol:protocol /namespace:namespace /out:filename / username:username /password:password /domain:domain(url or path)

参数说明:

Language:   是指代理使用的语言。因为不会直接修改代理类代码,所以使用什么语言并不重要(在重新生成这个类以后,所有的修改都会丢失)。默认的与语言为C#

Protocol:     通常会忽略这个选项而使用默认选项(SOAP)。但是也可以为较多限制的协议指定HTTP GET或HTTP POST

Namespace:    代理类使用的.Net命名空间。如果忽略这个参数,就没有命名空间了,而且该文件中的所有类将供全局使用。为了更好的组织结构,应该选用逻辑命名空间。Visual Studio.Net自动使用服务器名(例如:localhost)作为命名空间。

Out:        这使您能够指定所生成的文件名字。但这个名字被默认为服务名加上表示语言的扩展名。

Username/Password/Domain: 如果想通过WebServices访问虚拟目录,应该确定这些验证字段所需要的值。

Url或路径:这个字段总是加在WSDL.exe命令行的最后,它向Web服务器说明了WSDL文档的位置

使用举例:

Wsdl http://localhost/smsSend/WS_smsSender.asmx?WSDL

执行后,会生成一个WS_smsSender.cs代理类文件,然后可以把这个文件加入一个客户端项目或者使用vbc.exe命令行编译器把它编译成为一个DLL

例:vbc /t: library WS_smsSender.cs

 

<!-- [if !supportLists] --> 二、 <!-- [endif] --> 使用代理类

创建任何一个客户端的程序都包括以下步骤:

<!-- [if !supportLists] --> 1)   <!-- [endif] --> 创建一个代理类的实例;

WS_smsSender.Service1 CallWS_smsSend = new smsSender.WS_smsSender.Service1();

<!-- [if !supportLists] --> 2)   <!-- [endif] --> 调用代理对象上的方法;

CallWS_smsSend.smsSend(labPhone_no.Text,labsmsContent.Text,labOtherInfo.Text);

<!-- [if !supportLists] --> 3)   <!-- [endif] --> 获取从Web服务返回的XML格式的数据;

<!-- [if !supportLists] --> 4)   <!-- [endif] --> 编写客户端代码显示结果。

<!-- [if !supportLists] --> 三、 <!-- [endif] --> 术语表

<!-- [if !supportLists] --> 1、   <!-- [endif] --> WSDL:Web Services Description Language的缩写,是一个用来描述Web服务和说明如何与Web服务通信的XML语言。
怎样向别人介绍你的Web service有什么功能,以及每个函数调用时的参数呢?你可能会自己写一套文档,你甚至可能会口头上告诉需要使用你的Web service的人。这些非正式的方法至少都有一个严重的问题:当程序员坐到电脑前,想要使用你的Web service的时候,他们的工具(如Visual Studio)无法给他们提供任何帮助,因为这些工具根本就不了解你的Web Service。解决方法是:用机器能阅读的方式提供一个正式的描述文档。Web service描述语言(WSDL)就是这样一个基于XML的语言,用于描述Web service及其函数、参数和返回值。因为是基于XML的,所以WSDL既是机器可阅读的,又是人可阅读的,这将是一个很大的
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值