<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

     

    Apache Tuscany SCA Java 架構(gòu)指南

    概述

      SCA Java運(yùn)行時(shí)由core和extension組成。Core本質(zhì)上來說是一個(gè)多VM的wiring引擎。該引擎使用IOC(控制反轉(zhuǎn))和DI(依賴注入)原則來連接組件。

      Core

      Core在性能方面是簡(jiǎn)單而有限的。它將功能單元連接在一起,并提供可以和extension交互的SPI機(jī)制。例如象服務(wù)發(fā)現(xiàn),可靠性,對(duì)傳輸協(xié)議的支持等特性都是通過extension來做的。

      Extension

      Extension增強(qiáng)SCA運(yùn)行時(shí)的功能。Extesion類型不是固定的。而core則是通過提供對(duì)extension模塊開放支持來使得設(shè)計(jì)盡量靈活。

    •   組件實(shí)現(xiàn)類型,例如:Spring, Groovy 和Javascript
    •   綁定類型,比如:Axis, CXF ,AMQP ,ActiveMQ, JXTA
    •   數(shù)據(jù)綁定類型,比如:JAXB, SDO ,XmlBean
    •   接口綁定類型,比如:WSDL, Java

      關(guān)于如何實(shí)現(xiàn)一個(gè)extension的詳細(xì)信息可以在Extensions Guide中查看。

      運(yùn)行時(shí)

      Core是設(shè)計(jì)得可以嵌入于許多不同的主機(jī)環(huán)境下的。例如,core也許用于OSGI容器、單獨(dú)的運(yùn)行時(shí)環(huán)境、serlvet引擎或J2EE應(yīng)用服務(wù)器中。運(yùn)行時(shí)的性能根據(jù)主機(jī)環(huán)境不同而不同。

      Java SCA運(yùn)行時(shí)的高層概述:

      下圖是由關(guān)鍵的模塊/包組成的SCA運(yùn)行時(shí)高層視圖

      1、 SCA Spec API:由SCA Java Client and Implementation定義的API

      2、 API:擴(kuò)展了SCA Spec API的Tuscany API

      3、 Core:運(yùn)行時(shí)實(shí)現(xiàn)和SPI擴(kuò)展機(jī)制

      4、 Extension:

      1. Component(英文原版有錯(cuò)誤) implementation – 擴(kuò)展語言支持:例如 BPEL,Python,C++,Ruby等

      2. Binding – 擴(kuò)展協(xié)議支持:例如 Axis2, CXF等

      3. Interface Binding – 擴(kuò)展服務(wù)定義類型:比如SWDL, Java等

      4. Databinding – 擴(kuò)展數(shù)據(jù)支持:比如SDO, JAXB等

      5、 Host platforms:Tuscany運(yùn)行時(shí)的主機(jī)環(huán)境

    Apache Tuscany SCA Java 架構(gòu)指南(圖一)

      <!--[if !vml]--><!--[endif]-->

      內(nèi)部高層視圖

      參考下圖:

    Apache Tuscany SCA Java 架構(gòu)指南(圖二)

      <!--[if !vml]--><!--[endif]-->

      引導(dǎo)過程

      引導(dǎo)過程是由主機(jī)環(huán)境控制的。默認(rèn)的實(shí)現(xiàn)是DefaultBootstrapper。運(yùn)行時(shí)由某個(gè)成型的SCA Assembly XML文件序列化而來并處理服務(wù)裝配。

    •   裝載階段處理SCDL并創(chuàng)建一個(gè)內(nèi)存模型處理相應(yīng)的運(yùn)行時(shí)工件(例如組件componet,服務(wù)service,引用reference)
    •   連接階段將對(duì)服務(wù)的引用連接起來

    Apache Tuscany SCA Java 架構(gòu)指南(圖三)

    裝配模型

      SCA裝配模型在Tuscany中是用一系列接口表示的。如下是些關(guān)鍵的元素。

    •   SCA component 是配置化的SCA實(shí)現(xiàn)的實(shí)例,它可以提供服務(wù)或消費(fèi)服務(wù)。
    •   SCA service用于聲明實(shí)現(xiàn)的可以被外部訪問的服務(wù)
    •   SCA reference用于表示該實(shí)現(xiàn)對(duì)某些其他實(shí)現(xiàn)所提供的服務(wù)的依賴。該依賴的服務(wù)可以通過配置來指定。

      Implementation是用于描述軟件技術(shù)的概念,例如在面向服務(wù)的應(yīng)用中實(shí)現(xiàn)了一個(gè)或多個(gè)服務(wù)的Java 類,BEPL,XSLT轉(zhuǎn)換,C++類。SCA composite也是implementaion。

      ComponentType涉及實(shí)現(xiàn)的可配置的方面。

      Interface定義了一個(gè)或多個(gè)業(yè)務(wù)功能。這些業(yè)務(wù)功能通過Service提供,通過Reference讓其他組件使用。服務(wù)是由實(shí)現(xiàn)的接口來定義的。現(xiàn)在SCA支持兩種接口類型系統(tǒng):Java接口、SWDL portType

      SCA composite是SCA域中的compositon的基礎(chǔ)單元。SCA Composite是組件的裝配,服務(wù)、應(yīng)用和wire都互相連接。

      SCA wire將服務(wù)引用連接到服務(wù)上。

      Binding是被服務(wù)和引用所使用的。引用使用綁定來描述訪問機(jī)制,該機(jī)制用于訪問連接的服務(wù)。服務(wù)使用綁定來描述客戶程序調(diào)用服務(wù)的訪問機(jī)制。

      Property是考慮到有的實(shí)現(xiàn)配置需要顯式地設(shè)置數(shù)據(jù)值。該數(shù)據(jù)值由組件提供,當(dāng)然也可能來源于容器composite的屬性。

    Apache Tuscany SCA Java 架構(gòu)指南(圖四)

      <!--[if !vml]--><!--[endif]-->

      Contribution

      Tuscany運(yùn)行時(shí)提供了一個(gè)框架來支持SCA的contribution。框架可以通過下列的兩個(gè)擴(kuò)展點(diǎn)來擴(kuò)展:

      PackageProcessorExtensionPoint:它用于處理不同的包裝格式或歸檔的擴(kuò)展,可以是目錄、Jar、OSGI bundle、EAR、War或Zip。

      ArtifactProcessorExtensionPoint:它用于處理特定工件類型的擴(kuò)展,可以是SWDL,XSD,composite,java類后BEPL。

    Apache Tuscany SCA Java 架構(gòu)指南(圖五)

      <!--[if !vml]--><!--[endif]-->

    <!--[if !supportLists]-->l <!--[endif]-->包處理器會(huì)掃描安裝了的contribution,并產(chǎn)生需要處理的工件列表。當(dāng)前有支持文件夾/文件系統(tǒng)和 Jar contribution包。為了讓contribution服務(wù)有效,包處理器要注冊(cè)自己給包處理extension 。

    <!--[if !supportLists]-->l <!--[endif]-->工件處理器用于處理contribution上的每個(gè)有效的工件。為了讓contribution服務(wù)有效,工 件處理器要注冊(cè)自己給工件處理extension 。對(duì)于每個(gè)工件,工件處理器分兩個(gè)階段被調(diào)用。

      <!--[if !supportLists]-->? <!--[endif]-->讀階段:這里是你讀取工件(可以是一個(gè)文檔、XML元素或類等等)的地方,組裝描述工件的模型并返回它。SCA contribution服務(wù)在所有注冊(cè)了工件處理器的工件上調(diào)用ArtifactProcessor.read()。假如你的模型引用了其他的模型, 不需要立刻裝載那些模型,你只需要保持描述引用的信息,在resolve階段,你將會(huì)把該信息轉(zhuǎn)換成指向被引用模型的指針。注意:你沒有必要在這個(gè)時(shí)刻完 全讀取并裝載模型,你可以在以后來完成這些工作。

      <!--[if !supportLists]-->? <!--[endif]-->解析階段:這個(gè)階段讓你有機(jī)會(huì)解析對(duì)其他模型的引用。這個(gè)時(shí)刻,SCA contribution中所有的描述工件的模型都已經(jīng)讀取,并注冊(cè)了工件解析器,準(zhǔn)備被解析。

      <!--[if !supportLists]-->l <!--[endif]-->所有可部署的composite應(yīng)該在現(xiàn)在準(zhǔn)備部署到SCA域中。

      包處理器會(huì)掃描安裝了的contribution,并產(chǎn)生需要處理的工件列表。當(dāng)前有支持文件夾/文件系統(tǒng)和Jar contribution包。為了讓contribution服務(wù)有效,包處理器要注冊(cè)自己給包處理extension 。

      工件處理器用于處理contribution上的每個(gè)有效的工件。為了讓contribution服務(wù)有效,工件處理器要注冊(cè)自己給工件處理extension 。對(duì)于每個(gè)工件,工件處理器分兩個(gè)階段被調(diào)用。

    ? 讀階段:這里是你讀取工件(可以是一個(gè)文檔、XML元素或類等等)的地方,組裝描述工件的模型并返回它。SCA contribution服務(wù)在所有注冊(cè) 了工件處理器的工件上調(diào)用ArtifactProcessor.read()。假如你的模型引用了其他的模型,不需要立刻裝載那些模型,你只需要保持描述 引用的信息,在resolve階段,你將會(huì)把該信息轉(zhuǎn)換成指向被引用模型的指針。注意:你沒有必要在這個(gè)時(shí)刻完全讀取并裝載模型,你可以在以后來完成這些 工作。

      ? 解析階段:這個(gè)階段讓你有機(jī)會(huì)解析對(duì)其他模型的引用。這個(gè)時(shí)刻,SCA contribution中所有的描述工件的模型都已經(jīng)讀取,并注冊(cè)了工件解析器,準(zhǔn)備被解析。

      所有可部署的composite應(yīng)該在現(xiàn)在準(zhǔn)備部署到SCA域中。

      實(shí)現(xiàn)擴(kuò)展

      實(shí)現(xiàn)擴(kuò)展負(fù)責(zé)實(shí)現(xiàn)類型的支持,例如Java,Script和BEPL

      綁定擴(kuò)展

      綁定擴(kuò)展負(fù)責(zé)對(duì)綁定類型進(jìn)行支持,例如web service,JMS,JSON-RPC和RMI

      接口擴(kuò)展

      接口擴(kuò)展負(fù)責(zé)接口類型的擴(kuò)展,例如Java接口和WSDL 1.1 portType

      數(shù)據(jù)綁定擴(kuò)展

      請(qǐng)看我翻譯的Tuscany數(shù)據(jù)綁定指南

      Composite 激化

      在composite完整地配置后,就能在SCA域中激活它。Tuscany運(yùn)行時(shí)用以下步驟激化composite:

      1、 構(gòu)建composite:這個(gè)階段,composite模型更進(jìn)一步地正規(guī)化來方便運(yùn)行時(shí)的交互。元數(shù)據(jù)在service/reference提升后統(tǒng)一化了。根據(jù)這個(gè)扁平模型,我們可以獲取所有的組件級(jí)信息。

      2、 配置composite:這個(gè)階段,composite層次結(jié)構(gòu)用于導(dǎo)航組件實(shí)現(xiàn)的配置信息。引用綁定和服務(wù)通過提供者工廠來創(chuàng)建運(yùn)行時(shí)組件以及外部服務(wù)之間的連接。

    3、 創(chuàng)建運(yùn)行時(shí)連接(wire):這個(gè)階段,為組件引用和組件服務(wù)以選定的綁定形式創(chuàng)建運(yùn)行時(shí)連接。運(yùn)行時(shí)連接是一個(gè)調(diào)用鏈的集合。這些調(diào)用鏈按照操作來分成 區(qū)。每個(gè)調(diào)用鏈都由一系列的調(diào)用器和攔截器構(gòu)成。調(diào)用器提供到綁定協(xié)議和實(shí)現(xiàn)技術(shù)的邏輯調(diào)用。攔截器是特定類型的調(diào)用器,為調(diào)用它提供了附加的功能,比如 數(shù)據(jù)傳輸和事務(wù)控制。對(duì)于一個(gè)組件引用,我們創(chuàng)建運(yùn)行時(shí)連接(wire)來描述以選定綁定的形式對(duì)外的調(diào)用。對(duì)于組件服務(wù),我們創(chuàng)建運(yùn)行時(shí)連接 (wire)來描述對(duì)實(shí)現(xiàn)的對(duì)內(nèi)調(diào)用。回調(diào)連接(callback wire)能附加到組件服務(wù)上來描述來自服務(wù)的一個(gè)回調(diào)調(diào)用。

      4、 啟動(dòng)composite:這個(gè)階段,由ImplementationProvider、ReferenceBindingProvider和 ServiceBindingProvider定義的start()回調(diào)方法會(huì)被調(diào)用。最終,組件,組件引用和組件服務(wù)被初始化而服務(wù)于組件的交互。服務(wù) 監(jiān)聽器會(huì)啟動(dòng),從而接受來自綁定層(binding layer)的入內(nèi)請(qǐng)求。

    Apache Tuscany SCA Java 架構(gòu)指南(圖六)

    Apache Tuscany SCA Java 架構(gòu)指南(圖七)

      <!--[if !vml]--><!--[endif]-->

      <!--[if !vml]--><!--[endif]-->

      調(diào)用概述

      調(diào)用會(huì)被分發(fā)到WireInvocationHandler

      WireInvocationHandler查找正確的InvocationChain

      然后創(chuàng)建一個(gè)消息,設(shè)置有效負(fù)載,設(shè)置TargetInvoker,并傳遞消息給下層鏈

      當(dāng)消息到達(dá)鏈的末端,TargetInvoker會(huì)被調(diào)用,現(xiàn)在輪到TargetInvoker負(fù)責(zé)叫調(diào)用分發(fā)到目標(biāo)

    存儲(chǔ)在outbound邊界上的TargetInvoker當(dāng)連接源的作用域值等于或小于目標(biāo)的作用域值時(shí),允許緩存目標(biāo)實(shí)例。運(yùn)行時(shí)環(huán)境通過 Inboundwire和Outboundwire提供組件。調(diào)用鏈附著于組件連接(wire)中,因此是無狀態(tài)的。所以調(diào)用鏈可以具有動(dòng)態(tài)行為,例如新 攔截器的介入和重新連接。

      裝載SCA裝配

      工件處理器用于處理contribution上的每個(gè)有效的工件。為了讓contribution服務(wù)有效,工件處理器要注冊(cè)自己給工件處理extension 。對(duì)于每個(gè)工件,工件處理器分兩個(gè)階段被調(diào)用。

    ? 讀階段:這里是你讀取工件(可以是一個(gè)文檔、XML元素或類等等)的地方,組裝描述工件的模型并返回它。SCA contribution服務(wù)在所有注冊(cè) 了工件處理器的工件上調(diào)用ArtifactProcessor.read()。假如你的模型引用了其他的模型,不需要立刻裝載那些模型,你只需要保持描述 引用的信息,在resolve階段,你將會(huì)把該信息轉(zhuǎn)換成指向被引用模型的指針。注意:你沒有必要在這個(gè)時(shí)刻完全讀取并裝載模型,你可以在以后來完成這些 工作。

      ? 解析階段:這個(gè)階段讓你有機(jī)會(huì)解析對(duì)其他模型的引用。這個(gè)時(shí)刻,SCA contribution中所有的描述工件的模型都已經(jīng)讀取,并注冊(cè)了工件解析器,準(zhǔn)備被解析。

      裝載Java SCA

      SCA服務(wù)裝配以SCDL文件的形式被發(fā)布到SCA域中。Tuscany運(yùn)行時(shí)工件處理器將SCDL裝載成一系列模型對(duì)象。這些模型對(duì)象是一系列持有元數(shù)據(jù)信息的Java bean。

      有兩種裝載器:

    •   StAXElementLoader:從StAX(Streaming API for XML)事件載入XML元素
    •   ComponentTypeLoader:通過解析文件或內(nèi)省機(jī)制來載入實(shí)現(xiàn)的組件類型

      裝載組件類型

      為特定的實(shí)現(xiàn)載入組件類型定義:

    •   如何做是實(shí)現(xiàn)規(guī)范
    •   也許會(huì)裝載XML文件(該文件由具體實(shí)現(xiàn)來定位)
    •   也許內(nèi)省實(shí)現(xiàn)工件(例如 Java注解機(jī)制)
    •   或其他的任何方式

      Loading composite componentType Loader

    •   從提供的URL中載入SCDL
    •   從composite包解壓并載入SCDL
    •   POJO componetType Loader
    •   內(nèi)省Java 注解
    •   利用可插入的注解處理框架來內(nèi)省Java類

      運(yùn)行時(shí)工件的類圖

    Apache Tuscany SCA Java 架構(gòu)指南(圖八)


    posted on 2008-04-26 00:00 gembin 閱讀(595) 評(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
    主站蜘蛛池模板: 午夜精品射精入后重之免费观看 | 91亚洲国产成人精品下载| 亚洲线精品一区二区三区| 亚洲一区精品无码| 亚洲成人网在线观看| 在线观看亚洲AV日韩AV| 国产精品亚洲专区无码牛牛| 黄网站色视频免费看无下截| 国产va免费精品| 欧洲人成在线免费| 麻豆国产精品免费视频| 成人影片麻豆国产影片免费观看| 日韩一级免费视频| 亚洲性日韩精品国产一区二区| 亚洲国产精品一区二区第一页| 4444亚洲国产成人精品| 色多多免费视频观看区一区| 19禁啪啪无遮挡免费网站| 日韩一级免费视频| 亚洲人成网址在线观看| 亚洲AV男人的天堂在线观看| 人妻无码中文字幕免费视频蜜桃 | 亚洲欧洲免费视频| 免费国产怡红院在线观看| 亚洲精品国产精品乱码视色| 亚洲最新在线视频| 久久国产美女免费观看精品| 麻花传媒剧在线mv免费观看| 久久久久亚洲av毛片大| 亚洲国产成人资源在线软件 | 亚洲成熟丰满熟妇高潮XXXXX| 一本大道一卡二大卡三卡免费 | 亚洲人成无码网WWW| 国产精品亚洲一区二区麻豆| 久久黄色免费网站| 亚洲视频一区二区| 亚洲av日韩精品久久久久久a| 十八禁视频在线观看免费无码无遮挡骂过| 国产成人精品免费视频网页大全 | 亚洲免费中文字幕| 久久国产乱子免费精品|