Web Service基础知识

什么是Web Service

       Web Service是以独立于平台的方式,通过标准的Web协议,可以由程序访问的应用程序逻辑单元。它是一种分布式计算技术,一种自包含、自描述、模块化的应用,可以发布、定位、通过Web调用。一旦部署之后 ,其它Web Service应用程序可以发现并调用它部署的服务。它运用了Web网络技术和基于组件开发的精华成分。DCOM、CORBA和其它基于组件的分布式计算技术都依赖于特定的对象模型协议,而Web Service扩展了这些模型,使之可以和SOAP(简单对象访问协议)以及XML通信以根除特定对象模型协议带来的通信障碍。

下表是DCOM、CORBA和Web Service的比较:                   

           

特征

           
           

DCOM

           
           

CORBA

           
           

Web Service

           
           

远程过程调用(RPC)机制

           
           

分布式计算环境远程过程调用(DCE-RPC

           
           

Internet Inter-ORB协议

           
           

超文本传输协议(HTTP

           
           

编码

           
           

网络数据表示(NDR

           
           

通用数据表示(CDR

           
           

扩展标记语言(XML

           
           

接口描述

           
           

接口定义语言(IDL

           
           

接口定义语言(IDL

           
           

Web服务描述语言(WSDL

           
           

发现

           
           

注册库

           
           

命名服务与交易服务

           
           

通用发现、描述与集成机制(UDDI

           
           

防火墙的友好性

           
           

           
           

           
           

           
           

协议的复杂性

           
           

           
           

           
           

           
           

跨平台性

           
           

           
           

部分

           
           

           

       Web Service的主要优点是:允许在不同平台上、以不同语言编写的各种程序以基于标准的方式相互通信。。它就是个对外的接口,里面有函数可供外部客户调用。注意Web Service传递的数据只能是序列化的数据,典型的就是XML数据

Web服务三个重点:

一、简单对象访问协议(SOAP

SOAP是一种基于XML的通信协议,包括三个部分:

1、 SOAP封装结构:定义消息的XML格式,包括整体框架、消息内容、谁处理这些内容等

2、 SOAP编程规则:定义如何将程序数据表示为XML

3、 SOAP RPC表示:定义如何使用SOAP进行远程过程调用

二、Web服务描述语言(WSDL

1、 是一个XML文档,用于说明一组SOAP消息以及如何交换这些信息

2、 定义了服务的位置以及使用服务的通信协议

3、 可提供更高层次的消息,如Web服务的业务类型和关联关键字等

三、同一描述、发现和继承(UDDI

1、 Web服务的黄页

2、 其核心组件是UDDI商业注册,它使用一个XML文档来描述Web服务。包括三个部分:

a)         白页:介绍提供服务的公司,包括名称、地址、联系方式

b)        黄页:包括按照标准分类进行分类的行业类别

c)         绿页:细则介绍、访问服务接口等技术信息

SOAP、WSDL和UDDI都基于XML。SOAP使用XML作为其数据编码格式。WSDL使用XML Schema来描述Web服务的结构。UDDI使用XML描述商业实体和Web服务

       Web服务基础结构:                                                                                                                                                                           

           

基础结构块

           
           

职能

           
           

XML Web服务目录

           
           

XML Web服务目录提供一个中央地址,用于定位其它组织提供的XML Web服务。象UDDI登记这样的XML Web服务目录实现这个职能。XML Web服务的客户端可以引用XML Web服务目录,也可以不引用XML Web服务目录

           
           

XML Web服务发现

           
           

XML Web服务发现是使用web服务描述语言(WSDL)定位或发现一个或多个描述特别的XML Web服务的相关文档。DISCO规格定义了定位服务描述的规则。如果XML Web服务客户了解服务描述的位置,他们可以绕过发现步骤

           
           

XML Web服务描述

           
           

为了了解如何与一个特定的XML Web服务交互利用,需要提供一个描述来定义XML Web服务支持的交互操作。XML Web服务客户端在可以使用一个XML Web服务之间必须了解如何与它交互

           
           

XML Web服务连接格式

           
           

为了能够进行通用通信,XML Web服务使用开发连接格式来进行通信,这些是任何支持最普通的web标准的系统都能够理解的协议。SOAP是用于进行XML Web服务通信的关键协议

           

C#创建Web服务(环境:.NET Framework3.0 VS2005

       创建一个简单的Web服务,用于说明Web服务的作用和代理类的生成方法

步骤一:新建—>网站—>ASP.NET Web服务

步骤二:项目中生成Service.asmx文件,App_Code/Service.cs

Service.asmx文件内容:

<%@ WebService Language=”C#” CodeBehind=”~/App_Code/Service.cs” Class=”Service” %>

Service.cs文件内容:

using System;

using System.Web;

using System.Web.Services;

using System.Web.Services.Protocols

[WebService(Namespace = http://tempuri.org/)]

[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]

public class Service : System.Web.Services.WebService

{

       public Service() {

              //如果使用设计的组件,请取消注释以下行

              //InitializeComponent();

       }

       [WebMethod]

       public string HelloWorld() {

              return “Hello World”;

       }

       [WebMethod]

       public int Add(int a , int b) {

              return a + b;

       }

}

步骤三:在浏览器中查看

http://localhost/WebService1/Service.asmx

页面中显示HelloWorld方法和Add方法。点击方法并调用。注意如果方法需要传参,则输入相关参数。最后页面显示出调用结果。

这样,一个简单的WebService就制作好了。接下来就要在其它项目中进行调用,即我们常说的使用代理类(代理类:可以引用远程的Web服务,在用户的应用程序中使用其功能,就像返回的数据是本地生产的一样)

步骤一:添加引用。

       可以添加URL(http://localhost/WebService1/Service.asmx),也可以添加dll引用。

       添加地址较为简单,VS会有相关提示。主要讲解dll引用的添加

       如何生成dll文件?

       方法一:选中Web服务,并发布网站,在根目录下找到bin目录,里面有生成的dll。可惜因为VS2005的bug,生成的dll都自动命名为App_Code.dll。可以安装微软提供的Web服务部署工具Web Deployment 。安装完成后,Web服务上右键选择Add Web Deployment Project…就可以正常部署Web项目并生成你想要的dll文件了

       方法二:VS2005命令提示

a)       wsdl url /n:namespace

              生成和name.asmx相同文件名的C#源文件name.cs

b)      编译第一步生成的cs文件,生成dll

csc /out:name.dll /t:library /r:System.Web.Services.dll directory

/out:name.dll是要输出的dll文件,/t:library是输出文件类型,/r:System.Web.Services.dll是要引用的组件,directory是第一步生成的cs文件所在的路径和文件名,比如D:"name.cs

c)       在需要引用的工程中添加dll引用,即可调用WebService

步骤二:实例化对象

       WebService1.Service s = new WebService1.Service();

       int temp = s.Add(1,2);

       Console.Write(“temp”);

Web服务的发布和部署

部署XML Web服务:

       部署一个XML Web服务包括把.asmx文件和任何XML Web服务使用的汇编文件,而不是Microsoft.NET Framework的一部分,复制到Web服务器上

       XML Web服务发布的条目

           

条目

           
           

描述

           
           

Web应用程序目录

           
           

作为你的XML Web服务的根目录。所有的文件都存放在这个目录中。这个目录应该被标记为一个IIS Web应用程式所用

           
           

.asmx文件

           
           

调用XML Web服务的客户端的基本URL。这个文件可以为任何有效的文件名

           
           

.disco文件

           
           

(可选的)作为XML Web服务的发现机制。.disco文件不会自动地为XML Web服务创建。这个文件可以为任何有效的文件名

           
           

Web.config文件

           
           

(可选择的)如果你需要覆盖默认配置设置,可以包含一个web.config文件。XML Web服务使用这个配置文件来允许系统的定制和可扩展性

           
           

"Bin目录

           
           

包含用于这个XML Web服务的二进制文件。如果你的XML Web服务类和.asmx文件不在同一个目录下,那么包含类的部件必须在"Bin目录中

           

总结

       本文简单的介绍了Web Service的基本概念并给出了一个简单的例子用以理解。Web Service做到了平台无关性,可穿透防火墙,允许开发者方便地重用代码,限制了对数据库的连接,允许用户通过编程的方式访问Internet上的对象等。我们还可以通过Web服务外置数据,确保安全性。

       其它的一些用法后面介绍:Web服务的状态,异步Web服务,Web服务中的事务处理,Web服务中的缓存技术和Web服务的性能优化

什么是Web Service

       Web Service是以独立于平台的方式,通过标准的Web协议,可以由程序访问的应用程序逻辑单元。它是一种分布式计算技术,一种自包含、自描述、模块化的应用,可以发布、定位、通过Web调用。一旦部署之后 ,其它Web Service应用程序可以发现并调用它部署的服务。它运用了Web网络技术和基于组件开发的精华成分。DCOM、CORBA和其它基于组件的分布式计算技术都依赖于特定的对象模型协议,而Web Service扩展了这些模型,使之可以和SOAP(简单对象访问协议)以及XML通信以根除特定对象模型协议带来的通信障碍。

下表是DCOM、CORBA和Web Service的比较:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     

           

特征

           
           

DCOM

           
           

CORBA

           
           

Web Service

           
           

远程过程调用(RPC)机制

           
           

分布式计算环境远程过程调用(DCE-RPC

           
           

Internet Inter-ORB协议

           
           

超文本传输协议(HTTP

           
           

编码

           
           

网络数据表示(NDR

           
           

通用数据表示(CDR

           
           

扩展标记语言(XML

           
           

接口描述

           
           

接口定义语言(IDL

           
           

接口定义语言(IDL

           
           

Web服务描述语言(WSDL

           
           

发现

           
           

注册库

           
           

命名服务与交易服务

           
           

通用发现、描述与集成机制(UDDI

           
           

防火墙的友好性

           
           

           
           

           
           

           
           

协议的复杂性

           
           

           
           

           
           

           
           

跨平台性

           
           

           
           

部分

           
           

           

       Web Service的主要优点是:允许在不同平台上、以不同语言编写的各种程序以基于标准的方式相互通信。。它就是个对外的接口,里面有函数可供外部客户调用。注意Web Service传递的数据只能是序列化的数据,典型的就是XML数据

Web服务三个重点:

一、简单对象访问协议(SOAP

SOAP是一种基于XML的通信协议,包括三个部分:

1、 SOAP封装结构:定义消息的XML格式,包括整体框架、消息内容、谁处理这些内容等

2、 SOAP编程规则:定义如何将程序数据表示为XML

3、 SOAP RPC表示:定义如何使用SOAP进行远程过程调用

二、Web服务描述语言(WSDL

1、 是一个XML文档,用于说明一组SOAP消息以及如何交换这些信息

2、 定义了服务的位置以及使用服务的通信协议

3、 可提供更高层次的消息,如Web服务的业务类型和关联关键字等

三、同一描述、发现和继承(UDDI

1、 Web服务的黄页

2、 其核心组件是UDDI商业注册,它使用一个XML文档来描述Web服务。包括三个部分:

a)         白页:介绍提供服务的公司,包括名称、地址、联系方式

b)        黄页:包括按照标准分类进行分类的行业类别

c)         绿页:细则介绍、访问服务接口等技术信息

SOAP、WSDL和UDDI都基于XML。SOAP使用XML作为其数据编码格式。WSDL使用XML Schema来描述Web服务的结构。UDDI使用XML描述商业实体和Web服务

       Web服务基础结构:

                                                                                                                                                                                                               

           

基础结构块

           
           

职能

           
           

XML Web服务目录

           
           

XML Web服务目录提供一个中央地址,用于定位其它组织提供的XML Web服务。象UDDI登记这样的XML Web服务目录实现这个职能。XML Web服务的客户端可以引用XML Web服务目录,也可以不引用XML Web服务目录

           
           

XML Web服务发现

           
           

XML Web服务发现是使用web服务描述语言(WSDL)定位或发现一个或多个描述特别的XML Web服务的相关文档。DISCO规格定义了定位服务描述的规则。如果XML Web服务客户了解服务描述的位置,他们可以绕过发现步骤

           
           

XML Web服务描述

           
           

为了了解如何与一个特定的XML Web服务交互利用,需要提供一个描述来定义XML Web服务支持的交互操作。XML Web服务客户端在可以使用一个XML Web服务之间必须了解如何与它交互

           
           

XML Web服务连接格式

           
           

为了能够进行通用通信,XML Web服务使用开发连接格式来进行通信,这些是任何支持最普通的web标准的系统都能够理解的协议。SOAP是用于进行XML Web服务通信的关键协议

           

C#创建Web服务(环境:.NET Framework3.0 VS2005

       创建一个简单的Web服务,用于说明Web服务的作用和代理类的生成方法

步骤一:新建—>网站—>ASP.NET Web服务

步骤二:项目中生成Service.asmx文件,App_Code/Service.cs

Service.asmx文件内容:

<%@ WebService Language=”C#” CodeBehind=”~/App_Code/Service.cs” Class=”Service” %>

Service.cs文件内容:

using System;

using System.Web;

using System.Web.Services;

using System.Web.Services.Protocols

[WebService(Namespace = http://tempuri.org/)]

[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]

public class Service : System.Web.Services.WebService

{

       public Service() {

              //如果使用设计的组件,请取消注释以下行

              //InitializeComponent();

       }

       [WebMethod]

       public string HelloWorld() {

              return “Hello World”;

       }

       [WebMethod]

       public int Add(int a , int b) {

              return a + b;

       }

}

步骤三:在浏览器中查看

http://localhost/WebService1/Service.asmx

页面中显示HelloWorld方法和Add方法。点击方法并调用。注意如果方法需要传参,则输入相关参数。最后页面显示出调用结果。

这样,一个简单的WebService就制作好了。接下来就要在其它项目中进行调用,即我们常说的使用代理类(代理类:可以引用远程的Web服务,在用户的应用程序中使用其功能,就像返回的数据是本地生产的一样)

步骤一:添加引用。

       可以添加URL(http://localhost/WebService1/Service.asmx),也可以添加dll引用。

       添加地址较为简单,VS会有相关提示。主要讲解dll引用的添加

       如何生成dll文件?

       方法一:选中Web服务,并发布网站,在根目录下找到bin目录,里面有生成的dll。可惜因为VS2005的bug,生成的dll都自动命名为App_Code.dll。可以安装微软提供的Web服务部署工具Web Deployment 。安装完成后,Web服务上右键选择Add Web Deployment Project…就可以正常部署Web项目并生成你想要的dll文件了

       方法二:VS2005命令提示

a)       wsdl url /n:namespace

              生成和name.asmx相同文件名的C#源文件name.cs

b)      编译第一步生成的cs文件,生成dll

csc /out:name.dll /t:library /r:System.Web.Services.dll directory

/out:name.dll是要输出的dll文件,/t:library是输出文件类型,/r:System.Web.Services.dll是要引用的组件,directory是第一步生成的cs文件所在的路径和文件名,比如D:"name.cs

c)       在需要引用的工程中添加dll引用,即可调用WebService

步骤二:实例化对象

       WebService1.Service s = new WebService1.Service();

       int temp = s.Add(1,2);

       Console.Write(“temp”);

Web服务的发布和部署

部署XML Web服务:

       部署一个XML Web服务包括把.asmx文件和任何XML Web服务使用的汇编文件,而不是Microsoft.NET Framework的一部分,复制到Web服务器上

       XML Web服务发布的条目

                                                                                                                                                                                                                                                       

           

条目

           
           

描述

           
           

Web应用程序目录

           
           

作为你的XML Web服务的根目录。所有的文件都存放在这个目录中。这个目录应该被标记为一个IIS Web应用程式所用

           
           

.asmx文件

           
           

调用XML Web服务的客户端的基本URL。这个文件可以为任何有效的文件名

           
           

.disco文件

           
           

(可选的)作为XML Web服务的发现机制。.disco文件不会自动地为XML Web服务创建。这个文件可以为任何有效的文件名

           
           

Web.config文件

           
           

(可选择的)如果你需要覆盖默认配置设置,可以包含一个web.config文件。XML Web服务使用这个配置文件来允许系统的定制和可扩展性

           
           

"Bin目录

           
           

包含用于这个XML Web服务的二进制文件。如果你的XML Web服务类和.asmx文件不在同一个目录下,那么包含类的部件必须在"Bin目录中

           

总结

       本文简单的介绍了Web Service的基本概念并给出了一个简单的例子用以理解。Web Service做到了平台无关性,可穿透防火墙,允许开发者方便地重用代码,限制了对数据库的连接,允许用户通过编程的方式访问Internet上的对象等。我们还可以通过Web服务外置数据,确保安全性。

       其它的一些用法后面介绍:Web服务的状态,异步Web服务,Web服务中的事务处理,Web服务中的缓存技术和Web服务的性能优化

原文地址:https://www.cnblogs.com/feng-NET/p/4826752.html