今天第一次写博客,个人认为在学习过程中把总结的要点和遇到的问题写下来是很有益的。今天总结一下web services ,希望对学习这方面技术的朋友有所帮助。
目前web services很火呀,这与各大公司都在推广SOA有关。闲话不多说,下面进入正题。
1.什么是Web Services
简单地说就是一个应用程序,它向外界暴露出一个能够远程进行调用的程序。
Web services建立可互操作的分布式应用程序 。
2.架构
服务提供者到注册中心(uddi)注册自己的服务。服务请求者(客户端)到注册中心(uddi)找到需要的web服务,并获得服务定义(wsdl),根据wsdl定义就可以调用相应的服务(通过soap协议)。
3. Web Services基本概念
Soap:(Simple Object Access Protocol)简单对象访问协议。是XML Web Service 的通信协议。当用户通过UDDI找到你的WSDL描述文档后,他通过可以SOAP调用你建立的Web服务中的一个或多个操作。SOAP是XML文档形式的调用方法的规范,它可以支持不同的底层接口,像HTTP(S)或者SMTP。
WSDL:(Web Services Description Language) WSDL 文件是一个 XML 文档,它对web Services的接口进行了定义,用于说明一组 SOAP 消息以及如何交换这些消息。大多数情况下由软件自动生成和使用。
UDDI是一种查找相应服务的机制,用于web服务的发布、浏览以及查找注册信息。它采用XML格式来封装各种不同类型的数据,并且发送到注册中心或者由注册中心来返回需要的数据。
这里特别要提出,UDDI不是必须的,事实上目前在企业项目中很少用到UDDI。
4. Web Service特点
Web Service的主要目标是跨平台的可互操作性。为了实现这一目标,Web Service 完全基于XML(可扩展标记语言)独立于平台、独立于开发语言的标准,是创建可互操作的、分布式应用程序的新平台。
优点: 跨防火墙的通信 、应用程序集成 (异构系统) 、软件和数据重用
缺点: 访问速度慢、稳定性问题。
5. Java与.net互操作
WSDL 文件是一个 XML 文档,它对web Services的接口进行了定义,用于说明一组 SOAP 消息以及如何交换这些消息。只要获得服务地址和WSDL 文件,就可对服务进行调用,无论服务的实现者是java还是.net。
操作方式:
1、直接解析soap消息。(繁琐、效率低)
2、通过工具(apache soap、visual studio)
事实上支持web services的各种语言和平台都可以实现互操作,如vb,delphi。只不过目前主流是Java与.net。
6.SOA与Web Service
最后我想说说SOA与Web Service的关系,这是经常被混淆的两个概念。
SOA(Service-oriented architecture,面向服务架构)。 将企业应用系统中细粒度的功能打包成粗粒度的服务,通过中间方式(语言),实现异构系统(操作系统、开发语言)之间的通讯、调用。
SOA并不是一种技术,而是一种软件设计理念。
Web service != SOA,但Web service 是目前实现SOA的最好方式。