這周沒想到要更新什么內容,就把我最近工作接觸的WSO2 ESB簡單介紹下吧。
前提:
一切文檔,知識都要與官方文檔為准。
WSO2 ESB:
http://wso2.com/products/enterprise-service-bus/
WSO2 ESB 文檔:
https://docs.wso2.com/display/ESB481/WSO2+Enterprise+Service+Bus+Documentation
我這篇博客不作具體做一步步的教程,需要學習的可以參考官方文檔一步步的入手。
-
那什么是WSO2 ESB?
我也不想去copy什么是ESB。我舉一個例子吧。
想想在一個很大的公司,這個公司有2個大的部門。部門A,部門B。
部門A有10個web service,5個是WCF開發的基於SOAP,安全校驗是A(比如 SAML Token吧),5個是restful安全校驗是B.
部門A有5個web service,3個是JAVA開發的基於SOAP,安全校驗是A(比如 SAML Token吧),2個是restful安全校驗是C.
然后前段業務需要快速開發移動APP,這需要后端service是restful風格的。由於移動變化快,需要不用的需求,需要更多數據?
后端的web service僅僅提供最為基礎的數據,雖然全,但是沒有根據前段的業務去優化數據。
有一天,移動APP需要調用部門A的service1(SOAP 風格)和service2(restful)和們部門B的service3(SOAP)去得到相關數據,然后需要調用部門A的service4(SOAP) 去更新數據。
這樣有2中方案:
方案1:移動APP就需要處理很多,需要考慮不同service的協議和安全校驗。
方案2:要求后台開發一個service為移動app提供服務。
顯然方案1把太多的業務邏輯放在了前端。方案2,適應不了快速的APP開發。
那么ESB就出來了,它是作為一個中間層把移動app和后端的web service分開來。
ESB會提供web sevice與移動app打交道,這樣就為前端提供一個新的service,專門滿足前端APP
的需求。統一的協議,統一的安全校驗。
這樣在ESB內部就可以處理調用后端service的邏輯。
-
一個簡單的例子。
還是上面的那個例子:
有一天,移動APP需要調用部門A的service1(SOAP 風格)和service2(restful)和們部門B的service3(SOAP)去得到相關數據,然后需要調用部門A的service4(SOAP) 去更新數據。
這樣移動APP說,我需要一個新的service,那么定義好需要那么得到那些數據,需要更新那些數據,需要什么協議(soap,restful),需要數據的格式是什么(xml,json)。。。。
ESB就新建一個service提供這種服務。
這ESB內部,得到移動app傳來的數據,比如是xml把,然后把xml轉換成soap或者restful,然后再ESB內部調用后端service,然后把數據在轉換好,發給移動APP。
WSO2 ESB提供很多組件,去處理請求。它可以不移動app發過來的任何格式,轉換成任何格式,post到后端的service,得到數據后,再把數據轉換成符合移動app的格式。
在WSO2 esb可以用腳本語言,JS,python,ruby處理不同格式之間的轉換。也可以用
org.apache.axiom.om (java)。。
-
全棧工程師?
這樣開發移動app的可以在界面用js來寫,在服務端可以node.js來寫,在后端的WSO2 ESB可以用js來寫web service來得到數據。
這樣主要后端提供好基礎數據,前端就可以全棧快速的開發滿足需求的功能和產品。
這些僅僅是我的簡單理解和隨筆。工作中,我是在一個后端WCF webservice team的,最新我們可能准備使用WOS2 ESB來為移動app提供快速的服務,所以有機會使用WSO2 ESB來做前期的調查。