• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            隨筆 - 181, 文章 - 2, 評論 - 85, 引用 - 0
            數(shù)據(jù)加載中……

            架構(gòu)設計師與SOA, 第 1 部分

            SOA(Service-Oriented Architecture),即面向服務的架構(gòu),這是最近一兩年出現(xiàn)在各種技術(shù)期刊上最多的詞匯了。現(xiàn)在有很多架構(gòu)設計師和設計開發(fā)人員簡單的把SOA和Web Services技術(shù)等同起來,認為SOA就是Web Service的一種實現(xiàn)。本質(zhì)上來說,SOA體現(xiàn)的是一種新的系統(tǒng)架構(gòu),SOA的出現(xiàn),將為整個企業(yè)級軟件架構(gòu)設計帶來巨大的影響。本系列兩部分文章將根據(jù)作者自己的理解來幫助大家分析和了解什么是SOA架構(gòu),SOA將怎樣對企業(yè)系統(tǒng)架構(gòu)設計帶來積極的影響,什么是SOA架構(gòu)設計師的角色,以及SOA架構(gòu)師在設計SOA系統(tǒng)架構(gòu)時有哪些應該特別注意的地方。

            1. 什么是架構(gòu)?什么是基于SOA的架構(gòu)?

            1.1 什么是架構(gòu)

            從架構(gòu)設計師的角度來看,架構(gòu)就是一套構(gòu)建系統(tǒng)的準則。通過這套準則,我們可以把一個復雜的系統(tǒng)劃分為一套更簡單的子系統(tǒng)的集合,這些子系統(tǒng)之間應該保持相互獨立,并與整個系統(tǒng)保持一致。而且每一個子系統(tǒng)還可以繼續(xù)細分下去,從而構(gòu)成一個復雜的企業(yè)級架構(gòu)。

            當一名架構(gòu)設計師在構(gòu)建某個企業(yè)級的軟件系統(tǒng)時,除了要考慮這個系統(tǒng)的架構(gòu)以及其應具有的功能行為以外,還要關(guān)注整個架構(gòu)的可用性,性能問題,容錯能力,可重用性,安全性,擴展性,可管理維護性,可靠性等各個相關(guān)方面。有的時候一名好的架構(gòu)設計師甚至還需要考慮所構(gòu)建的系統(tǒng)架構(gòu)是否合乎美學要求。由此我們可以看到,我們衡量一個好的架構(gòu)設計并不能只從功能角度出發(fā),還要考慮很多其他的因素,對任何一個方面的欠缺考慮都有可能為整個系統(tǒng)的構(gòu)建埋下隱患。

            1.2 什么是基于SOA的架構(gòu)

            SOA本身就是一種面向企業(yè)級服務的系統(tǒng)架構(gòu),簡單來說,SOA就是一種進行系統(tǒng)開發(fā)的新的體系架構(gòu),在基于SOA架構(gòu)的系統(tǒng)中,具體應用程序的功能是由一些松耦合并且具有統(tǒng)一接口定義方式的組件(也就是service)組合構(gòu)建起來的。因此,基于SOA的架構(gòu)也一定是從企業(yè)的具體需求開始構(gòu)建的。但是,SOA和其它企業(yè)架構(gòu)的不同之處就在于SOA提供的業(yè)務靈活性。業(yè)務靈活性是指企業(yè)能對業(yè)務變更快速和有效地進行響應、并且利用業(yè)務變更來得到競爭優(yōu)勢的能力。對企業(yè)級架構(gòu)設計師來說,創(chuàng)建一個業(yè)務靈活的架構(gòu)意味著創(chuàng)建一個可以滿足當前還未知的業(yè)務需求的IT架構(gòu)。

            利用基于SOA的系統(tǒng)構(gòu)建方法,如圖1中所示的一樣,一個基于SOA架構(gòu)的系統(tǒng)中的所有的程序功能都被封裝在一些功能模塊中,我們就是利用這些已經(jīng)封裝好的功能模塊組裝構(gòu)建我們所需要的程序或者系統(tǒng),而這些功能模塊就是SOA架構(gòu)中的不同的服務(services)。


            圖1
            圖1

            因此,SOA架構(gòu)本質(zhì)上來說體現(xiàn)了一種復合的概念:它不僅為一個企業(yè)中商業(yè)流程的組織和實現(xiàn)提供了一種指導模式,同時也為具體的底層service開發(fā)提供了指導。







            2. SOA架構(gòu)設計師的角色

            2.1 SOA架構(gòu)設計師應該具備什么?

            談到SOA架構(gòu)設計師的角色,我們首先要了解架構(gòu)設計師應具有的能力。總體上來說,一個好的架構(gòu)設計師不僅應該是一個成熟的,具有實際經(jīng)驗的并具有快速學習能力的人,而且他還應該具有良好的管理能力和溝通能力。只有具備了必需的能力,架構(gòu)設計師才能在關(guān)鍵的時刻作出困難的決定,這就是一名架構(gòu)設計師應該承擔的責任。從角色上來看,SOA 架構(gòu)師不僅會負責端到端的服務請求者和提供者的設計,并且會負責對系統(tǒng)中非功能服務請求的調(diào)研和表述。

            對于任何一名經(jīng)驗豐富的架構(gòu)設計師來說,不論他是采用基于傳統(tǒng)的架構(gòu)設計方法(基于J2EE架構(gòu)或者.NET架構(gòu))還是采用基于SOA的架構(gòu)設計方法來構(gòu)建一個企業(yè)級的系統(tǒng)架構(gòu),具有相關(guān)商業(yè)領(lǐng)域的知識對于架構(gòu)設計師來說都是必不可少的,架構(gòu)設計師往往可以通過實際的工作經(jīng)驗積累以及接受相關(guān)的專項培訓來獲得這些商業(yè)領(lǐng)域的知識。除了具有相關(guān)商業(yè)領(lǐng)域的知識以外,一名合格的架構(gòu)設計師必須具有較廣泛的技術(shù)背景,這可能包括軟硬件,通信,安全等各個方面的知識。但這并不是意味著要成為一名架構(gòu)設計師就必須熟悉每一門具體技術(shù)的細節(jié),架構(gòu)設計師必須至少能對各種技術(shù)有一個整體上的了解,能夠熟知每種技術(shù)的特點以及優(yōu)缺點,只有這樣架構(gòu)設計師才能在特定的應用場景下正確地選擇各種技術(shù)來設計企業(yè)整體架構(gòu)。

            2.2 什么是SOA架構(gòu)設計師的職責?

            那什么是企業(yè)級SOA架構(gòu)設計師的具體角色呢?什么是SOA架構(gòu)設計師與設計和開發(fā)人員之間的差別呢?相信這些都是使大家最容易產(chǎn)生迷惑的問題。舉個實際的例子來說,當構(gòu)建一個基于SOA架構(gòu)的系統(tǒng)的時候,針對一個具體的 service,系統(tǒng)設計人員主要應該關(guān)注的是這個service能夠為外部用戶提供什么樣的服務,也就是說系統(tǒng)設計人員關(guān)注的是這個service所提供的功能。而對于SOA架構(gòu)設計師來說,他們更關(guān)心的可能是當有一千個用戶同時調(diào)用這個 service的時候,什么會發(fā)生?也就是說架構(gòu)設計師關(guān)注的應該是一些商業(yè)需求和服務級別(service-level)需求。所有的架構(gòu)設計師的角色都包含了在構(gòu)建一個系統(tǒng)的一開始就應該盡量減少可能存在的技術(shù)風險。而技術(shù)風險一般指的是一切未知的、未經(jīng)證明的或未經(jīng)測試所帶來的風險。這些風險通常與服務級別(service-level)需求相關(guān),偶爾也會與企業(yè)具體的業(yè)務需求相關(guān)。無論是哪種類型的風險,在項目初期設計整體系統(tǒng)架構(gòu)的過程中更易于發(fā)掘這些風險,如果等到架構(gòu)實施時再發(fā)覺這些風險,那么很可能會致使大量的開發(fā)人員等在那里,直到這些風險被妥善解決。如果進一步的細化,我們可以看到SOA架構(gòu)設計師的主要任務包括對整個系統(tǒng)解決方案輪廓的構(gòu)建,需求分析,對體系結(jié)構(gòu)的整體決策,相關(guān)組件建模,相關(guān)操作建模,系統(tǒng)組件的邏輯和物理布局設計。

            作為SOA架構(gòu)設計師必須要能夠領(lǐng)導整個開發(fā)團隊,這樣才能保證設計和開發(fā)人員是按照構(gòu)建好的系統(tǒng)架構(gòu)來開發(fā)整個系統(tǒng)的,這一點十分的重要。這就要求一名架構(gòu)設計師不僅要有很好的技術(shù)洞察力,同時還要具有一定的項目管理和項目實施的能力。在系統(tǒng)開發(fā)的過程中,架構(gòu)設計師必須要有良好的溝通和表達能力,這就體現(xiàn)在由架構(gòu)設計師構(gòu)建的系統(tǒng)模型是否具有很好的可讀性和易理解性。如果由架構(gòu)設計師構(gòu)造出的系統(tǒng)模型不是很清晰的話,就可能會影響設計和開發(fā)人員對于整個系統(tǒng)架構(gòu)的理解。為了避免這種情況的出現(xiàn),定期由架構(gòu)設計師主持的開發(fā)團隊內(nèi)部討論是十分重要的。







            3. 構(gòu)建SOA架構(gòu)時應該注意的問題

            3.1 原有系統(tǒng)架構(gòu)中的集成需求

            當架構(gòu)師基于SOA來構(gòu)建一個企業(yè)級的系統(tǒng)架構(gòu)的時候,一定要注意對原有系統(tǒng)架構(gòu)中的集成需求進行細致的分析和整理。我們都知道,面向服務的體系結(jié)構(gòu)是當前及未來應用程序系統(tǒng)開發(fā)的重點,面向服務的體系結(jié)構(gòu)本質(zhì)上來說是一種具有特殊性質(zhì)的體系結(jié)構(gòu),它由具有互操作性和位置透明的組件集成構(gòu)建并互連而成。基于SOA的企業(yè)系統(tǒng)架構(gòu)通常都是在現(xiàn)有系統(tǒng)架構(gòu)投資的基礎上發(fā)展起來的,我們并不需要徹底重新開發(fā)全部的子系統(tǒng);SOA可以通過利用當前系統(tǒng)已有的資源(開發(fā)人員、軟件語言、硬件平臺、數(shù)據(jù)庫和應用程序)來重復利用系統(tǒng)中現(xiàn)有的系統(tǒng)和資源。SOA是一種可適應的、靈活的體系結(jié)構(gòu)類型,基于SOA構(gòu)建的系統(tǒng)架構(gòu)可以在系統(tǒng)的開發(fā)和維護中縮短產(chǎn)品上市時間,因而可以降低企業(yè)系統(tǒng)開發(fā)的成本和風險。因此,當SOA架構(gòu)師遇到一個十分復雜的企業(yè)系統(tǒng)時,首先考慮的應該是如何重用已有的投資而不是替換遺留系統(tǒng),因為如果考慮到有限的預算,整體系統(tǒng)替換的成本是十分高昂的。

            當SOA架構(gòu)師分析原有系統(tǒng)中的集成需求的時候,不應該只限定為基于組件構(gòu)建的已有應用程序的集成,真正的集成比這要寬泛得多。在分析和評估一個已有系統(tǒng)體系結(jié)構(gòu)的集成需求時,我們必須考慮一些更加具體的集成的類型,這主要包括以下幾個方面:應用程序集成的需求,終端用戶界面集成的需求,流程集成的需求以及已有系統(tǒng)信息集成的需求。當SOA架構(gòu)師分析和評估現(xiàn)有系統(tǒng)中所有可能的集成需求的時候,我們可以發(fā)現(xiàn)實際上所有集成方式在任何種類的企業(yè)中都有一定程度的體現(xiàn)。針對不同的企業(yè)類型,這些集成方式可能是簡化的,或者沒有明確地進行定義的。因而,SOA架構(gòu)師在著手設計新的體系結(jié)構(gòu)框架時,必須要全面的考慮所有可能的集成需求。例如,在一些類型的企業(yè)系統(tǒng)環(huán)境中可能只有很少的數(shù)據(jù)源類型,因此,系統(tǒng)中對消息集成的需求就可能會很簡單,但在一些特定的系統(tǒng)中,例如航運系統(tǒng)中的EDI(Electronic Data Interchange 電子數(shù)據(jù)交換)系統(tǒng),會有大量的電子數(shù)據(jù)交換處理的需求,因此也就會存在很多不同的數(shù)據(jù)源類型,在這種情況下整個系統(tǒng)對于消息數(shù)據(jù)的集成需求就會比較復雜。因此,如果SOA架構(gòu)師希望所構(gòu)建的系統(tǒng)架構(gòu)能夠隨著企業(yè)的成長和變化成功地繼續(xù)得以保持,則整個系統(tǒng)構(gòu)架中的集成功能就應該由服務提供,而不是由特定的應用程序來完成。

            3.2 服務粒度的控制以及無狀態(tài)服務的設計

            當SOA架構(gòu)師構(gòu)建一個企業(yè)級的SOA系統(tǒng)架構(gòu)的時候,關(guān)于系統(tǒng)中最重要的元素,也就是SOA系統(tǒng)中的服務的構(gòu)建有兩點需要特別注意的地方:首先是對于服務粒度的控制,另外就是對于無狀態(tài)服務的設計。

            服務粒度的控制

            SOA系統(tǒng)中的服務粒度的控制是一項十分重要的設計任務。通常來說,對于將暴露在整個系統(tǒng)外部的服務推薦使用粗粒度的接口,而相對較細粒度的服務接口通常用于企業(yè)系統(tǒng)架構(gòu)的內(nèi)部。從技術(shù)上講,粗粒度的服務接口可能是一個特定服務的完整執(zhí)行,而細粒度的服務接口可能是實現(xiàn)這個粗粒度服務接口的具體的內(nèi)部操作。 舉個例子來說,對于一個基于SOA架構(gòu)的網(wǎng)上商店來說,粗粒度的服務可能就是暴露給外部用戶使用的提交購買表單的操作,而系統(tǒng)內(nèi)部的細粒度的服務可能就是實現(xiàn)這個提交購買表單服務的一系列的內(nèi)部服務,比如說創(chuàng)建購買記錄,設置客戶地址,更新數(shù)據(jù)庫等一系列的操作。雖然細粒度的接口能為服務請求者提供了更加細化和更多的靈活性,但同時也意味著引入較難控制的交互模式易變性,也就是說服務的交互模式可能隨著不同的服務請求者而不同。如果我們暴露這些易于變化的服務接口給系統(tǒng)的外部用戶,就可能造成外部服務請求者難于支持不斷變化的服務提供者所暴露的細粒度服務接口。而粗粒度服務接口保證了服務請求者將以一致的方式使用系統(tǒng)中所暴露出的服務。雖然面向服務的體系結(jié)構(gòu)(SOA)并不強制要求一定要使用粗粒度的服務接口,但是建議使用它們作為外部集成的接口。通常架構(gòu)設計師可以使用BPEL來創(chuàng)建由細粒度操作組成的業(yè)務流程的粗粒度的服務接口。

            無狀態(tài)服務的設計

            SOA系統(tǒng)架構(gòu)中的具體服務應該都是獨立的、自包含的請求,在實現(xiàn)這些服務的時候不需要前一個請求的狀態(tài),也就是說服務不應該依賴于其他服務的上下文和狀態(tài),即SOA架構(gòu)中的服務應該是無狀態(tài)的服務。當某一個服務需要依賴時,我們最好把它定義成具體的業(yè)務流程(BPEL)。在服務的具體實現(xiàn)機制上,我們可以通過使用 EJB 組件來實現(xiàn)粗粒度的服務。我們通常會利用無狀態(tài)的Session Bean來實現(xiàn)具體的服務,如果基于Web Service技術(shù),我們就可以將無狀態(tài)的Session Bean暴露為外部用戶可以調(diào)用的到的Web服務,也就是把傳統(tǒng)的Session Facade模型轉(zhuǎn)化為了 EJB 的Web服務端點,這樣,我們就可以向 Web 服務客戶提供粗粒度的服務。

            如果我們要在 J2EE的環(huán)境下(基于WebSphere)構(gòu)建Web服務,Web 服務客戶可以通過兩種方式訪問 J2EE 應用程序。客戶可以訪問用 JAX-RPC API 創(chuàng)建的 Web 服務(使用 Servlet 來實現(xiàn));Web 服務客戶也可以通過 EJB的服務端點接口訪問無狀態(tài)的Session Bean,但Web 服務客戶不能訪問其他類型的企業(yè)Bean,如有狀態(tài)的Session Bean,實體Bean和消息驅(qū)動Bean。后一種選擇(公開無狀態(tài) EJB 組件作為 Web 服務)有很多優(yōu)勢,基于已有的EJB組件,我們可以利用現(xiàn)有的業(yè)務邏輯和流程。在許多企業(yè)中,現(xiàn)有的業(yè)務邏輯可能已經(jīng)使用 EJB 組件編寫,通過 Web 服務公開它可能是實現(xiàn)從外界訪問這些服務的最佳選擇。EJB 端點是一種很好的選擇,因為它使業(yè)務邏輯和端點位于同一層上。另外EJB容器會自動提供對并發(fā)的支持,作為無狀態(tài)Session Bean實現(xiàn)的 EJB 服務端點不必擔心多線程訪問,因為 EJB 容器必須串行化對無狀態(tài)會話 bean 任何特定實例的請求。 由于EJB容器都會提供對于Security和Transaction的支持,因此Bean的開發(fā)人員可以不需要編寫安全代碼以及事務處理代碼。 性能問題對于Web服務來說一直都是一個問題,由于幾乎所有 EJB 容器都提供了對無狀態(tài)會話 Bean 群集的支持以及對無狀態(tài)Session Bean 池與資源管理的支持,因此當負載增加時,可以向群集中增加機器,Web 服務請求可以定向到這些不同的服務器,同時由于無狀態(tài)Session Bean 池改進了資源利用和內(nèi)存管理,使 Web 服務能夠有效地響應多個客戶請求。由此我們可以看到,通過把 Web 服務模型化為 EJB 端點,可以使服務具有更強的可伸縮性,并增強了系統(tǒng)整體的可靠性。







            4. 結(jié)束語

            本文簡要介紹了有關(guān)架構(gòu)設計師以及SOA架構(gòu)的知識,分析了SOA架構(gòu)師在設計SOA系統(tǒng)架構(gòu)時有哪些應該特別注意的地方。

            本文的第二部分將向您介紹在構(gòu)建基于SOA架構(gòu)的企業(yè)系統(tǒng)時應該怎樣保證所構(gòu)建的系統(tǒng)架構(gòu)能夠滿足系統(tǒng)中不同的服務級別需求。從架構(gòu)設計師的角度,SOA是一種新的設計模式,方法學。因此,SOA本身涵蓋了很多的內(nèi)容,也觸及到了系統(tǒng)整體架構(gòu)設計、實現(xiàn)、維護等各個方面。本文的內(nèi)容只是涉及到了有關(guān)于架構(gòu)方面的一部分內(nèi)容,希望能對廣大的SOA系統(tǒng)開發(fā)設計人員起到一定的幫助作用。

            posted on 2006-04-17 04:03 wsdfsdf 閱讀(159) 評論(0)  編輯 收藏 引用 所屬分類: 技術(shù)文章

            美女写真久久影院| 国产精品久久久久aaaa| 久久精品一区二区影院| 狠狠色丁香久久婷婷综合蜜芽五月| 日本精品久久久久久久久免费| 国产精品久久久久蜜芽| 99精品久久精品| 亚洲国产精品无码久久久久久曰| 久久亚洲精品无码AV红樱桃| 色综合久久中文综合网| 久久亚洲AV无码精品色午夜| 欧美精品一本久久男人的天堂| 97精品伊人久久大香线蕉| 热99re久久国超精品首页| 久久久久亚洲国产| 国产成人99久久亚洲综合精品| 久久亚洲精品成人无码网站| 国产精品免费看久久久香蕉| 香蕉久久夜色精品升级完成| 免费精品国产日韩热久久| 蜜桃麻豆www久久| 激情伊人五月天久久综合| 欧美久久久久久| 久久久免费观成人影院| 国产精品九九久久免费视频| 99久久国产热无码精品免费| 久久久久人妻一区二区三区| 亚洲国产日韩欧美综合久久| 国产精品一区二区久久精品无码 | 久久天天躁狠狠躁夜夜avapp| 国产高清美女一级a毛片久久w| 国产∨亚洲V天堂无码久久久| 久久精品国产免费观看三人同眠| 久久久久国产视频电影| 99久久精品国产毛片| 国产成人精品久久综合| 久久九九全国免费| 一本大道久久a久久精品综合| 亚洲国产天堂久久综合网站| AA级片免费看视频久久| 激情久久久久久久久久|