如今,大多数分析家、供应商和作家都只推荐一种实现SOA的方法:使用Web Services。
一、使用Web Services的动机
人们普遍认为,Web Services应该是实践中实现SOA的"唯一"方法。
1、什么是Web Services
Web Services指的是一个覆盖了互操作性的标准集合。实际上,这些标准即定义
了用来通信的协议,也定义了用来阐明服务和服务契约的接口的格式。
2、Web Services的历史
微软在2000年创造了Web Services这个词,它描述的是允许计算机通过网络(互联网是其典型,
但并不局限于此)相互通信的一套标准,核心标准之一是可扩展标记语言(XML),
另一个是HTTP(互联网的核心协议)、
二、基础Web Services标准
Web Services 有5个基础标准,其中两个是早就有了的通用标准,他们被用来实现Web Services方法:
1、XML
是用来描述模型、格式和数据类型的通用格式,其他大多数标准都是用XML来表达的标准。
实际上,Web Services所有标准都基于XML、XSD(XML大纲定义),以及XML命名空间
2、HTTP包括(HTTPS)
是互联网使用的底层协议。HTTP(s)是运用了互联网技术,通过网络发送Web Services的可能的协议之一
其他3个基础标准时专用于Web Services的,也是最早规定的标准:
3、WSDL
用来定义服务接口。实际上,他能描述服务的两个不同方面:服务的签名(名称和参数),
以及服务的绑定和部署细节协议和位置)。
4、SOAP
是定义Web Services协议的标准。HTTP是一个同时用于互联网的底层协议,
而SOAP是Web Services的专用格式,通过此协议交换Web Services数据。
SOAP最初是"简单对象访问协议"的首字母缩写词,然而,后来开发者发现SOAP即不简单,
也不处理对象访问。所以,从1.2版开始,这个缩写词就被当作一个词使用,不再代表一种缩写了。
5、UDDI
是管理Web Services的标准(及注册和找到服务)。
通常来说,使用WSDL标准是Web Services的关键特征,其他所有东西都是可选的。
例如,你不一定非得使用SOAP和HTTP来发送服务请求,你额可以使用其他协议而仍然算在用Web Services。
另外,UDDI只扮演着补充的角色,即非必需,而且通常在实践中也不用。
由于技术方面的原因,WebService通常确实需要一个中间人。WebService内生是点到点的连接,
需要某种机制和/或过程来避免在WebService消费者里面进行硬编码寻址。于是,出现了其他解决方案。
一般说来,看起来有的公司在使用UDDI,但是其他公司在扩展既存的注册中心解决方案,如LDAP、
Java命名与目录(JNDI)、关系型数据库或者CORBA交易者,还有另一个用得少些的选择是ebXML注册中心。三、实践中的Web Services
1、开放的标准化
Web Services的第一个问题是,他不是一个由单个标准化组织定义的标准。
有超过50个不同的Web Services规范,分别由三家不同的标准化组织制定(W3C、OASIS和WS-I)。
2、协议考量
Web Services内生地是点到点的,并且是协议驱动的。
一个协议驱动的ESB有其优点:每个消费者和供应者都可以使用各自的工具来调用和实现Web Services。
唯一必须保证的是协议的要求被适当地满足了。
点到点协议的一个重要考量是你需要确保服务供应者的地址没有硬编码咋消费者代码中。
3、WSDL的生命周期
4、WSDL的缺陷
令人惊讶的是,就服务的技术特性而言,WSDL也有缺陷,一个严重的缺陷(至少到WSDL1.1都是如此)是
缺乏非功能性特性和服务等级协议特性。一个WSDL文件没有指明服务通常运行多长时间,谁能调用服务,
服务调用的成本有多大。等等。通常来说,要在一个大型SOA中管理服务,必须知道这些方面。
某些WSDL缺陷不久就可以用新WSDL标准版本弥补,但是,那些不能弥补的怎么办?
你能做些什么?有3个选择:
①在需要的时候和地方,使用自己的格式对服务进行描述,再从这里面生成WSDL
②用补充文件在外部扩展WSDL文件,指定缺失的属性
③用额外的XML元素和属性在内部扩展WSDL文件
四、总结
Web Services标准扮演了两个不同的角色
1、一方面,他们为服务的抽象描述指定了标准。这些标准可能是接口描述,如WSDL
文件中的第一层;或者是服务配置和工作流,如BPEL中的第一层。
2、另一方面,他们为SOA基础设施(ESB)的具体实现指定协议。
一定要把这两个角色分开。你可以使用BPE来建模工作流而不使用任何特定的Web Services协议,
你也可以用WSDL指定服务接口而不涉及有关如何调用这些服务的任何内容。
五、表现状态传输(REST)
一个被称为"表现状态传输"(REST)的Web Services替代品引起了公众的注意,它指的是一个网络架构
原则的集合,聚焦于对资源进行简单和无状态方法(这可以被认为是帮助互联网伸缩和成长的关键设计原则)
。。。。。。