zt http://blog.163.com/try_boy/blog/static/17868656220122711250140/?latestBlog
Webservice它是一种构建应用程序的普遍模型,可以在任何支持网络通信的操作系统中实施运行;它是一种新的web 应用程序分支,是自包含、自描述、模块 化的应用,可以发布、定位、通过web调用。Web Service是一个应用组件,它逻辑性的为其他应用程序提供数据与服务。各应用程序通过网络协议和规定的一些标准数据格式(Http,XML,Soap)来访问Web Service,通过Web Service内部执行得到所需结果。Web Service可以执行从简单的请求到复杂商务处理的任何功能。一旦部署以后,其他Web Service应用程序可以发现并调用它部署的服务。
实际上,WebService的主要目标是跨平台的可互操作性。为了达到这一目标,WebService完全基于XML(可扩展标记语言)、XSD(XMLSchema)等独立于平台、独立于软件供应商的标准,是创建可互操作的、分布式应用程序的新平台。
技术和规则
XML:描述数据的标准方法.
SOAP:表示信息交换的协议.
WSDL:Web服务描述语言.
UDDI(Universal Description, Discovery and Integration):通用描述、发现与集成,它是一种独立于平台的,基于XML语言的用于在互联网上描述商务的协议。
--------------------------------------------------------------------------------------
SOAP:简单对象访问协议,简单对象访问协议(SOAP)是一种轻量的、简单的、基于 XML 的协议,它被设计成在 WEB 上交换结构化的和固化的信息。 SOAP 可以和现存的许多因特网协议和格式结合使用,包括超文本传输协议( HTTP),简单邮件传输协议(SMTP),多用途网际邮件扩充协议(MIME)。它还支持从消息系统到远程过程调用(RPC)等大量的应用程序。
soap。n.(英文)肥皂
SOAP:简单对象访问协议
(SOAP:Simple Object Access Protocol)
SOAP 包括四个部分:
SOAP 封装:它定义了一个框架 , 该框架描述了消息中的内容是什么,谁应当处理它以及它是可选的还是必须的。
SOAP 编码规则:它定义了一种序列化的机制,用于交换应用程序所定义的数据类型的实例。
SOAP RPC 表示:它定义了用于表示远程过程调用和应答的协定。
SOAP 绑定:定义了一种使用底层传输协议来完成在节点间交换SOAP封装的约定。
SOAP 消息基本上是从发送端到接收端的单向传输,但它们常常结合起来执行类似于请求 / 应答的模式。所有的 SOAP 消息都使用 XML 编码。一条 SOAP 消息就是一个包含有一个必需的 SOAP 的封装包,一个可选的 SOAP 标头和一个必需的 SOAP 体块的 XML 文档。
把 SOAP 绑定到 HTTP 提供了同时利用 SOAP 的样式和分散的灵活性的特点以及 HTTP 的丰富的特征库的优点。在 HTTP 上传送 SOAP 并不是说 SOAP 会覆盖现有的 HTTP 语义,而是 HTTP 上的 SOAP 语义会自然的映射到 HTTP 语义。在使用 HTTP 作为协议绑定的场合中, RPC 请求映射到 HTTP 请求上,而 RPC 应答映射到 HTTP 应答。然而,在 RPC 上使用 SOAP 并不仅限于 HTTP 协议绑定。
SOAP也可以绑定到TCP和UDP协议上。
SOAP 消息格式:
SOAP 标头
<SOAP-ENV: Envelope
Attributes>
<SOAP-ENV:Body
Attributes>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>目前主要在web服务中运用。
SOAPAction WEB编码中常见,协议开始起始意思,常见于编码启始句。
这里是一些重要的语法规则:
SOAP 消息必须用 XML 来编码
SOAP 消息必须使用 SOAP Envelope 命名空间
SOAP 消息不能包含 DTD 引用
SOAP 消息不能包含 XML 处理指令
<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://www./2001/12/soap-envelope"
soap:encodingStyle="http://www./2001/12/soap-encoding">
<soap:Header>
...
...
</soap:Header>
<soap:Body>
...
...
<soap:Fault>
...
...
</soap:Fault>
</soap:Body>
</soap:Envelope>
--------------------------------------------------------------------------------------
Web Service的应用场景
以前,分布式的应用程序逻辑需要使用分布式的对象模型,通过使用DCOM、CORBA、RMI之类的基本结构,开发人员仍可拥有使用本地模型所提供的丰富资源和精确性,并可将服务置于远程系统中。
当已经有中意的中间件平台(RMI、Jini、CORBA、DCOM等)时,我们为什么还要为Web而烦恼呢?中间件确实提供了强大的服务实现手段,但是,这些系统有一个共同的缺陷,那就是它们无法扩展到互联网上:它们要求服务的客户端与系统提供的服务本身之间必须进行紧密耦合,即要求一个同类基本结构。然而这样的系统往往十分脆弱:如果一端的执行机制发生变化,那么另一端便会崩溃。例如,如果服务器应用程序的接口更改,那么客户端便会崩溃。为了能扩展到互联网运用,我们需要一种松散耦合的基本结构来解决这个问题。在些情况下就迎来了Web服务的诞生。Web Service技术是一种基于标准的Web协议的可编程组件,我们可以把Web Service看做Web上的组件,Web服务提供者开放一系列的API,开发人员通过调用这些API来集成Web服务,构建自己的应用程序。
1.SOAP
SOAP(Simple Object Access Protocal)是在分散或在分布式环境中交换信息的简单协议,它基于XML协议,以XML形式提供了一个简单且轻量的用于在分散或分布环境下交换结构化和类型信息的机制,其本身并没有定义任何应用程序语义,如编程模型或特定语义的实现,而是通过提供一个有标准组件的包模型和在模块中编码数据的机制定义了一个简单的表示应用程序语义的机制,使其能够用于从信息传递到RPC的各种系统。SOAP规范定义了SOAP消息的格式,以及怎样通过HTTP协议来使用SOAP。SOAP最引人注目的特征是它可以在许多不同的软件和硬件平台上实现。这意味着 SOAP 可用于连接企业内部和外部的不同系统。过去曾试过多种方法以提出一个可用于系统集成的通用通信协议,但它们都没有像SOAP一样获得广泛的认可。为什么呢?因为与许多早期的协议相比,SOAP更小巧,而且更简单和易于实现。HTTP的普及和SOAP的简单性使你几乎可以在任何环境下调用它们,因此成为XML Web Service的理想基础。
2.WSDL
你会怎样向别人介绍你的Web Service有什么功能,以及每个函数调用时的参数呢?你可能会自己写一套文档,甚至口头告诉需要使用你的Web Service的人。这些非正式的方法至少都有一个严重的问题:当程序员坐到电脑前,想要使用你的Web Service的时候,他们的工具(如Visual Studio)无法给他们提供任何帮助,因为这些工具根本就不了解你的Web Service。解决方法是使用机器能阅读的方式提供一个正式的描述文档。Web Service描述语言(WSDL)就是这样一个基于XML的语言,用于描述Web Service及其函数、参数和返回值。因为是基于XML的,所以WSDL既是机器可阅读的,又是人可阅读的,这将是一个很大的好处。一些最新的开发工具既能根据你的Web Service生成WSDL文档,又能导入WSDL文档,生成调用相应Web Service的代码。
3.UDDI
UDDI(通用发现、说明和集成)是Web服务的黄页。是一套基于Web的、分布式地为Web Service 提供信息注册中心的实现标准,同时包含一组能使企业将自身提供的Web Service注册使得别的企业能够发现的访问协议。与传统黄页一样,你可以搜索提供所需服务的公司,阅读以了解所提供的服务,然后与某人联系以获得更多信息。
趣味理解
Web Service好比一个服务供应商,给其他厂家提供基础服务,其他厂家再将这个服务包装成自己的产品或者服务提供给别人或自己使用。有点像OEM了。既然两个公司需要合作,不可能靠一句话就可以的,就需要一些标准和规范的东西来实现。那么:
SOAP 就像两个公司之间签的合同,约束双方按一定规矩和标准办事。
WSDL 则像说明书,告诉别人你有什么,能给别人提供什么服务。
UDDI 好比你的公司需要在黄页或工商注册,企业的主营业务登记,方便别人查询。当然,你也可以不在 UDDI 中注册,就像在地下室开展业务,靠的是口头吆喝;但是如果你希望拓展市场,则需要 UDDI 以便能被客户发现,更方便地找到你。
Web Service是创建可互操作的分布式应用程序的新平台。Web Service 的主要目标是跨平台的可互操作性。为了达到这一目标,Web Service 是完全基于XML、XSD等独立于平台、独立于软件供应商的标准的。Web Service在应用程序跨平台和跨网络进行通信的时候是非常有用的。Web Service适用于应用程序集成、B2B集成、代码和数据重用,以及通过Web进行客户端和服务器的通信的场合。
当然,Web Service也不是万能的,你不能到处滥用Web Service。在有些情况下,Web Service 会降低应用程序的性能,而不会带来任何好处。例如,一台机器或一个局域网里面运行的同构应用程序就不应该用Web Service 进行通信。
到现在为止,我们已经讨论了如何与 Web Service 通信(SOAP),Web Service是怎样进行说明的(WSDL),以及如何查找 Web Service(UDDI)。这些内容构成了一套基本规范,为应用程序的集成和聚合提供了基础。根据这些基本规范,公司可以构建实际的解决方案,并从中获益
原文转载:http://blog.csdn.net/onetree2010/article/details/6320408