同事的分享—WebService
这是同事看了一本关于WebService的书《Web Service原理与研发实践》所做的一部分分享,为了避免文档丢失,先将其保存在我的博客上吧,版权归她本人所有。
第一章 Web Services
客户根据 WSDL 描述文档,会生成一个 SOAP 请求消息。Web Services 都是放在Web服务器(如IIS)后面,客户生成的SOAP请求会被嵌入在一个HTTP POST请求中,发送到 Web 服务器来。Web 服务器再把这些请求转发给 Web Services 请求处理器。请求处理器的作用在于:解析收到的 SOAP 请求,调用 Web Services, 然后再生成相应的 SOAP 应答。Web 服务器得到 SOAP 应答后,会再通过 HTTP应答的方式把信息送回到客户端。
Web Services 体系主要包括以下几个方面:
① Web Services 组件。包括 3 种组件:
服务提供者:提供服务,进行注册以使服务可用;
服务代理:服务交换所,服务提供者和服务请求者之间的媒体;
服务请求者:向服务代理请求服务,调用这些服务创建应用程序。
② Web Services 操作。包括 3 种操作:
发布/不发布(Publish/Unpublish):提供者向代理发布(注册)服务或不发布(移去)这些服务的注册;
发现(Find):由服务请求者向服务代理执行 find 操作,服务请求者描述要找的服务,服务代理分发匹配的结果;
绑定(Bind):在服务请求者和服务提供者之间绑定,这两部分协商以使请求者;可以访问和调用提供者的服务。
③ UDDI——通用发现、描述和整合。
这是一个Web Services的信息注册规范,基于UDDI的Web Services注册可以被发现。 UDDI 的发现方法是:在 Web 上有一种分布的注册服务,商务和服务以一种通用的 XML 格式描述,XML 中的结构化数据易于发现、分析和操作。
④ WSDL——Web 服务描述语言。
Web 服务描述言语(WSDL)是一种 XML 语法,为服务提供者提供了描述构建在不同协议或编码方式之上的 Web Services 请求基本格式的方法。WSDL 用来描述一个 Web Services 能做什么,它的位置在哪里,如何调用它等。在假定以SOAP/HTTP/MIME 作为远程对象调用机制的情况下,WSDL 会发挥最大作用。UDDI 注册描述了 Web Services 绝大多数方面,包括服务的绑定细节。WSDL 可以看作是 UDDI 服务描述的子集。
WSDL 将服务定义为一个网络端点的集合,或者说端口的集合。在 WSDL 里面,端点及消息的抽象定义与它们具体的网络实现和数据格式绑定是分离的。这样就可以重用这些抽象定义:消息,需要交换的数据的抽象描述;端口类型,操作的抽象集合。针对一个特定端口类型的具体协议和数据格式规范构成一个可重用的绑定。一个端口定义成网络地址和可重用的绑定的连接,端口的集合定义为服务。因此一个 WSDL 文档在定义网络服务的时候使用如下的元素:
类型——使用某种的类型系统(如 XSD)定义数据类型的容器;
消息——通讯数据抽象的有类型的定义;
操作——服务支持动作的抽象描述;
端口类型——一个操作的抽象集合,该操作由一个或多个端点支持;
绑定——针对一个特定端口类型的具体协议规范和数据格式规范;
端口——一个单一的端点,定义成一个绑定和一个网络地址的链接;
服务——相关端点的集合。
所以不难看出,WSDL 给客户提供了一个模板,方便客户描述和绑定服务
基础的 Web Services 平台是 XML + HTTP。HTTP 协议是最常用的因特网协议。XML 提供了一种可用于不同的平台和编程语言之间的语言。
Web services 平台的元素:
SOAP (简易对象访问协议)
UDDI (通用描述、发现及整合)
WSDL (Web services 描述语言)
1.整体结构
2.一个Web Service客户端,顾名思义是和一个Web Service服务器进行交互。
下面是一个Web Service客户端调用Web Service的基本过程。
--> 构造SOAP请求消息(将本地数据对象转换为SOAP消息)
--> 发送SOAP消息到Web Service服务器的指定端口
--> 接收SOAP响应消息
--> 将SOAP响应消息转换为本地数据对象
3.webService与SOA的关系
webService是SOA的一个具体实现SOA是思想就像面向对象和J2ee的关系。
4.SOAP基于HTTP的,在http协议下传输xml文件
5.UDDI:发现和整合服务,很少用
6.开发方法:只要获得wsdl方式即可
7.webService效率较慢传输的是文本EJB和CORBA传输的是二进制,效率较好。
8.拦截soap请求和响应信息
第二章 XML
可扩展标记语言 (Extensible Markup Language, XML) ,用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。 XML是标准通用标记语言 (SGML) 的子集,非常适合 Web 传输。XML 提供统一的方法来描述和交换独立于应用程序或供应商的结构化数据。
格式特性
XML与Access,Oracle和SQL Server等数据库不同,数据库提供了更强有力的数据存储和分析能力,例如:数据索引、排序、查找、相关一致性等,XML仅仅是展示数据。事实上XML与其他数据表现形式最大的不同是:他极其简单。这是一个看上去有点琐细的优点,但正是这点使XML与众不同。
XML与HTML的设计区别是:XML是用来存储数据的,重在数据本身。而HTML是用来定义数据的,重在数据的显示模式。
XML的简单使其易于在任何应用程序中读写数据,这使XML很快成为数据交换的唯一公共语言,虽然不同的应用软件也支持其它的数据交换格式,但不久之后他们都将支持XML,那就意味着程序可以更容易的与Windows、Mac OS, Linux以及其他平台下产生的信息结合,然后可以很容易加载XML数据到程序中并分析他,并以XML格式输出结果。
为了使得SGML显得用户友好,XML重新定义了SGML的一些内部值和参数,去掉了大量的很少用到的功能,这些繁杂的功能使得SGML在设计网站时显得复杂化。XML保留了SGML的结构化功能,这样就使得网站设计者可以定义自己的文档类型,XML同时也推出一种新型文档类型,使得开发者也可以不必定义文档类型。
简明语法
SGML常用来定义针对HTML的文档类型定义(DTD),同时它也常用于编写XML的DTD。SGML的问题就在于,它允许出现一些奇怪的语法,这让创建HTML的解析器成为一个大难题:
1 某些起始标签不允许出现结束标签,例如HTML中<img>标签。包含了结束标签就会出现错误。
2 某些起始标签可以选择性出现结束标签或者隐含了结束标签
3 某些起始标签要求必须出现结束标签,例如HTML中<script>标签。
4 标签可以以任何顺序嵌套。即使结束标签不按照起始标签的逆序出现也是允许的,例如,This is a sample string是正确的。
5 某些特性要求必须包含值,例如<img src="picture.jpg">中的src特性。
6 某些特性不要求一定有值,例如中的nowrap特性。
7 定义特性的两边有没有加上双引号都是可以的,所以<img src="picture.jpg">和<img src=picture.jpg>都是允许的。
这些问题使建立一个SGML语言的解析器变成了一项艰巨的任务。判断何时应用以上规则的困难导致了SGML语言的定义一直停滞不前。以这些问题作为出发点,XML逐渐步入我们的视野。
XML去掉了之前令许多开发人员头疼的SGML的随意语法。在XML中,采用了如下的语法:
1 任何的起始标签都必须有一个结束标签。
2 可以采用另一种简化语法,可以在一个标签中同时表示起始和结束标签。这种语法是在大于符号之前紧跟一个斜线(/),例如</tag >。XML解析器会将其翻译成<tag></tag>。
3 标签必须按合适的顺序进行嵌套,所以结束标签必须按镜像顺序匹配起始标签,例如this is a samplestring。这好比是将起始和结束标签看作是数学中的左右括号:在没有关闭所有的内部括号之前,是不能关闭外面的括号的。
4 所有的特性都必须有值。
5 所有的特性都必须在值的周围加上双引号。
这些规则使得开发一个XML解析器要简便得多,而且也除去了解析SGML中花在判断何时何地应用那些奇怪语法规则上的工作。仅仅在XML出现后的前六年就衍生出多种不同的语言,包括MathML、SVG、RDF、RSS、SOAP、XSLT、XSL-FO,而同时也将HTML改进为XHTML。
第三章XML Schema
XML Schema是以XML语言为基础的,它用于可替代DTD。 一份XML schema文件描述了XML文档的结构。XML Schema语言也被称为XML Schema Definition (XSD)(XML Schema定义)。
1.什么是XML Schema?
XML Schema的作用是定义一份XML文档的合法组件群,就像DTD的作用一样,一份XML Schema:
ü 定义了可以出现在文档里的元素 ;
ü 定义了可以出现在文档里的属性 ;
ü 定义了哪些元素是子元素 ;
ü 定义了子元素的顺序 ;
ü 定义了子元素的数量 ;
ü 定义了一个元素应是否能包含文本,或应该是空的 ;
ü 定义了元素和属性的数据类型 ;
ü 定义了元素和属性的默认值和固定值 ;
2.XML Schema 是DTD的“接任者”
我们认为XML Schema很快就会替代DTD在大多数的网络应用程序中被广泛使用。
ü XML Schema针对将来的额外内容是可扩展的 ;
ü XML Schema内容比DTD丰富,作用也更大 ;
ü XML Schema是以XML语言编写而成的 ;
ü XML Schema支持数据类型 ;
ü XML Schema支持名称空间(namespaces);
3.XML Schema是W3C定义的标准
XML Schema于2001年5月2日成为W3C推荐使用的标准,在W3C 教程中你能阅读到更多关于XML Schema标准。
第四章 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服务中运用。
语法规则
这里是一些重要的语法规则:
ü SOAP 消息必须用 XML 来编码
ü SOAP 消息必须使用 SOAP Envelope 命名空间
ü SOAP 消息不能包含 DTD 引用
ü SOAP 消息不能包含 XML 处理指令
SOAP 核心技术
SOAP采用了已经广泛使用的两个协议:HTTP 和XML。HTTP用于实现 SOAP 的RPC 风格的传输, 而XML 是它的编码模式。采用几行代码和一个XML 解析器, HTTP 服务器( MS 的 IIS 或 Apache) 立刻成为SOAP 的 ORBS。SOAP 通讯协议使用 HTTP 来发送XML 格式的信息。HTTP与RPC 的协议很相似,它简单、 配置广泛,并且对防火墙比其它协议更容易发挥作用。HTTP 请求一般由 Web 服务器软件(如 IIS 和Apache)来处理, 但越来越多的应用服务器产品正在支持HTTP。XML 作为一个更好的网络数据表达方式( NDR)。SOAP 把 XML 的使用代码化为请求和响应参数编码模式, 并用HTTP 作传输。具体地讲, 一个SOAP 方法可以简单地看作遵循SOAP编码规则的HTTP请求和响应, 一个 SOAP 终端则可以看作一个基于HTTP 的URL, 它用来识别方法调用的目标。像CORBA/ IIOP一样, SOAP不需要具体的对象绑定到一个给定的终端, 而是由具体实现程序来决定怎样把对象终端标识符映像到服务器端的对象。
SOAP 的优点
(1) SOAP 是可扩展的。SOAP 无需中断已有的应用程序, SOAP 客户端、 服务器和协议自身都能发展。而且SOAP 能极好地支持中间介质和层次化的体系结构。
(2) SOAP 是简单的。客户端发送一个请求,调用相应的对象, 然后服务器返回结果。这些消息是XML 格式的,并且封装成符合HTTP 协议的消息。因此,它符合任何路由器、 防火墙或代理服务器的要求。
(3) SOAP 是完全和厂商无关。SOAP可以相对于平台、 操作系统、 目标模型和编程语言独立实现。另外,传输和语言绑定以及数据编码的参数选择都是由具体的实现决定的。
(4) SOAP 与编程语言无关。SOAP 可以使用任何语言来完成, 只要客户端发送正确SOAP 请求( 也就是说, 传递一个合适的参数给一个实际的远端服务器)。SOAP 没有对象模型, 应用程序可以捆绑在任何对象模型中。
(5) SOAP 与平台无关。SOAP 可以在任何操作系统中无需改动正常运行。




浙公网安备 33010602011771号