亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

為何不讓SOA變得簡單?

2019-11-18 12:25:11
字體:
來源:轉載
供稿:網友

  最近,SOA成為跨技術平臺(非凡是J2EE和.Net)軟件開發中的熱門話題。然而,假如我們比較一下圍繞著SOA的宣傳和90年代后期EJB和服務件的宣傳,你會發現這沒有什么區別。1998年,EJB帶領互聯網的潮流并推翻了以CORBA的統治和由PB/Oracle Forms和其他主導的CS架構標準。SOA,作為一種新技術的術語,還不具有那么大的破壞性。SOA只是一種想法/概念和一組構建應用功能的最佳實踐。相反地,J2EE是一套完整地開發技術,可以用來設計所有的東西。

  我對SOA的主要關注在于企業級java應用通用的問題:復雜性。次要關注的是SOA通常作為一種解決方案被用來跨越J2EE應用各層,雖然這似乎沒有什么意義。本文提取出SOA的基本元素并介紹他們。一旦我們理解這些,就可以理解SOA系統中的更復雜的組件了。最后,我們可以了解一下SOA給J2EE應用帶來的實際價值,同時并不增加無用的復雜性。
本文分為個部分:首先,提出了我對SOA作為一種標準參考點的定義。其次,檢查那些主要的軟件工種問題通過SOA可以解決而不是用SOA來檢查。再次,會給出基于復雜需求的SOA的建議分類。最后,給出三種主要SOA分類的建議實現。

  SOA是什么?

  SOA有很多定義。下面是我的定義:
  SOA是宏級別的應用到應用架構級的設計模式:
  1、可選地暴露應用的功能作為一組離散的組件。
  2、使這些組件能被用來構建更復雜的組件和應用。
  3、僅包含基于消息的組件內部通訊。

  我還遺漏了什么呢?還有一些方面,包括:
  1、安全性
  2、事務
  3、狀態或無狀態會話
  4、消息無數據
  5、 消息特性
  6、 消息協議
  7、 消息內容
  8、  具體技術實現

  這些方面也是重要的,但不是主要的。我的定義提取了SOA的核心規則,但沒有拋棄概念本身。
注重我在定義中引用了設計模式。我認為這是要害。SOA不是什么新技術,事實上,其最吸引人的一個地方是可以利用現有的技術并使其泛出新的光線。對我來說,SOA更像是一幅藍圖,一組最佳實踐,或者說是一個定義下一代的軟件應用應該如何設計和實現的規范。

  基礎SOA方法

  從上面的定義,我們應該可以標識出組成SOA應用的必須提供的軟件服務的最小集合。簡潔地說,這些服務是:

  1、消息層,答應消息通過特定的協議傳輸和接收。用SOA的說法,這一層稱為企業服務母線或簡寫為ESB。
  2、一個組件模型,如應用必須遵循的發送和接收來消息母線的消息的最小約定。

  取決于你自己的業務需求,這兩種服務可以極度的擴大,但在核心來說,消息層和通用組件模型就代表了SOA。

  注重,我沒有在SOA的定義中包含自動定位和發現服務(在大部分JEE場景中,這是很有殺傷力的)。在UDDI(通用描述/發現/集成協議)后的原始想法是認為企業最終會使用軟件服務(通過一個大的基于元數據搜索服務倉庫)來購買和銷售。這個美夢至少也得十年后,也許永遠不會實現,因為人們是需要做的實際的業務而不是軟件。

  JEE應用不需要自動發現服務,例如登錄或支付服務,這些服務應該在初始化時設置。不要誤導我,假如這些服務的實現不應該硬編碼到應用中,那么你也不需要SOA來解決這些問題了。

  下一節,我們會來考慮一下究竟需要SOA來解決什么,或者他能替代什么。

  為什么要SOA?

  最近的兩撥企業級軟件開發的主浪潮是C/S架構和多層架構。雖然多層架構提供了C/S架構中布署/平臺支持/性能/伸縮性上更好的效果,但兩者都沒有解決一個要害的企業級計算機領域的軟件工程問題:如何重用軟件功能。作為軟件開發人員和架構師,我們始終沒有完全解決軟件重用的問題。再往下看,你會看到我也不認為SOA能解決這個問題。然而,我認為軟件重用是SOA出現的最重要原因(至少在JEE應用中是這樣)。

  其他SOA使用現有的Jini和風格計算?;贘ini環境的特點如下:
  1、自動發現組件/服務
  2、自愈的

  然而,這些特性并沒有與JEE應用等同的重要性。使用JDBC配置數據庫的位置只需要一次。我期望數據庫來提供容錯和除錯功能,而且我不需要JEE應用來嘗試當產品實例當機時自動發現其他的數據庫實例。另一方面,對一個有2000個工作站的辦公室來說自動發現一個彩色打印機是一件好事,這也是符合Jini硬件的一個要害好處。

  平等地主,在一個真實的全球網格計算環境中,自動發現和枚舉計算資源來解決問題是基礎框架的要害部分,但這不是一個JEE環境,那兒硬件預先計算的以便在定義用戶數據和服務性能之間平衡。

  我的觀點是,SOA對不同的需求需要不同對待。在本文中,我只關心JEE架構方面的SOA,而我認為這意味著功能重用。其他從JEE觀點來看SOA的優點還有:
  1、松耦合的組件,這是軟件設計中重要的部分
  2、引入ESB作為消息層意味著強制“面向接口編程,而不是實現”
  3、異步消息增加了應用的伸縮性

  讓我們通過問三個特定的問題來看一下軟件重用中更細節的問題:
  1、為什么重用軟件是重要的?
  2、SOA是如何提出解決軟件重用問題的?
  3、是否SOA的允諾能夠使軟件重用應用到現實中?

  首先,軟件重用是重要的原因如下:
  1、時間和花費上的效率—能夠重用已經的組件來滿足陳述的業務需求將節省大量的時間和金錢。
  2、重要的特性包括但不限于如穩定性/性能/可治理性/文檔/可配置性。因為一個組件被重用的次數越多,對這個組件的投資也越多,他的優勢也越多。
  3、 良好設計的可重用框架無論在哪里被使用都擁有正面的效果,而且你愿意的話可以封裝更好的想法來解決通用問題。

  因此我們需要重用性。那么最簡單的方法是什么呢?就是打包軟件作為一組良好定義的組件來滿足離散的功能需求。然后,假如其他應用需要相同的組件,他就可以重用了。還有些細節需要考慮,如如何配置,但這些細節已經偏離了主題:重用任何語言編寫的代碼,那些代碼必須被設計成一組離散的組件或重構為集合。

  可以參考我在JavaWorld上的第一篇文章,“節省時間的框架”(2000.9),有更多細節善于JEE項目的軟件重用。

  其次,SOA是如何解決軟件重用的問題呢?是通過基于組件模型來構建和引入一個重要的強制約定:組件間的通訊要通過下發到ESB的消息來進行,而這就確保了松耦合。實際上,最廣泛布署的SOA實現—Web services可以通過使消息層技術中性來縫合用不同語言開發的組件。

  最后,SOA對軟件重用的允諾真有實際意義嗎?不,我想念假如SOA在1945(大概是和ENIAC同時代吧)被發明的話確實可以解決軟件重用的問題。但沒有,現存的大量代碼是用不同的開發語言編寫的,有COBOL/C/C++http://java.chinaitlab.com/C#和其他語言。這些代碼沒有作為離散的組件來編寫,因此也沒有SOA魔法來解決。事實上,我認為有大量的SOA項目的工作是花費在重構相同的代碼庫。

  現在,讓我們來看一下對于JEE應用SOA可以解決的一些問題。

  SOA缺點

  SOA缺點包括下面三方面:
  1、 SOA自身的缺點,主要當前還沒有成熟的實現
  2、 SOA的復雜性
  3、  廠商對SOA在更廣泛的JEE產品和方案中的位置

  那么我們就心批判的眼光來看一下:

  ·并沒有像JEE規范那樣有自己的正式規范。雖然有一個發布的規范,但那個太復雜了并且沒有遵循80:20法則(80%的應用需要簡單的SOA,只有20%的應用需要更強大而復雜的功能)
  ·有狀態會話依然存在廣泛爭議而且現在還沒有被SOA的缺省實現(Web services)所解決。而無狀態會話已經是完全支持了。
  ·由于缺省正式或推薦的規范,Web services已經成為許多人眼里SOA的代名詞了,但Web services通常是過于強大了。
  ·SOA增加了復雜性??赡苣愀矚g硬編碼和緊耦合,而不需要xml配置文件來運行簡單的應用。
  ·SOA兼容的應用對本身來說沒有什么意義。其商業價值來自于能夠提供離散的功能塊通過SOA被用于其他的應用和模塊。例如,假如你對訂單的較驗規則是通過jsp頁面中的Java代碼來實現的,那么你還需要重構代碼將其放到服務端對象中以便于SOA調用—但很多廠商并沒有提及這一點。
  ·在某些情況下,廠商將SOA作為網頁應用框架的替代者!我認為,WAF是SOA定義功能中的消費者,只是作為一種補充,而不存在竟爭關系。
  · 與廠商提供的相反,一些應用根本不需要SOA而只需要簡單使用MVC框架就可以了。這很短視嗎?我不這么認為,即使SOA的特性是需要的,在上面的情況下,最重要的部分是用來服務于企業服務總線的良好定義的業務邏輯層,而不是ESB自身。

  雖然我不認為SOA是一顆解決現有和新建應用中問題的銀彈,便我相信SOA在他相應的位置上還是有其內在的價值的?,F在讓我們來看一下在應用中增加有效的SOA解決方案是如何提供體現其商業價值的。

  建議的SOA分類

  現在,你應該對我保持事物的簡單性的熱忱表示感激吧。但我本質上并不是簡單論者,我是一個實用主義者。對軟件項目來說,我認為實用主義是一方面要平衡項目的商業和實際價值,另一方面是使用軟件設計上的最佳實踐。簡單的說,就是在我們現有條件下構建我們所能創建的最好的系統。

  一個實用主義的好例子來自于民間的工程歷史。在修鐵路時常修木橋,而我們知道用鐵橋會更好。當鐵路公司的股東想使用鐵路盡快開工而且初始投資要有限制時,他就是這是最好的工程方案了。是否聽起來耳熟?同樣的原則可以應用于軟件工程。

  根據實用主義的精神,我建議將SOA分為三個級別:簡單/中等/復雜,衡量標準是需要滿足的業務需求。假如你需要簡單的SOA,那么不要浪費時間和金錢在復雜的SOA上。

  級別1:簡單的SOA

  樣例實現:
  1、使用自己的POJO隊列實現來發送和接收消息。
  2、帶有MDB(消息驅動Bean)的JMS隊列/主題作為消息的消費者。

  這里涵蓋的要害SOA概念有:
  1、企業服務總線
  2、生產者/消費者的組件模型。

為何不讓SOA變得簡單?(圖一)

點擊查看大圖


  Figure 1. Schematic illustrating the core components of the simple SOA. Click on thumbnail to view full-sized image.

  級別2:中等的SOA

  樣例實現:
  1、帶有MDB的JMS隊列/主題作為消息的消費者,并附加其他特性如安全性/事務/JMS元數據屬性等
  2、 Web services,例如Apache Axis

  這里涵蓋的要害SOA概念在包含簡單SOA外還有:
  1、用來增加健壯性和可靠性的錯誤/重試隊列。
  2、引入XML作為消息的有效負載內容來代替序列化Java對象,從而支持其他技術如.Net

為何不讓SOA變得簡單?(圖二)

點擊查看大圖


  Figure 2. Schematic illustrating the core components of the medium-complexity SOA. Click on thumbnail to view full-sized image.

  級別3:復雜的SOA

  樣例實現:
  1、帶有MDB的JMS隊列/主題作為消息的消費者,并附加其他特性如安全性/事務/JMS元數據屬性等
  2、Web services
  3、廠商/標準相關的SOA兼容工具包(如專門的金融服務)

  這里涵蓋的要害SOA概念在包含中等SOA外還有:
  1、良好定義而且嚴格的組件模型(例如Java業務集成/服務組件架構及其他)
  2、增強的廠商支持,如可插拔的新生產者/消費者組件創建
  3、 具體枚舉特定SOA實現上可用服務的組件注冊表。

為何不讓SOA變得簡單?(圖三)

點擊查看大圖



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产一区私人高清影院| 国产亚洲欧美一区| 91欧美精品午夜性色福利在线| 日本成人精品在线| 精品视频在线播放色网色视频| 成人免费网站在线看| 欧美多人乱p欧美4p久久| 国产精品中文久久久久久久| 国产精品永久免费在线| 色视频www在线播放国产成人| 精品国产一区二区三区久久久狼| 国产精品电影网| 久久色免费在线视频| 蜜月aⅴ免费一区二区三区| 亚洲成色777777女色窝| 亚洲精品欧美日韩专区| 欧美大片在线影院| 不卡av日日日| 国内久久久精品| 久久91精品国产91久久跳| 亚洲第一综合天堂另类专| 久久精品国产亚洲精品2020| 性欧美亚洲xxxx乳在线观看| 久久国产精品久久久久久久久久| 国产精品扒开腿做爽爽爽视频| 成人免费观看49www在线观看| 日韩福利伦理影院免费| 欧美电影免费观看| 欧美极品少妇xxxxⅹ免费视频| 久久精品91久久久久久再现| 欧美激情精品久久久久久大尺度| 欧美天堂在线观看| 精品成人在线视频| 国产精品三级久久久久久电影| 亚洲小视频在线| 欧美国产高跟鞋裸体秀xxxhd| 成人欧美在线观看| 亚洲综合在线做性| 欧美在线视频免费| 亚洲成人激情图| 精品美女国产在线| 国产欧美日韩91| 午夜精品久久久久久久99黑人| 2019国产精品自在线拍国产不卡| 狠狠久久亚洲欧美专区| 亚洲丝袜av一区| 精品国产拍在线观看| 91精品久久久久久久| 精品国产福利视频| 国产精品综合不卡av| 91香蕉嫩草神马影院在线观看| 亚洲精品在线观看www| 久久久久国产精品一区| 欧美成人免费va影院高清| **欧美日韩vr在线| 国产精品免费小视频| 欧美午夜久久久| 97色在线视频观看| 91爱爱小视频k| 不卡中文字幕av| 日韩在线www| 精品久久久久久| 亚洲xxxxx| 精品久久久久久久中文字幕| 国产亚洲a∨片在线观看| 久久99久久亚洲国产| 亚洲大胆人体视频| 亚洲日韩中文字幕在线播放| 8090成年在线看片午夜| 亚洲精品小视频| 日本精品视频在线观看| 久久精品国产久精国产一老狼| 日本免费一区二区三区视频观看| 97久久久免费福利网址| 亚洲国产精品字幕| 亚洲片在线观看| 播播国产欧美激情| 秋霞成人午夜鲁丝一区二区三区| 国产亚洲人成a一在线v站| 日韩av不卡在线| 日韩精品在线免费观看视频| 91国产高清在线| 一本色道久久综合亚洲精品小说| 日韩福利在线播放| 国产原创欧美精品| 欧美一区视频在线| 久久国产色av| 亚洲成色777777在线观看影院| 亚洲女人天堂成人av在线| 亚洲一区二区三区香蕉| 亚洲欧美在线磁力| 久久亚洲精品视频| 亚洲激情视频在线观看| 91精品免费视频| 国产精品久久久久999| 最近2019免费中文字幕视频三| 2019中文在线观看| 91精品免费看| 久久不射热爱视频精品| 欧美精品999| 91tv亚洲精品香蕉国产一区7ujn| 高清欧美性猛交xxxx黑人猛交| 欧美午夜精品久久久久久人妖| 97视频国产在线| 国产丝袜一区二区| 亚洲欧美日韩精品久久奇米色影视| 97在线精品国自产拍中文| 久久影视电视剧免费网站清宫辞电视| 成人在线精品视频| 九九精品视频在线观看| 国产精品久久久久久久久影视| 亚洲xxxxx性| 欧美午夜影院在线视频| 欧美疯狂做受xxxx高潮| 欧美性感美女h网站在线观看免费| 亚洲女人天堂av| 精品国内产的精品视频在线观看| 久久久av亚洲男天堂| 国产日韩精品入口| 一区二区中文字幕| 久久久久久久影院| 日韩av电影手机在线观看| 亚洲美女性视频| 亚洲色图综合网| 欧美老女人性生活| 91精品久久久久久久久久久久久久| 久久精品青青大伊人av| 久久精品视频导航| 久久99精品久久久久久噜噜| 久久久精品国产一区二区| 欧美精品videos另类日本| 亚洲人成在线播放| 亚洲经典中文字幕| 午夜免费在线观看精品视频| 亚洲欧洲成视频免费观看| 欧美老肥婆性猛交视频| 欧美又大粗又爽又黄大片视频| 久久亚洲精品国产亚洲老地址| 久久久久久久久久国产| 国产热re99久久6国产精品| 欧美日韩在线视频一区二区| 久久手机免费视频| 日韩有码在线播放| 欧美精品18videosex性欧美| 久久成人18免费网站| 91网在线免费观看| 色与欲影视天天看综合网| 国产精品www| 中文字幕国产日韩| 国产成人精品一区二区| 日韩精品视频免费专区在线播放| 欧美午夜精品伦理| 97国产精品免费视频| 中文综合在线观看| 91精品视频网站| 国产午夜精品理论片a级探花| 欧美大片免费看| 欧美激情手机在线视频| 全亚洲最色的网站在线观看| 69av在线播放| 久久青草福利网站| 欧美午夜宅男影院在线观看| 欧美人交a欧美精品| 午夜精品久久久久久久久久久久久|