zoukankan      html  css  js  c++  java
  • 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服务的性能优化

  • 相关阅读:
    (转)Go和HTTPS
    (转)Using Python3.5 in Ubuntu
    linux下配置某程序的sudo不用输密码
    双系统linux+win之血的教训
    (转)如何修复ubuntu的UEFI引导
    Android ——Toolbar开发实践总结(转)
    Android——Fragment 真正的完全解析(下)(转)
    Android—— Fragment 真正的完全解析(上)(转)
    android——官方下拉刷新组件SwipeRefreshLayout(转)
    Android——使用Toolbar + DrawerLayout快速实现高大上菜单侧滑(转)
  • 原文地址:https://www.cnblogs.com/feng-NET/p/4826752.html
Copyright © 2011-2022 走看看