組件化的業務系統架構觀念聽說已經提出來20多年了,但是至今沒有見到讓人信服的組件化業務系統(注:組件化≠模塊化).關於業務組件是什麼,長什麼樣子,如何實現,又有什麼樣的遠景?
組件介紹這篇文章很詳細的闡述了做者在業務組件的想法。架構
下面是文章的部份內容:app
組件化的業務系統架構觀念聽說已經提出來20多年了,但是至今沒有見到讓人信服的組件化業務系統(注:組件化≠模塊化).關於業務組件是什麼,長什麼樣子,如何實現,又有什麼樣的遠景? 你們也都作了不少思考和討論.
看了社區裏的一些內容,再加上平時跟同事們的交流和討論,對組件化業務系統的實現產生了一點想法。下面我說下個人想法,歡迎你們來拍磚討論。
我以爲目前你們對業務組件有一個共識:就是各個業務組件相對獨立,而且具備可組裝性和可插拔性。
每一個組件的運行僅依賴於平臺或者容器,組件與組件之間不存才直接的耦合關係。同時,組件與組件之間又並不是絕對的獨立。組件通過組裝後能夠與其餘的組件進行業務上的交互。好比銷售組件與財務組件,一筆銷售業務的完成一定會產生一筆或幾筆財務的業務,如×××的開出和一筆新的應收應付或者現金銀行的記帳。又好比,採購與庫存管理,當採購的需求被提出,那麼是否是要先看看倉庫是否是有存貨呢?若是本倉庫沒有,是否容許從其餘倉庫調撥呢?等等等等……,諸如此類的業務場景沒法窮盡,而不一樣行業不一樣規模的用戶他們的業務過程又各自不一樣。
也就是說,組件之間的交互在業務上存在着不可規範和不可窮盡的特色.這是個比較頭疼的問題,暫且記下,稍後再作討論。
另外,個人理解:組件化是介於模塊化與應用系統集成之間的一個概念.關於組件化、模塊化、應用的不一樣,社區中的一篇文章寫得很好。這篇文章的最後,提到了組件化不一樣於模塊化,引文:模塊化開發不一樣於組件開發,模塊化開發只是在邏輯上作了切分,物理上(開發出的系統代碼)一般並無真正意義上的隔離,一切都只是在文檔中。文章中間也提到過組件化與應用集成的不一樣,引文:EAR或者WAR部署的是一個企業應用,請注意EJB規範中明確說:The Enterprise JavaBeans architecture is a architecture for the development and deployment of component-based (distributed) business applications(EJB 2.x和3.x惟一的區別是2.x有distributed),它們有本身的應用域,彼此相互隔離(簡單的看,它們有各自獨立的會話管理)。.NET也是有本身的應用域概念。
根據上面所描述,結合我把組件化放置到模塊化和應用集成之間的定位。組件化應比模塊化更獨立,但比應用集成結合得更加緊密。藉助上面提到的那篇文章分析的,引文:基於應用的部署致使了三個隔離問題:交互(界面)隔離、程序訪問隔離和數據隔離.來看看組件化、模塊化、應用集成的區別,以更清晰的看清楚組件化的位置。。。。。。ide