上一篇博文中提到了“緊耦合”的現象,如何解決?SOA,采用面向服務的體系架構。
SOA=Service-oriented Architecture面向服務的體系結構
SOA是一個組件模型,它將應用程序的不同功能單元(稱為服務)通過這些服務之間定義良好的接口和契約聯系起來。
我個人更加傾向於這樣的一種解釋:SOA是指為了解決在Internet環境下業務集成的需要,通過連接能完成特定任務的獨立功能實體實現的一種軟件系統架構。
所以,SOA是什麼?SOA不是一種語言,也不是一種具體的技術而是一種軟件系統架構。
SOA的最主要的應用場合在於解決在Internet環境下的不同商業應用之間的業務集成問題。
SOA的3個基本特征:獨立的功能實體,大數據量低頻率訪問,基於文本的消息傳遞。
1.獨立的功能實體:SOA非常強調架構中提供服務的功能實體的完全獨立自主的能力。SOA架構中非常強調實體自我管理和恢復能力。常見的用來進行自我恢復的技術,比如事務處理(Transaction),消息隊列(MessageQueue),冗余部署(Redundant Deployment)和集群系統(Cluster)在SOA中都起到至關重要的作用。SOA在這一點上大大提高了軟件的穩定性,尤其是基於Internet之上的。
2.大數據量低頻率訪問:在Internet的環境下,通過客戶端和服務器來回很多次函數調用給系統的響應速度和穩定性帶來的很大的影響,而且往往這些因素是決定整個系統是否能正常工作的一個關鍵決定因素。因此SOA系統推薦采用大數據量的方式一次性進行信息交換。
3.基於文本的消息傳遞:在Internet環境下,不同語言,不同平台對數據、甚至是一些基本數據類型定義不同,給不同的服務之間傳遞對象帶來的很大困難。由於基於文本的消息本身是不包含任何處理邏輯和數據類型的,因此服務間只傳遞文本,對數據的處理依賴於接收端的方式可以幫忙繞過兼容性這個的大泥坑。
此外,對於一個服務來說,Internet與局域網最大的一個區別就是在Internet上的版本管理極其困難,傳統軟件采用的升級方式在這種松散的分布式環境中幾乎無法進行。采用基於文本的消息傳遞方式,數據處理端可以只選擇性的處理自己理解的那部分數據,而忽略其它的數據,從而得到的非常理想的兼容性。
IT企業的現狀:不同種類的操作系統,應用軟件,系統軟件和應用基礎結構(applicationinfrastructure)相互交織。
對SOA的需要來源於需要使業務IT系統變得更加靈活,以適應業務中的改變。通過允許強定義的關系和依然靈活的特定實現,IT系統既可以利用現有系統的功能,又可以准備在以後做一些改變來滿足它們之間交互的需要。
SOA憑借其松耦合的特性,使得企業可以按照模塊化的方式來添加新服務或更新現有服務,以解決新的業務需要,提供選擇從而可以通過不同的渠道提供服務,並可以把企業現有的或已有的應用作為服務,從而保護了現有的IT基礎建設投資。
說到這裡,可能有人會想到面向對象。而且面向服務和面向對象看起來都差不多啊,都能夠解決緊耦合的問題,so,我將會在下一篇博文中,與大家分享面向對象與面向服務的關系,期待與大家的交流!