SOA架構的目的及價值
1.SOA存在的目的?
傳統的java類庫要解決是的代碼的復用
而SOA架構的目的是服務復用,因為java代碼的復用是無狀態,而服務的重用則是有狀態的(此處的無狀態或是說跟環境相關的,如中國移動提供一個短信發送網關,那么我們通過這個網關即可以發送短信,這就是服務),并且一般還有跨語言的重用要求(這樣可以更加的保障投資價值,所以經常選擇webserice soap作為傳輸協議).
2.為什么說SOA是一種風格?
為何說是一種風格呢?因為有很多人以為webservice就是SOA,如前所述,SOA需要解決是的服務的重用問題,所以為達這個目的,不管你使用何種傳輸協議.只要能夠解決服務復用問題即可. 在這里要給EJB平反一下,EJB的無狀態Session Bean應該是專屬于JAVA的SOA服務架構(它解決了服務復用問題及服務集成問題,但沒有解決跨語言復用,但如果是企業內部系統,跨語言也并不是EJB的致命缺點)
3.SOA解決了服務集成(依賴)問題
服務與服務之間可能存在依賴問題, EJB中使用jndi用于查找ejb對象,而SOA架構中也需要該項措施,采用集中式的服務查找服務.將交叉且復雜的依賴關系轉變為易于理解的星型關系.
service使用者 ==========> service服務注冊中心 <========= service提供方
查找服務 注冊服務
而在webservice協議中辦演該角色是的UDDI, 并且通過service服務注冊中心,我們可能還提供可以做到如服務的負載均衡,服務的故障自動檢測等集中式管理功能.(自己擴展實現一個類似UDDI的功能也可)
現實存在的情況是很多程序員以為簡單的webservice調用即是SOA,如果在服務過多的情況下,會導致服務依賴關系復雜