<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    gembin

    OSGi, Eclipse Equinox, ECF, Virgo, Gemini, Apache Felix, Karaf, Aires, Camel, Eclipse RCP

    HBase, Hadoop, ZooKeeper, Cassandra

    Flex4, AS3, Swiz framework, GraniteDS, BlazeDS etc.

    There is nothing that software can't fix. Unfortunately, there is also nothing that software can't completely fuck up. That gap is called talent.

    About Me

     

    SCA:實(shí)現(xiàn)SOA的編程模型[zhuan]

    SCA提供了實(shí)現(xiàn)面向服務(wù)的架構(gòu)(SOA)的一個(gè)編程模型。
    面向服務(wù)的架構(gòu)已經(jīng)在軟件開發(fā)領(lǐng)域存在很多年了。但是當(dāng)一些組織試圖去定義最佳的實(shí)現(xiàn)和管理技能的時(shí)候,為一個(gè)特定組織開發(fā)一個(gè)SOA的細(xì)節(jié)卻是難以捉摸的。在這篇文章里,我將介紹SOA的一種實(shí)現(xiàn)方式——服務(wù)-組件架構(gòu)。

     SOA在概念上來說是關(guān)于松耦合的行為。業(yè)務(wù)和系統(tǒng)功能作為大的獨(dú)立服務(wù)被展現(xiàn),使得它們以不同的方式在業(yè)務(wù)流的組合中被使用。這是一個(gè)簡(jiǎn)單的描述,但實(shí)現(xiàn)起來就相當(dāng)?shù)膹?fù)雜了。任何使用EAI和分布式技術(shù)的人都能回憶起在一個(gè)企業(yè)里兜售業(yè)務(wù)功能的困難。

    SOA原理是抽象的,獨(dú)立于實(shí)現(xiàn)技術(shù)。從開發(fā)角度來看,定義SOA構(gòu)成是有幫助的,它使得工程師可以無須求助于技術(shù)規(guī)范來用具體術(shù)語(yǔ)討論開發(fā)實(shí)現(xiàn)。為了這個(gè)目標(biāo),開放面向服務(wù)的架構(gòu)(OSOA)組織發(fā)布了服務(wù)組件架構(gòu)(SCA)規(guī)范1.1(www.osoa.com)。

    SCA已經(jīng)被IBM,BEA,Sun,Software AG,IONA,SAP,和Oracle以及其他一些公司開發(fā)很多年了。可以在IBM,Rogue Wave,Oracle,Tibco,Apache Software Foundation(Tuscany)和Eclipse Foundation(SOA Tools Platform)獲取實(shí)現(xiàn)。

     SCA編程模型

    SCA編程模型主要通過提供一個(gè)服務(wù)的開發(fā),集合,部署的方法,來關(guān)注SOA的工程細(xì)節(jié)。為了和SOA原理一致,SCA通過元數(shù)據(jù)驅(qū)動(dòng),語(yǔ)言獨(dú)立和容器 獨(dú)立來支持異構(gòu)的實(shí)現(xiàn)。只要一個(gè)從SCA規(guī)范到技術(shù)的映射可以被定義,SCA就能被實(shí)現(xiàn)。于是,SCA被和多種語(yǔ)言和容器綁定;最近的一個(gè)C語(yǔ)言規(guī)范以及 形成草案。

    目前,SCA映射已經(jīng)存在于Java,C++,RubySpring,和BPEL及其他語(yǔ)言中。另外,SCA綁定也在web服務(wù),JMS,JCA和其他通信機(jī)制中存在。SCA的目標(biāo)是減少SOA的概念原理到可以在一個(gè)具體上下文中討論的具體元素集合。

    SCA的好處有:

    ·使用組件和組合簡(jiǎn)化SOA實(shí)現(xiàn)
    ·使用松耦合的組件和參考來支持敏捷特性
    ·通過一個(gè)綜合的調(diào)用模型支持事件驅(qū)動(dòng)的行為
    ·將開發(fā)和集合分開,允許技術(shù)不可知的組合

    建立服務(wù):程序集(Assembly)模型

    程序集模型描述了服務(wù)是如何被定義和配置的。

    組件是SCA模型的核心,可以用支持SCA的任何語(yǔ)言來實(shí)現(xiàn)。一經(jīng)定義,組件可以使用屬性來聲明配置,這將在接下來的實(shí)現(xiàn)中映射到accessor和mutator。

    下面的是一個(gè)XML聲明的組件。
    //例1:組件聲明

    (a)
    <component name="AddServiceComponent">
    <implementation.java class="calculator.AddServiceImpl"/>
    </component>
    (b)
    <component name="CalculatorServiceComponent">
    <implementation.java class="calculator.CalculatorServiceImpl"/>
    <reference name="addService">AddServiceComponent</reference>
    </component>

      引用使得組件可以調(diào)用其他服務(wù)。引用在部署時(shí)或運(yùn)行時(shí)被解析。例1(b)顯示了一個(gè)例子引用。

    組合是組件的群。根據(jù)聲明,一個(gè)組合可以被作為一個(gè)服務(wù)或者新的組件使用。因此,SCA模型支持遞歸程序集。

    如果你通過將服務(wù)元素包含在組合聲明里,那服務(wù)本質(zhì)就是組合。和組件類似,組合和服務(wù)可以通過屬性來聲明配置。就像你可以從SCA程序集的元素聲明里看到的一樣,已有的程序可以通過將應(yīng)用建模為一個(gè)組件,組合或者提供一個(gè)可調(diào)用的程序接口而添加到架構(gòu)中來。

    布線(Wiring)

    組件連接是通過布線來完成的,也就暗示了需要定義組件之間的源/目標(biāo)信息。和其他SCA元素一樣,布線細(xì)節(jié)可以被聲明設(shè)置。SCA布線不需要元和目標(biāo)是 一個(gè)相同的類型(比如Java到WSDL的接口就是可接受的),只要考慮到了諸如遠(yuǎn)端性,回調(diào)支持,容錯(cuò),和異常處理等的兼容性。例3(a)是一個(gè)簡(jiǎn)單的 布線實(shí)例。

    //例2:引用聲明

    <composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
    name="CalculatorComposite">
    <service name="CalculatorService">
    <interface.java interface="calculator.CalculatorService"/>
    <reference>CalculatorServiceComponent</reference>
    </service>
    <component name="CalculatorServiceComponent">
    <implementation.java class="calculator.CalculatorServiceImpl"/>
    <reference name="addService">AddServiceComponent</reference>
    ...
    </component>
    <component name="AddServiceComponent">
    <implementation.java class="calculator.AddServiceImpl"/>
    </component>
    ...
    </composite>

    //例3:(a)引用中的直接布線(b)和一個(gè)web服務(wù)綁定的引用

    (a)
    <reference name="stockQuoteService"
    target="StockQuoteMediatorComponent"/>
    (b)
    <reference name="HelloWorldService">
    <interface.java interface="helloworld.HelloWorldService"
    callbackInterface="helloworld.HelloWorldCallback"/>
    <interface.wsdl xmlns:wsdli="http://www.w3.org/2006/01/wsdl-instance" interface=
    "http://helloworld#wsdl.interface(HelloWorld)"
    callbackInterface="http://helloworld#wsdl.interface(HelloWorldCallback)"
    wsdli:wsdlLocation="http://helloworld wsdl/helloworld.wsdl" />
    <binding.ws endpoint=
    "http://helloworld#wsdl.endpoint(HelloWorldService/HelloWorldSoapPort)"
    location="wsdl/helloworld.wsdl" />
    </reference>

    為了簡(jiǎn)化開發(fā),SCA支持“自動(dòng)布線”。只要應(yīng)用是明確的,容器就應(yīng)該能在運(yùn)行時(shí)布線組件。

    Binding

    SCA模型通過綁定支持服務(wù)之間的通信,這在很多技術(shù)中存在了。為了和規(guī)范一致,所有的實(shí)現(xiàn)必須支持一個(gè)SCA服務(wù)綁定和Web服務(wù)綁定。綁定是被服務(wù) 和應(yīng)用使用的。服務(wù)使用綁定來定義它們?nèi)绾伪徽{(diào)用;引用使用它們來聲明它們?nèi)绾握{(diào)用一個(gè)服務(wù)。例3(b)是一個(gè)使用web服務(wù)綁定的例子。

    服務(wù)質(zhì)量:策略框架

    為了關(guān)注服務(wù)質(zhì)量(QoS)和非功能化的需求,SCA模型提供了一個(gè)策略框架。策略可以用來定義安全,可用性和交易,以及其他需求。策略可以和每個(gè)組件關(guān)聯(lián)在一起。服務(wù)和應(yīng)用可以擁有多個(gè)策略來允許不同方式的訪問。策略框架的主要元素是Intents, Profiles和Policy Sets。

    Intents是在一個(gè)組件實(shí)現(xiàn)上的QoS限制的抽象描述。比如,消息需要是加密的。一個(gè)用“confidentility”命名的Intent可以如例4(a)中被定義。

    //例4:(a)Intent聲明;(b)Profile聲明

    (a)
    <intent name="confidentiality" constrains="sca:binding">
    <description>
    Communication through this binding must prevent
    unauthorized users from reading the messages.
    </description>
    </intent>
    (b)
    <sca:profile intents="sec.confidentiality rel.reliability"/>

    Profiles是Intent名字的聚合。一個(gè)Profile中應(yīng)用的Intents被映射到Policy Sets中的實(shí)現(xiàn)。例4(b)是一個(gè)Profile聲明。

    Policy Sets和Intents實(shí)現(xiàn)相關(guān)。它們?cè)诔绦蚣P屠锫暶骷夹g(shù)相關(guān)的元素限制。例5是一個(gè)和Confidentility Intent相關(guān)的Policy Set。這個(gè)例子使用了intentMap元素,表明一個(gè)給定的Intent的另一種實(shí)現(xiàn)。
    //例5:使用一個(gè)intentMap和WS-PolicyAttachment的Policy Set

    <policySet name="SecureMessagingPolicies"
    provides="confidentiality"
    appliesTo="binding.ws"
    xmlns="http://www.osoa.org/xmlns/sca/1.0"
    xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy">
    <intentMap provides="confidentiality"
    default="transport">
    <qualifier name="transport">
    <wsp:PolicyAttachment>
    <wsp:AppliesTo>
    <wsa:EndpointReference xmlns:myStore="..." >
    <wsa:Address>http://myStore.example.com/acct
    </wsa:Address>
    <wsa:PortType>
    myStore:myPortType
    </wsa:PortType>
    <wsa:ServiceName>
    myStore:InventoryService
    </wsa:ServiceName>
    </wsa:EndpointReference>
    </wsp:AppliesTo>
    <wsp:PolicyReference
    URI="http://myStore.example.com/policies.xml" />
    </wsp:PolicyAttachment>
    <wsp:PolicyAttachment>
    ...
    </wsp:PolicyAttachment>
    </qualifier>
    <qualifier name="message">
    <wsp:PolicyAttachment>
    <!-- policy expression and policy subject for
    "message" alternative" -->
    ...
    </wsp:PolicyAttachment>
    </qualifier>
    </intentMap>
    </policySet>

    Policy Set包含了一個(gè)技術(shù)的規(guī)范,包括綁定,源,目標(biāo)的細(xì)節(jié)。如果被要求使用一個(gè)公用密鑰體系,Policy Set可以包含一些加密方法,信任關(guān)系和密鑰存儲(chǔ)的信息。WS-Policy和WS-PolicyAttachment是最好的Plicy Set聲明的格式。然而,支持其他語(yǔ)言(比如XACML和所有權(quán)語(yǔ)言)是可能的,依賴于容器實(shí)現(xiàn)。

    Intents通過組件元數(shù)據(jù)連接到組件上。例6給出了一個(gè)對(duì)服務(wù)聲明的對(duì)連接認(rèn)證和可靠性intents。

    //例6:連接在服務(wù)上的Profile


    <sca:service name="mySpecialService">
    <sca:interface.wsdl portType="..." />
    <sca:profile intents="sec.authentication rel.reliabilty"/>
    </sca:service>

    在寫此文時(shí),Policy Sets和Intents是包含在一個(gè)全局定義文件里的,它被通過Intent或Profile引用到一個(gè)程序集描述器文件。

    數(shù)據(jù)訪問:服務(wù)數(shù)據(jù)對(duì)象

      服務(wù)數(shù)據(jù)對(duì)象(SDO)并不是SCA模型合適的部分,但卻是最好的SCA數(shù)據(jù)架構(gòu)。SDO基于非連接數(shù)據(jù)圖的概念。SDO架構(gòu)保持了數(shù)據(jù)對(duì)象的樹或圖,可 以通過API訪問。這個(gè)架構(gòu)允許強(qiáng)類型和弱類型數(shù)據(jù)模型,因此支持靜態(tài)和動(dòng)態(tài)的數(shù)據(jù)訪問機(jī)制。SDO架構(gòu)并不對(duì)相關(guān)的查詢語(yǔ)言進(jìn)行假設(shè)。為了分開程序代碼 和數(shù)據(jù)訪問代碼,架構(gòu)鼓勵(lì)使用數(shù)據(jù)訪問服務(wù)(DAS)來操作圖 (incubator.apache.org/tuscany/das_index.html)。通過增加元數(shù)據(jù),SDO也支持運(yùn)行時(shí)數(shù)據(jù)圖的查看。既然 架構(gòu)在理念上已經(jīng)和XML同時(shí)設(shè)計(jì),它也提供了豐富的操作XML的機(jī)制。事實(shí)上,為了實(shí)際使用考慮,一個(gè)SDO的數(shù)據(jù)結(jié)構(gòu)最好是XML文檔。在寫此文時(shí),SDO規(guī)范是2.1版本。

    總結(jié)

    SCA嘗試基于SOA的概念去創(chuàng)建一個(gè)簡(jiǎn)單,強(qiáng)壯的編程模型。它的價(jià)值存在于概念的簡(jiǎn)單,程序集和QoS的聲明式方式。通過集合時(shí)間和運(yùn)行不行和松耦合 策略,SCA無須組件的先驗(yàn)知識(shí)來創(chuàng)建一個(gè)服務(wù)。這反過來也使得服務(wù)組件和結(jié)合開發(fā)者可以單獨(dú)工作。和SDO結(jié)合,一個(gè)廠商中立的SOA方案是可能的—— 模型設(shè)計(jì)者從早先的模型中看到了其弱點(diǎn)——通過提供一個(gè)干凈的程序集和QoS的區(qū)分。如果Apache Tuscany Project是一個(gè)SCA生存能力的驗(yàn)證,那么一個(gè)直接(盡管不是必須簡(jiǎn)單)的SOA實(shí)現(xiàn)是被保證了的。

    posted on 2008-03-11 13:03 gembin 閱讀(365) 評(píng)論(0)  編輯  收藏 所屬分類: SCASOA

    導(dǎo)航

    統(tǒng)計(jì)

    常用鏈接

    留言簿(6)

    隨筆分類(440)

    隨筆檔案(378)

    文章檔案(6)

    新聞檔案(1)

    相冊(cè)

    收藏夾(9)

    Adobe

    Android

    AS3

    Blog-Links

    Build

    Design Pattern

    Eclipse

    Favorite Links

    Flickr

    Game Dev

    HBase

    Identity Management

    IT resources

    JEE

    Language

    OpenID

    OSGi

    SOA

    Version Control

    最新隨筆

    搜索

    積分與排名

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    free counters
    主站蜘蛛池模板: 亚洲国产精品国自产拍电影| 亚洲国产综合精品| 久久精品国产亚洲αv忘忧草| 国产亚洲精品欧洲在线观看| 外国成人网在线观看免费视频 | 中文字幕永久免费| 国产精品爱啪在线线免费观看| 国产又长又粗又爽免费视频| 亚洲国产精品婷婷久久| 色综合久久精品亚洲国产| 久章草在线精品视频免费观看| 最近中文字幕mv免费高清视频7| 亚洲午夜久久久久妓女影院 | 有色视频在线观看免费高清在线直播 | 亚洲AV成人精品日韩一区| 久9久9精品免费观看| 日本v片免费一区二区三区 | 亚洲国产精品免费在线观看| 一级成人a做片免费| 国产三级在线观看免费| 亚洲AV永久无码精品水牛影视| 18禁成年无码免费网站无遮挡| 国产亚洲情侣一区二区无码AV| 亚洲午夜理论片在线观看| 999zyz**站免费毛片| 在线观看免费污视频| 中文字幕亚洲第一在线| 一边摸一边爽一边叫床免费视频| 在线观看日本免费a∨视频| 亚洲VA成无码人在线观看天堂| 麻豆69堂免费视频| 毛片大全免费观看| 亚洲视频在线免费看| 韩国免费a级作爱片无码| 四虎影视精品永久免费| 2020久久精品亚洲热综合一本| 久久精品免费观看国产| 亚洲美女在线国产| 婷婷亚洲综合一区二区| 日韩免费a级毛片无码a∨| 久久精品国产亚洲AV高清热|