【TechTarget中国原创】在不同的技术平台之间建立通信一直是企业数据处理遥不可及的梦想,尽管大多数IT部门在机构中都试图避免信息‘岛’。事实上,我们还是要呼吁SOA应该通过大量的服务资源来避免这些‘岛’。下面我要向大家介绍一个名为Thrift的项目,以及这个项目应对SOA问题的方法。
为了能够更好的了解Thrift所要解决的问题,我们先要看看更多的SOA方法。REST和SOAP原则下所设计的服务在当今网络约束的应用中颇为流行,通过使用XML有效负荷和WSDL/WADL描述符,可以减少平台之间的差异,缩小各种技术平台和程序设计语言之间的差异。
早在REST和SOAP出现以前,分布式通信就实现了——但是经常会通过DCOM和CORBA被分解。理论上讲,像REST和SOAP这些最新的技术试图通过“包裹共同方法里的端点”来屏蔽平台之间的差异。
所有这些分布式通信在避免信息‘岛’方面迈出了很大的一步。并且在应用于公司内部应用的过程中也带来了许多复杂性和内务操作,这就必须依赖另一个环境,该环境意在协调分布式通信的各方。基于JAVA业务接口(JBI)标准基础上的产品或者微软公司自己的BizTalk服务器都在协调不同客户和服务器应用之间的矛盾,而不必考虑用户和服务器使用的底层技术平台,就可以完成一个业务流程。
最后这些产品涉及到许多集成情况包括企业通信和更加复杂的支持例如BPEL(业务流程执行语言)的使用。此外,由于自身的标准,这些支持还十分的复杂。结果在集成流程中增加新的分布式技术会成指数地加复杂性,这是因为有些外围实例在一个平台中是标准,到了另一个平台可能就不存在了。
有些分布式技术如CORBA的不一致性可能就是致命的弱点。比如,在一个像C++或者C编程语言中建立一个用户,要用Python或者Java和服务器通信可能非常复杂;那么两个语言的数据类型分配是否均匀呢?怎样解释语言之间的错误呢?像这样的周边实例问题需要纳入我们的思考范围。而且支持编程语言的数量越大,服务器和用户之间的交流就越为复杂。
假如你希望支持尽可能多的编程语言,并且对周边实例不感兴趣,只是单纯的想要增加简单性,严格的处理服务,以及其它像JBI或者BizTalk这样的功能。
Thrift是在Apache软件基金的监督下开发的开放源项目,在以下编程语言中简化了对跨语言服务的开发:C++,Java,Python,PHP,Ruby,Erlang,Perl,Haskell,C#,Cocoa,Smalltalk和OCaml。Thrift实际上简化了客户和服务器的创立,虽然它还要为分布式通信提供并管理所有的管道。而这些管道可以被理解成为通信连接协议,目标序列化以及插座管理。