protocol buffer和當年corba ,和現在SOA有啥異同點

來源:互聯網
上載者:User

標籤:

 

CORBA是對象管理集團(OMG)的一個標準,使得不同語言編寫的,運行在不同電腦上的能夠協同工作。標準包括分散式運算的通訊協議(GIOP和IIOP),可映射到多種語言的介面描述語言(IDL),對象請求代理(ORB)以及相關服務,如生命週期,全域事務,持久性等。

SOA是以可互操作的服務的形式設計和開發軟體的一系列原則和方法。SOQ是一種抽象的方法,和具體的技術無關,但是一般來說,涉及Web服務和企業服務匯流排(ESB)技術有關。下面比較SOA的異同時主要是指這兩項技術。

  • Web服務是用來 支援網路中的機器對機器的互操作的軟體系統。Web服務包括基於HTTP和XML的通訊協定(SOAP)和服務介面描述語言(WSDL),以及服務尋找介面(UDDI)
  • 企業服務匯流排(ESB)是用於設計和實現互互動軟體應用之間的互動和通訊的軟體體系架構模型。

Protocol Buffers(protobuf)是一種高效、可擴充的結構資料編碼的方式。Google在所有的內部遠端程序呼叫(RPC)和檔案格式上 使用protobuf。protobuf可以將程式設計語言中的對象轉換為可以在網路上發送的位元組流。protobuf有自己的描述資料結構的語言,並提供一個編譯器將該描述編譯成程式設計語言中的對象,目前支援C++,Python,Java幾種語言。 

共同點
三者之間的共同點有:

  • 都是分散式運算環境下的技術。
  • 都是跨平台、跨語言的技術。
  • 都解決了對象的序列化和還原序列化問題。
  • 都是與通訊協定有關,IIOP,SOAP, protobuf 是三種不同的通訊協定。
  • 都可以用來實現遠端程序呼叫(RPC)
  • 都有描述資料結構的語言,如IDL,WSDL+XML Schema,protobuf的描述語言。


不同點
三者之間的差異有:

  • 分散式運算環境不同,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之間的差異有:

    • CORBA是一種組件技術,而Web服務是一種服務技術。相比而言,有以下差異:
      • 服務是粗粒度的,而組件是較細粒度的,對象是更細粒度的。
      • 服務有業務的含義,而組件可以沒有。
      • 服務是松耦合的,而組件是較緊耦合的,對象是更緊耦合的。
      • 服務通常是無狀態的,而組件和對象是有狀態的。
      • 服務是執行個體化的,帶有配置和環境的,而組件是靜態,未部署啟動並執行。
    • SOA更強調互通性。

------------------------------------------------------

Google的protocol buffers?這個跟corba、soa沒啥關係,不同層次的概念,沒法比。
protocol buffer:一種序列化協議。
corba:對象間分布式通訊協議。
SOA:一種架構風格/方式。

http://www.zhihu.com/question/20279489

------------------------------------------------------

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不然依然會構建失敗。

http://www.zhihu.com/question/20987397

protocol buffer和當年corba ,和現在SOA有啥異同點

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.