先看一下tuscany簡介,簡單了解一下tuscany是什麼
SCA 的基本概念以及 SCA 規範的具體内容并不在本文的範疇之内,有興趣的讀者可以通過一些相關文檔了解相關内容,這也是閱讀本文的基礎。下面本文首先對 Tuscany 架構做一定的介紹。
Tuscany 是 Apache 的開源項目,它是 IBM、Oracle、SAP 等廠商聯合成立的 SOA 标準化組織 -OSOA 支援下開發出的 SCA 架構,它既是開源界 SCA 的試金石,也是目前開源界最成熟的 SCA 架構之一。
tuscany是一套開源的sca架構模型,是做soa的基礎架構
SCA是什麼?
SCA為建構基于SOA的應用和解決方案提供了程式設計模型。它基于這樣的理念:将業務功能作為一系列的服務而提供,并由這一系列的服務組裝起來的解決方案來滿足特定業務需求。這些組合的應用既包括為應用而新建立的特定服務,也包括源自已已存在系統和應用的業務邏輯,這些業務邏輯作為組合構件的一部分被複用。SCA既為服務的組合也為服務構件的建立提供了模型,包括對SCA組組合構件中對已存在應用功能的複用。
SCA的基礎工件就是component,它是SCA的構成單元。構件(component)由一個實作的可配置(implementation)執行個體所組成。在該構件中,實作是提供業務功能的程式代碼片段。該業務功能作為服務(service)而提供,為其他構件所使用。實作也許依賴于由其他構件所提供的服務,這些依賴被稱作”引用”(reference)。實作可以有一個可設定的屬性(properties),該屬性是可以影響業務功能操作的資料值。構件通過提供屬性值和連線(wire)到由其他構件提供服務的引用來配置實作。
還是通過執行個體來看一下SCA到底實作了什麼樣的功能吧!
看一下釋出一個基本的加減乘除的示例,這個是tuscany的官方示例
定義一個接口實作基本的電腦功能
定義接口CalculatorService,實作基本的加減乘除
實作類分别調用對應的接口AddService,DivideService,MultiplyService,SubtractService
在CalculatorServiceImpl中分别調用對應的接口
通過@Reference進行注入,看一下每個接口的功能定義
AddService
AddServiceImpl
DivideService
DivideServiceImpl
MultiplyService
MultiplyServiceImpl
SubtractService
SubtractServiceImpl
看用戶端調用的代碼
程式中讀取Calculator.composite配置檔案,這個是核心配置檔案實作的功能是對外釋出服務
再看一下配置檔案中的定義
釋出的服務名為CalculatorServiceComponent
通過用戶端的調用程式可以找到對應的服務名
CalculatorService calculatorService = ((SCAClient)node).getService(CalculatorService.class, "CalculatorServiceComponent");
然後調用相應的方法
程式執行結果如下:
也可以使用CORBA方式調用遠端的實作,對應的服務端的配置,尋找本地的5080端口釋出的服務
測試用例中的代碼實作如下:
服務是SOA的核心,它們代表了那些可以被結合在一起成為應用程式或業務流程的可工作,可重用的代碼單元。
OSGI明确地把Java作為目标平台,提供用于建立元件的子產品化架構,以及用來運作這些元件的運作時容器。OSGI本身并不提供可直接用于SOA服務所需的功能特性。
利用SCA,你可以用不同的程式設計語言建構功能單元或元件,然後将他們通過SOAP、JMS、RMI、REST或其它協定暴露為服務。
不僅如此,這些元件可以在内部被連在一起形成到時候進階别的服務或組合。服務可以以分布式的方式運作,并作為虛拟雲來管理。