WebService与行使风格RPC/SOA/REST

 

 

CORBA是对象管理集团(OMG)的一个标准,使得不同语言编写的,运行在不同计算机上的能够协同工作。标准包括分布式计算的通讯协议(GIOP和IIOP),可映射到多种语言的接口描述语言(IDL),对象请求代理(ORB)以及相关服务,如生命周期,全局事务,持久性等。

一 webservice

SOA是以可互操作的服务的形式设计和开发软件的一系列原则和方法。SOQ是一种抽象的方法,和具体的技术无关,但是一般来说,涉及Web服务和企业服务总线(ESB)技术有关。下面比较SOA的异同时主要是指这两项技术。

Web Services 可使您的应用程序成为 Web 应用程序。Web Services 通过 Web
进行发布、查找和使用。通过使用 Web
Services,您的应用程序可以向全世界发布信息,或提供某项功能。

  • Web服务是用来
    支持网络中的机器对机器的互操作的软件系统。Web服务包括基于HTTP和XML的通信协议(SOAP)和服务接口描述语言(WSDL),以及服务查找接口(UDDI)
  • 企业服务总线(ESB)是用于设计和实现互交互软件应用之间的交互和通讯的软件体系架构模型。

1) 什么是Web Services?
Web Services 是应用程序组件
Web Services 使用开放协议进行通信
Web Services 是独立的(self-contained)并可自我描述
Web Services 可通过使用UDDI来发现
Web Services 可被其他应用程序使用
XML 是 Web Services 的基础

Protocol
Buffers(protobuf)
是一种高效、可扩展的结构数据编码的方式。谷歌在所有的内部远程过程调用(RPC)和文件格式上
使用protobuf。protobuf可以将编程语言中的对象转换为可以在网络上发送的字节流。protobuf有自己的描述数据结构的语言,并提供一个编译器将该描述编译成编程语言中的对象,目前支持C++,Python,Java几种语言。 

 

共同点
三者之间的共同点有:

2)它如何工作?
基础的 Web Services 平台是 XML + HTTP。

  • 都是分布式计算环境下的技术。
  • 都是跨平台、跨语言的技术。
  • 都解决了对象的序列化和反序列化问题。
  • 都是与通信协议有关,IIOP,SOAP, protobuf 是三种不同的通信协议。
  • 都可以用来实现远程过程调用(RPC)
  • 都有描述数据结构的语言,如IDL,WSDL+XML Schema,protobuf的描述语言。

HTTP 协议是最常用的因特网协议。XML
提供了一种可用于不同的平台和编程语言之间的语言。

不同点
三者之间的差异有:

Web services 平台的元素:
•SOAP (简易对象访问协议)
•UDDI (通用描述、发现及整合)
•WSDL (Web services 描述语言)

  • 分布式计算环境不同,CORBA所处的时代是局域网的时代,而SOA和protobuf都是互联网和万维网的时代。互联网的时代更为开放。
  • 对象的序列化的结果,SOAP使用文本格式,而protobuf,IIOP使用二进制格式。三者经历了从二进制到文本再到二进制的过程。从IIOP的二进制到SOAP使用的XML,追求的是互操作性,而从SOAP的XML到protobuf的二进制,追求的是性能。 
  • 作为通信协议,protobuf仅关心对象的序列化和反序列化,而IIOP和SOAP还关心底层的通信协议,RPC的语义等。
  • CORBA和Web服务都可以实现远程过程调用,而protobuf需要与其他技术I来实现RPC( http://code.google.com/p/protobuf/wiki/ThirdPartyAddOns#RPC_Implementations )。基于protobuf的不同RPC实现很难互操作。
  • CORBA和Web服务都是标准,而protobuf是一个具体的技术实现。
  • CORBA和Web服务都是重量级技术 ,而protobuf是一个轻量级技术。

 

在CORBA和SOA之间的差异有:

3)工作过程,如图:

CORBA是一种组件技术,而Web服务是一种服务技术。相比而言,有以下差异:

威尼斯官方网站 1

  • 服务是粗粒度的,而组件是较细粒度的,对象是更细粒度的。
  • 服务有业务的含义,而组件可以没有。
  • 服务是松耦合的,而组件是较紧耦合的,对象是更紧耦合的。
  • 服务通常是无状态的,而组件和对象是有状态的。
  • 服务是实例化的,带有配置和环境的,而组件是静态的,未部署运行的。

 

SOA更强调互操作性。

二 SOAP


SOAP 是指简单对象访问协议(simple object access protocal)。

Google的protocol
buffers?这个跟corba、soa没啥关系,不同层次的概念,没法比。
protocol buffer:一种序列化协议
corba:对象间分布式通讯协议
SOA:一种架构风格/方式

SOAP是基于 XML 的简易协议,可使应用程序在 HTTP
之上进行信息交换。或者更简单地说:SOAP 是用于访问网络服务的协议。

 


1) 什么是 SOAP?
•SOAP 指简易对象访问协议
•SOAP 是一种通信协议
•SOAP 用于应用程序之间的通信
•SOAP 是一种用于发送消息的格式
•SOAP 被设计用来通过因特网进行通信
•SOAP 独立于平台
•SOAP 独立于语言
•SOAP 基于 XML
•SOAP 很简单并可扩展
•SOAP 允许您绕过防火墙
•SOAP 将被作为 W3C 标准来发展

Window 下Qt怎么使用protocol buffer?

 

不知道你解决了没有,也不知道你还需不需要解决方案,但既然有这个问题,我就说一下,两种方法:1,.用QT构建一个类库工程,把protobuf的源代码放进去,用qmake编译,这样,最后就形成了可用的库。但是中途苦难重重,各种报错,不建议。
2.用CYGWIN/mingw+msys
编译protobuf库,是的,用CYGWIN编译最容易也最简单,因为需要的库和头文件都可以自行安装,而mingw+msys的libtools的更新速度赶不上protobuf的更新速度,有时候缺少头文件,编译会失败。
我用的第二种方案,编译成功后会有libprotobuf.a
libprotobuf.dll.a等6个文件生成,注意接下来这一步很关键,在qt里面引用的时候LIBS
+= -Lxxxx/cygwin/usr/local/lib -lprotobuf 同时不要忘记加:INCLUDEPATH +=
xxxx/cygwin/usr/local/include不然依然会构建失败。

2)Why SOAP?
对于应用程序开发来说,使程序之间进行因特网通信是很重要的。

目前的应用程序通过使用远程过程调用(RPC)在诸如 DCOM 与 CORBA
等对象之间进行通信,但是 HTTP 不是为此设计的。RPC
会产生兼容性以及安全问题;防火墙和代理服务器通常会阻止此类流量。

通过 HTTP 在应用程序间通信是更好的方法,因为 HTTP
得到了所有的因特网浏览器及服务器的支持。SOAP
就是被创造出来完成这个任务的。

SOAP
提供了一种标准的方法,使得运行在不同的操作系统并使用不同的技术和编程语言的应用程序可以互相进行通信。

 

三 WSDL

WSDL 指网络服务描述语言 (Web Services Description Language)。

WSDL 是一种使用 XML 编写的文档。这种文档可描述某个 Web
service。它可规定服务的位置,以及此服务提供的操作(或方法)。

 

1) 什么是 WSDL?
•WSDL 指网络服务描述语言
•WSDL 使用 XML 编写
•WSDL 是一种 XML 文档
•WSDL 用于描述网络服务
•WSDL 也可用于定位网络服务
•WSDL 还不是 W3C 标准

 

四 UUDI

UDDI 是一种目录服务,企业可以使用它对 Web services 进行注册和搜索。

威尼斯官方网站,UDDI,英文为 “Universal Description, Discovery and
Integration”,可译为“通用描述、发现与集成服务”。

1)什么是 UDDI?
UDDI 是一个独立于平台的框架,用于通过使用 Internet
来描述服务,发现企业,并对企业服务进行集成。

•UDDI 指的是通用描述、发现与集成服务
•UDDI 是一种用于存储有关 web services 的信息的目录。
•UDDI 是一种由 WSDL 描述的 web services 界面的目录。
•UDDI 经由 SOAP 进行通信
•UDDI 被构建入了微软的 .NET 平台
UDDI 基于什么?
UDDI 使用 W3C 和 IETF* 的因特网标准,比如 XML、HTTP 和 DNS 协议。

UDDI 使用 WSDL 来描述到达 web services 的界面

发表评论

电子邮件地址不会被公开。 必填项已用*标注

相关文章