什么是Tuscany?

? ? ? ?大家好,我是IT修真院北京分院第31期的學員,一枚正直純潔善良的JAVA程序員。今天給大家分享一下,修真院官網JAVA任務9的深度思考——什么是Tuscany?

什么是TUSCANY?

開源 Apache Tuscany 項目致力于實現 SCA 規范(和一些其他的 SCA 規范,如 Service Data Objects 和 Data Access Service)。依照 Open Service-Oriented Architecture (OSOA) 和針對全球信息社會 (OASIS SCA Java) 規范的一些標準,Apache Tuscany 為 SCA 運行時提供了一個全面的基礎架構。這里需要說明的是Tuscany官方已經不維護了,但是了解其設計思想對我們理解現在很流行的微服務框架是有好處的.

隨著SCA(服務組件架構)和SDO(服務數據對象)最終落戶OASIS,國內對它們的關注也呈上升趨勢。與以往SOA 開發部署方式相比,SCA 所提供的編程模型和裝配模型大大減輕了這些工作的難度。加之有OASIS 標準組織和以IBM為代表的業界巨擘的保駕護航,SCA 和SDO 的前途不可限量。 Tuscany 是SCA 和SDO 的第一個參考實現,旨在提供基于SCA 和SDO 的SOA 基礎設施。Tuscany 幾乎是伴隨規范成長起來的,這樣做的目的是對規范進行驗證并獲得有益的反饋。

什么是SCA?

SCA是一個可執行的模型,用于將不同的 服務集成到一個業務解決方案。它簡化了實現業務服務的組件編程模型,這些組件可以使用不同編程語言實現。SCA帶來的一些益處主要為:

1,松耦合:組件件的集成不需要知道彼此是基于何種編程語言實現的。在同步、異步情況下,組件都可以被方便的調用。

2,可擴展性:組件可被簡單的被替換。既有的服務可被用來創建新的解決方案(自下而上),也可業務建模和開發(自上而下)。

3,生產率:SCA可讓你專心于分析業務邏輯,而不需要過多的去擔心系統架構。SCA簡化了所有開發者的使用體驗(包括J2EE和集成開發者)。

SCA組件實現

SCA的基本的組成部分是組件實現。當你編寫SCA代碼時,你通常正在寫一個組件的實現或者將被這樣的組件使用的代碼。 一個組件通常由下列屬性描述:

服務:描述了該類型的組件所能提供的功能; 引用:描述了該類型的組件相關功能的依賴性; 屬性:定義了配置參數,控制程序邏輯如何實現,例如,使用何種貨幣;

策略:描述了組件行為策略,主要有兩種策略: 實現策略:對組件實現施加影響,例如:事務、監視以及日志; 互動策略:定義組件件如何互動,例如:安全;

一個組件可以使用任何用戶想要的編程語言去實現,例如用BPEL去實現業務流程控制,XSL-T實現轉換,RUBY來編寫腳本,也可以使用純JAVA。這些服務、引用、屬性以及策略如何去定義界定了一個組件的是具體實現類型。

SCA集成

單個組件可獨立使用,也可被組合起來作為一個合成組件使用。一個合成組件不是代碼,而是由一個或多個組件集成起來作為一個整體提供服務的。合成作為一種解決方案,例如信用檢查組合。合成方案也可以在一個更大規模的解決方案中使用,例如信用檢查可能是一個訂單處理組合中的一部分,一個復合構建像一個組件一樣具有同樣的特性,它提供服務,包含對其他組件的引用,并且可以配置成像單獨組件那樣使用屬性和策略。

SCA DOMAIN(域)

這些組件無論獨立還是集成,全部都是可在不同環境下使用多次 的可重用單元。一個合成組件,連帶它的配置信息,被打包到一個叫做contribution的部署單元部署到域。資源可以在不同contributions間重用,比如:JAVA類、XSD文件、WSDL文件等等。 一個SCA域是一個完整的運行配置,可能分布于一系列互聯的的節點運行,域配置的整體布局,是服務依賴、屬性、策略的配置。一個域是運行著的系統,或者一組互相協作在一起工作工作的組件的邏輯視圖,它們通過SCA線路彼此連接。當它實際的用于一個SCA環境的時候,合成組件實例化。

2.知識剖析

實現一個TUSCANY項目具體的步驟

步驟1:定義所需要的功能塊:考慮下你的應用如何被分解為一個個較小的功能/服務,每個塊都是一個可以在總的應用里使用的邏輯操作單元,這樣的話,Calculator應用可以被分為五個功能塊:AddService(加)、SubstractService(減)、MultiplyService(乘)、DivideService(除)和一個主功能塊,起接收請求并引導到正確操作的控制器的作用。我們可以叫這個控制器為CalculatorService。

步驟2:實現每個功能塊:既然你已經識別了應用中的功能塊,現在將準備創建它們。在SCA里,功能性的塊稱為組件。我們將把AddService組件作為我們的第一個例子。一個組件包括方法的接口及其實現

步驟3:編寫CalculatorService組件,它會調用AddService組件,在完整應用中,它會調用SubtractService、MultiplyService以及DivideService組件,但我們目前會忽略其他的,因為它們和我們實現的AddService是一個模式。

編寫CalculatorService組件同樣從CalculatorService接口開始,這是自身提供給其他程序調用的接口,然后實現這個接口.

步驟4:組裝應用.編寫Tuscany重要的配置文件"Calculator.composite".該配置文件是告訴SCA 這些組件在我們計算器應用內如何集成工作的一個XML文件。我們在這里定義了兩個組件并且指定了Tuscany SCA需要加載去實現業務計算的Java實現類。它們是我們剛剛實現的那些類. 需要注意的是,CalculatorServiceComponent擁有一個對addService的引用,在這個XML配置文件里,這個引用目標是AddServiceComponent。當我們實現CalculatorServiceImpl時,引用名字"addService",與我們建立的addService 領域的名字相配,這不是巧合。

Tuscany SCA運行時從Xml配置文件解析這些信息,并且用來創建描述我們calculator應用程序的對象和關系。它首先創建了AddServiceImpl 和CalcualtorSreviceImpl的實例,然后將AddServiceImpl引用注入到CalculatorServiceImpl對象的addService字段域。如果你回過頭來看下我們如何實現的CalculatorService,你會發現@Reference注釋,它告訴SCA哪些字段/域需要被自動設置。

步驟5:在服務端使用Tuscany的Node啟動該服務,并在客戶端接收該服務,并使用.

3.編碼實戰

4.常見問題

因為Tuscany已經被官方放棄了,所以出現很容易出現jar沖突的問題,需要使用exclusion去掉有沖突的jar包,另外還可以降低Spring jar包的版本號試試.

5.參考文獻

https://blog.csdn.net/supheros/article/details/40982973

http://book.51cto.com/art/200805/75270.htm

https://blog.csdn.net/abigfrog/article/details/1812162

https://www.cnblogs.com/skyme/archive/2011/10/31/2217739.html

6.更多討論

鳴謝

感謝觀看,如有出錯,懇請指正


今天的分享就到這里啦,歡迎大家點贊、轉發、留言、拍磚~

????????技能樹.IT修真院

????????“我們相信人人都可以成為一個工程師,現在開始,找個師兄,帶你入門,掌控自己學習的節奏,學習的路上不再迷茫”。

????????這里是技能樹.IT修真院,成千上萬的師兄在這里找到了自己的學習路線,學習透明化,成長可見化,師兄1對1免費指導。快來與我一起學習吧~

我的邀請碼:17742750,或者你可以直接點擊此鏈接:http://www.jnshu.com/login/1/17742750

來源:簡書

著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。

?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,488評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,034評論 3 414
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,327評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,554評論 1 307
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,337評論 6 404
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 54,883評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 42,975評論 3 439
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,114評論 0 286
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,625評論 1 332
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,555評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,737評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,244評論 5 355
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 43,973評論 3 345
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,362評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,615評論 1 280
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,343評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,699評論 2 370

推薦閱讀更多精彩內容

  • 一、背景介紹 Tuscany 是 Apache 的開源項目,它是 IBM、Oracle、SAP 等廠商聯合成立的 ...
    最不閃亮的那顆星閱讀 1,573評論 0 0
  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,776評論 18 139
  • >何日君再來 雨滴輕拍著陽臺空調的風機,讓我想起細沙灑落在光滑瓷盤的聲音。 一陣秋雨一陣涼,這樣的情景,也不知第幾...
    cain_shen閱讀 345評論 0 1
  • 我一直相信time is money。 工資是按照工作時間給的,銀行收益是按時間算的。安穩度過一段時間,很多時候就...
    陸離_mio閱讀 227評論 0 0
  • 前天晚上,朋友圈開始刷屏微信公開課pro版活動鏈接,大家紛紛曬出自己2015年微信成績單,隨之而來的便是謠言和辟謠...
    恣呲肆閱讀 1,820評論 6 21