視頻鏈接:https://v.qq.com/x/page/q0533wwux92.html
github:https://ptteng.github.io/PPT/PPT-java/java_Task9_sca.html#/
SCA全稱Service Component Architecture,即服務組件框架。它由BEA、IBM、Oracle等知名中間件廠商聯合制定的一套符合SOA思想的規范。
SCA在2005年11月,發布了0.9版本的規范,其中包括了組裝模型規范,Java/C++客戶端以及其實現規范。2006年4月,整個SCA規范有了很大的改進,推出了對應的0.95版本。2007年3月,SCA的1.0版本終于發布。
Task9的tuscany就是SCA規范的實現。
面向服務的架構(SOA)是一個組件模型,它將應用程序的不同功能單元(稱為服務)通過這些服務之間定義良好的接口和契約聯系起來。接口是采用中立的方式進行定義的,它應該獨立于實現服務的硬件平臺、操作系統和編程語言。這使得構建在各種各樣的系統中的服務可以以一種統一和通用的方式進行交互。
SCA提供了構建分布式系統的簡單模型其次,SCA通過composite,component和服務的方式來實現應用程序資源和業務邏輯的重用。
而且SCA它作為一種編程規范,與具體的語言和平臺無關。它既可以運行于統一操作系統的不同進程,也可以跨越不同機器上的多個進程。而且SCA作為一種規范,需要與其他企業架構結合使用,比如它沒有定義持久層和表現層的機制,它可以和JDBC,jsp等技術結合使用。
SCA中有幾個基本元素:
component:實現功能的單元
service:組件通過服務的方式對外提供服務
composite:用于描述如何連接組件和服務
由于SOA的架構實現不依賴于技術和平臺,所以能夠被各種不同的技術實現。
比如:RPC,REST,Web Service,java RMI等等。
RPC(Remote Procedure Call Protocol)——遠程過程調用協議,它是一種通過網絡從遠程計算機程序上請求服務,而不需要了解底層網絡技術的協議。
它和java RMI的區別是RPC協議是跨語言的,是一種略微底層的傳輸協議。而java RMI只支持java,而且RMI支持對java對象的傳輸。RPC的消息傳輸由一種叫XDR的語言表示,它抽象了不同語言數據類型的差異,因此可以跨平臺。
總的來說,java RMI可以看作java版本的rpc協議。
之前說RMI和RPC差不多,兩者在根本上都是基于tcp協議來傳輸數據的。java RMI在java1.1版本就提供了,它是在tcp協議上傳遞可序列化的java對象,只能用在java虛擬機上,綁定語言,客戶端和服務端都必須是java。
webservice是一種標準,他可以通過soap或rest的方式來實現。傳統的soap-webservice,使用了soap協議(基于xml包裝)等。如果使用restful-webservice的話,則不需要soap與之相關的協議等,而是通過最簡單的 http 協議傳輸數據 ( 包括 xml 或 json) 。既簡化了設計,也減少了網絡傳輸量(因為只傳輸代表數據的 xml 或 json ,沒有額外的 xml 包裝)。
(soap協議:一種嚴格定義的簡單對象訪問協議)
REST(Representational State Transfer)一種輕量級的Web Service架構,可以完全通過HTTP協議實現。我們在Task2里的restful風格就是REST的實現,通過HTTP協議提供GET、POST、PUT和DELETE方法獲取參數,吞吐標準數據格式(一般是json)