Web Services

1.       Web Services基本规范概述

1.1.   什么是Web Services

Web Services是为实现“基于Web无缝集成”的目标而提出的全新概念,希望通过Web Services能够实现不同的系统之间能够用“软件-软件对话”的方式相互调用,打破软件应用、网站和各种设备之间格格不入的状态。

Web Services是一个应用程序,它向外界暴露一个能够通过Web进行调用的API,这就是说,能够用编程的方法通过web调用来实现某个功能的应用程序。

Web Services是一种新的Web应用程序分支,它们是自包含、自描述,模块化的应用,可以在网络中被描述、发布、查找以及通过Web调用。

1.2.   UDDI (Universal Description Discovery and Integration)

UDDI即统一描述、发现和集成(Universal Description , Discovery , and Integration),其目的是为电子商务建立标准,UDDI是一套基于Web的、分布式、为Web Services提供的、信息注册中心的实现标准规范,同时也包含一组是企业能将自身提供的Web Services注册,可以使别的奇特能够发现访问间协议的实现标准。

1.3.   WSDL (Web Service Description Language)

Web Service描述语言(WSDL)是用计算机能阅读的方式提供的一个正式描述文档而基于XML的语言,用于描述Web Service及其函数、参数和返回值。因为是基于XML的,所以WSDL既是机器可阅读的,又是人可阅读的。

1.4.   XML和XSD

可扩展性标记语言XML是Web Service平台中表示数据的基本格式。除了易于建立和易于分析外,XML主要的优点在于它基于平台无关,由于厂商无关。XML是由万维网协会(W3C)创建,W3C制定的XML Schema XSD定义了一套标准的数据类型,并给出了一种语言来拓展这套数据类型。
Web Service平台是用XSD来作为数据类型系统的。当用某种语言如VB.NET 或C#来构造一个Web Service是,为了符合Web Service标准,所有使用的数据类型都必须被转换为XSD类型。如想让他使用在不同的平台和不同的软件的不同组织间传递,还需要用某种东西将它包装起来。这种东西就是一种协议,如SOAP。

1.5.   SOAP (Simple Object Access Protocol)

SOAP即简单对象访问协议(Simple Object Access Protocol),它是用于交换XML编码信息的轻量级协议,是基于XML和HTTP的分布式对象的通信协议。

SOAP它包括四个部分:SOAP封装(envelop),封装定义了一个描述消息中的内容是什么,是谁发送的,谁应当接受并处理它以及如何处理它们的框架;SOAP编码规则(encoding rules),用于表示应用程序需要使用的数据类型的实例; SOAP RPC表示(RPC representation),表示远程过程调用和应答的协定;SOAP绑定(binding),使用底层协议交换信息。

SOAP简单的理解,就是这样的一个开放协议SOAP=RPC+HTTP+XML:采用HTTP作为底层通讯协议;RPC作为一致性的调用途径,XML作为数据传送的格式,允许服务提供者和服务客户经过防火墙在INTERNET进行通讯交互。

1.6.   SOAP 信封

Web 服务消息的基本单元是实际的 SOAP 信封。这是包含处理消息所必需的所有信息的 XML 文档:

POST /PCSWebService3/Service.asmx HTTP/1.1
Host: localhost
Content-Type: application/soap+xml; charset=utf-8
Content-Length: length
 
<?xml version="1.0" encoding="utf-8"?>
<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
 <soap12:Header>
    <AuthenticationToken xmlns="http://tempuri.org/">
      <InnerToken>guid</InnerToken>
    </AuthenticationToken>
 </soap12:Header>
 <soap12:Body>
    <DoSomething xmlns="http://tempuri.org/" />
 </soap12:Body>
</soap12:Envelope>

SOAP Header

SOAP 消息中的 Header用于提供有关消息本身的信息。例如,Header可以包括路由信息、自定义信息等

 <soap12:Header>
    <AuthenticationToken xmlns="http://tempuri.org/">
      <InnerToken>guid</InnerToken>
    </AuthenticationToken>
 </soap12:Header>

SOAP 体

发送 SOAP 消息时,都是有目的性的。在尝试告诉接收者执行某种操作,或尝试向服务器传递相关信息。此信息称为“有效负载”。有效负载位于 Envelope的 Body中。它还具有自己的命名空间。

 <soap12:Body>
    <DoSomething xmlns="http://tempuri.org/" />
 </soap12:Body>

1.7.   远程过程调用RPC与消息传递

Web Service本身其实是在实现应用程序的通信。现在有两种应用程序通信的方法:RPC远程过程调用和信息传递。使用RPC的时候,客户端的概念是调用服务器上的远程过程,通常的方式为实例化一个远程对象并调用其方法和属性。RPC系统试图达到一种位置上的透明性:服务器暴露出远程对象的端口,而客户端就好像在本地使用这些对象的接口一样,这样就隐藏的底层的信息,客户端也就根本不需要知道对象是在哪台机器上。

2.       Web Services引用

2.1.   添加Web引用

在添加Web引用窗体中选择您所使用到的Web服务

选择后,在Web引用名(N)中输入该Web Services的名称

点击“添加引用”后即Web Services添加完成,会自动在目录App_WebReferences中生成该服务的描述文件。

2.2.   使用Web Services

实例化web service,用实例化后的对象.web service的方法。

2.3.   发布配置

在添加引用时,系统会自动为web.config文件添加如下配置:

<configuration>

<appSettings>

<addkey="MyWebServices.Service"value="http://localhost:1249/Services2/Service.asmx"/>

</appSettings>

<connectionStrings/>

Web Services与Web应用发布时,由于Web Services访问URL发生改变,因此需要修改Web应用的web.config中的Web Services服务引用URL。

Web Services的更多相关文章

  1. .NET RESTful Web Services入门

    很早之前看到过RESTful Web Services,并未在意,也没找相关资料进行学习.今天偶尔有一机会,就找了点资料进行研究,发现RESTful真是“简约而不简单”.下面用示例来说明: 1 项目结 ...

  2. 分分钟带你玩转 Web Services

    当大型需求被数个公司分割开来,各公司系统相互交换数据的问题就会接踵而来. 毕竟是多家不同的公司的产品,研发开发语言.采用技术框架基本上是百花齐放. 怎样让自家系统提供的服务具有跨平台.跨语言.跨各种防 ...

  3. BizTalk发布WS-Security的web services

    最近做个项目,biztalk跟OTM(Oracle Transportation Management)系统做对接,双方通过web services通讯,这部分是BizTalk发布WS-Securit ...

  4. BizTalk调用WS-Security的web services

    最近做个项目,biztalk跟OTM(Oracle Transportation Management)系统做对接,双方通过web services通讯,这部分是BizTalk调用OTM的web se ...

  5. 【整理】动态加载Web Services

    WebClient client = new WebClient(); String url = "http://localhost/MESAPIWebService/MESAPI.asmx ...

  6. RESTful Web Services初探

    RESTful Web Services初探 作者:杜刚 近几年,RESTful Web Services渐渐开始流行,大量用于解决异构系统间的通信问题.很多网站和应用提供的API,都是基于RESTf ...

  7. asp.net Ajax和web services

    新建一个web服务 using System; using System.Collections.Generic; using System.Linq; using System.Web; using ...

  8. SpringSide 部署showcase项目出现 JAX-RS (REST Web Services) 2.0 can not be installed错误!

    maven+springmvc错误 JAX-RS (REST Web Services) 2.0 can not be installed 项目problem提示错误 JAX-RS (REST Web ...

  9. Jersey the RESTful Web Services in Java

    Jersey 是一个JAX-RS的实现, JAX-RS即Java API for RESTful Web Services, 支持按照表述性状态转移(REST)架构风格创建Web服务. REST 中最 ...

  10. 使用 Spring 3 来创建 RESTful Web Services

    来源于:https://www.ibm.com/developerworks/cn/web/wa-spring3webserv/ 在 Java™ 中,您可以使用以下几种方法来创建 RESTful We ...

随机推荐

  1. HDU 2553 N皇后问题(详细题解)

    这是一道深搜题目!问题的关键是在剪枝. 下面我们对问题进行分析: 1.一行只能放一个皇后,所以我们一旦确定此处可以放皇后,那么该行就只能放一个皇后,下面的就不要再搜了. 2.每一列只能放一个皇后,所以 ...

  2. (转载)PHP strtotime函数详解

    (转载)http://www.jb51.net/article/21495.htm strtotime函数是一个很好的函数,灵活的运用它,会给你的工作带来不少方便.但PHP的手册中却对此函数的参数没作 ...

  3. 搜索(DLX):HDU 3663 Power Stations

    Power Stations Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)To ...

  4. 数学概念——A 几何概型

    You are going from Dhaka to Chittagong by train and you came to know one of your old friends is goin ...

  5. vijos1891 学姐的逛街计划(线性规划)

    P1891学姐的逛街计划 描述 doc 最近太忙了, 每天都有课. 这不怕, doc 可以请假不去上课.偏偏学校又有规定, 任意连续 n 天中, 不得请假超过 k 天. doc 很忧伤, 因为他还要陪 ...

  6. 字符串查找 strstr

     strstr函数  分类: LINUX 函数名: strstr 功 能: 在串中查找指定字符串的第一次出现 用 法: char *strstr(char *str1, char *str2); st ...

  7. www.chenbowenblog.com 博客地址转移

    我的新博客地址是 www.chenbowenblog.com 欢迎来访.

  8. 简单的FIRST集演示程序

    /* * 该程序用于计算某个非终结符的 FIRST 集合 * RexfieldVon * 2013年6月29日19:53:45 * 2013年7月3日22:01:57 修改 GetFIRST 例程以简 ...

  9. 饿了么 ---Java面试

    下午去饿了么参加面试,其实也满怀期待,毕竟也是个大公司. 交通:偏外环,真北路 环境:感觉压抑,不通风,面试人很多,可能是屋子高度低,不舒服. 填了资料,等待面试,两轮,真是憋屈 都是搞技术的,何苦为 ...

  10. 设计模式(二)The Observer Pattern 观察者模式

    问题引入 生成一个公告板显示当时的天气状况,当天气状况发生改变的时候公告板能够实时的更新. 模式定义 定义对象之间的一对多的依赖.当一个对象改变状态时,它的全部依赖者都会自己主动收到通知并自己主动更新 ...