• <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
            數據加載中……

            架構設計師與SOA, 第 1 部分

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

            1. 什么是架構?什么是基于SOA的架構?

            1.1 什么是架構

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

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

            1.2 什么是基于SOA的架構

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

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


            圖1
            圖1

            因此,SOA架構本質上來說體現了一種復合的概念:它不僅為一個企業中商業流程的組織和實現提供了一種指導模式,同時也為具體的底層service開發提供了指導。







            2. SOA架構設計師的角色

            2.1 SOA架構設計師應該具備什么?

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

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

            2.2 什么是SOA架構設計師的職責?

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

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







            3. 構建SOA架構時應該注意的問題

            3.1 原有系統架構中的集成需求

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

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

            3.2 服務粒度的控制以及無狀態服務的設計

            當SOA架構師構建一個企業級的SOA系統架構的時候,關于系統中最重要的元素,也就是SOA系統中的服務的構建有兩點需要特別注意的地方:首先是對于服務粒度的控制,另外就是對于無狀態服務的設計。

            服務粒度的控制

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

            無狀態服務的設計

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

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







            4. 結束語

            本文簡要介紹了有關架構設計師以及SOA架構的知識,分析了SOA架構師在設計SOA系統架構時有哪些應該特別注意的地方。

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

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

            亚洲精品无码久久久久| 国产精品嫩草影院久久| 久久久久人妻一区二区三区 | 久久中文字幕一区二区| 国产精品久久久久久福利69堂| 久久免费精品视频| 亚洲欧美成人久久综合中文网 | 97精品依人久久久大香线蕉97| 无码日韩人妻精品久久蜜桃 | 精品无码久久久久久久动漫| 亚洲国产高清精品线久久 | 久久久精品国产Sm最大网站| 亚洲精品乱码久久久久久蜜桃图片 | 久久久久久国产a免费观看黄色大片| 久久久久亚洲AV无码麻豆| 久久久久久噜噜精品免费直播| 一本久道久久综合狠狠爱| 久久久久久亚洲精品无码| 久久最近最新中文字幕大全| 久久精品国产日本波多野结衣| 久久免费视频6| 精品久久久久久无码人妻蜜桃| 久久AV无码精品人妻糸列| 久久综合鬼色88久久精品综合自在自线噜噜| 精品少妇人妻av无码久久| 精产国品久久一二三产区区别| 欧美午夜精品久久久久久浪潮| 99久久国产综合精品成人影院| 国产精品久久久天天影视| 亚洲国产精品无码久久98| 亚洲精品无码久久久久sm| 人妻无码精品久久亚瑟影视| 亚洲欧美成人久久综合中文网| 亚洲日本va午夜中文字幕久久| 久久久久国产| 无码任你躁久久久久久老妇| 色悠久久久久久久综合网| 久久无码人妻精品一区二区三区| 欧洲国产伦久久久久久久 | 久久无码中文字幕东京热| 国内精品综合久久久40p|