前段时间开始看了些SOA的资料,觉得用服务这个思想非常好,通过服务编排来实现企业IT与业务的对齐。服务具有标准的接口规范(用WSDL)来描述,独立于实现服务的软件平台和编程语言。
但是在服务编排时,如何保证两个服务之间能够实现接口互联互通了?比如服务A的输入输出分布表示为INPUT_A(a,b,c),OUTPUT(d),这些接口用wsdl描述,而服务B的输入输出INPUT_A(d,e),OUTPUT(f,g),那么即使服务A和服务B就无法连接起来,是这样的嘛?也就是说服务连接不仅要收到输入输出参数个数的限制,还可能要收到参数类型的限制,虽然接口都是用WSDL描述的。这样的话将会给服务规划、实现和编排带来严重的问题,因为服务接口参数个数不一致,服务之间不能随意装配,也就需要开发一些连接器才能实现业务流程。
是这样的吗?
首先,解释下WSDL规范,通过这个规范,可以将Web service 所提供的服务操作、服务操作的参数个数以及类型用XML形式描述,这样做到与具体编程语言以及运行平台的解耦,这是其关键的目标,各个服务之间的调用与依赖关系完全用XML来描述,不必考虑各种编程语言的影射,数据类型的转换问题。
而要实现服务之间的互通,首先必须让要实现此服务的客户知道此服务的存在,那么就催生了UDDI,实现对web service的注册发布功能。然后利用WSDL的对web service服务操作抽象级的描述,便于分布式服务间通讯调用等。
所谓服务编排是指可以利用已有的服务来组装出新的服务,可以这么认为,web service就是提供了一类逻辑意义上的函数,公布出来,如果一旦企业由新的需求,但这些需求完全可以利用已有的函数功能来完成,那么就可以象利用编程方式一样利用ws-BPEL引擎编排出新的功能,所谓的编排只是对已有的多个web service所提供的功能函数进行调用,这里面会考虑调用的先后次序、函数的签名(也就是函数名,参数个数,参数类型),这些信息无论如何解耦都不可能忽略掉的!
再未用web service技术之前,app1用java开发,其公布出函数集function1,而app2用c++开发,其公布出函数集function2,那么他们之间的互联互通要考虑的问题就多了,除了函数签名信息外,还要考虑平台问题、运行环境问题、编程语言参数匹配问题、通讯协议问题等等复杂的问题。
有了统一的调用接口后,只需要考虑函数签名问题等问题了。
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
相关推荐
-
BEST:SOAP/XML和REST的替代方案
虽然拥有大量的机架服务器,以及大量软件开发人员的组织,基于web和集成服务的SOAP和REST很适合他们,但也会出现问题。
-
Spring 烂!差!
有些人可能对Spring的第一印象不太好,它真的很烂,很差吗,也许这只是你的一种偏见,它也有是自己的优点的。
-
专家全面解读WebService开发技术的奥秘
SOA是当今企业软件架构的热点,而Web Service是SOA的一种较好的实现方式,但你对Web Service了解多少?
-
基于SOA架构的业务安全性研究
SOA在提供价值链上企业之间信息共享和业务流程自动化的同时,也给业务信息安全带来了负面影响,且存在安全隐患,这些你知道吗?