構件化開發,SOA初涉

一直提倡的Java構件化開發,到今天偶總算漸漸想明白是怎麼回事啦。

每一個業務模塊都是構件,構件可以是獨立部署的war應用程序或者jar包。

每一個構件都能夠獨立部署運行,又能在集成環境下運行,這時候怎麼管理構件之間的依賴關係成爲了一種關鍵。

偶像的是同一個App Server下部署的構件,可以通過App Server本身提供的功能進行服務的調用,例如發佈成JMX服務之類。
也就是說,例如在同一個JBoss下發布了A構件和B構件,A構件想調用B構件裏的b1接口,可以將b1的實現類發佈成一個服務,然後把接口提供給A,就實現了A構件調用B構件的服務。

有人說,爲什麼不直接把b1打成jar包直接提供給A,讓A本地化調用?

請注意,使用b1服務的不只是A,可能還有C,D,E,如果打jar包給A,C,D,E構件的話,那麼意味着B一旦升級功能,需要重新編譯打包,同時A,C,D,E的代碼也有可能發生變化。所以必須通過服務的方式提供。

那麼其他的問題又來了,如果A和B不在同一個server裏呢?那又需要怎麼做呢?

webservice的方式是一個好的解決方法。但是,在開發的時候,A根本不知道B最終會被部署到哪個App Server下,再者,B部署的App Server,也可能在各種環境下變化。

所以,需要一個服務的管理者出現,任何需要提供服務的構件,都必須在服務管理者裏進行註冊。而服務的調用者,同樣是通過服務管理者進行服務的獲取。這樣即便B部署的環境發生了變化,只需要服務管理者變化即可,A,C,D,E這樣的調用者是不需要知道任何實現細節的。

偶很艱難的悟清了上面這些道理,恍然一想,是否跟最近流行的SOA的架構極爲相似涅?
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章