Windows DNA 之二 業務邏輯層

Windows DNA中最核心也是最基礎的就是對於業務邏輯層設計提供的框架性指導,而COM則是框架性指導的核心概念。COM技術由來已久,它是基於組件的設計思想在Microsoft的技術產物。它促進基於組件的開發和麪向對象的程序設計,它促進代碼在二進制層面上的重用,它也爲COM組件之間的相互通信提供了必要的機制。如果你希望對COM技術有一個全面的瞭解,有很多書可供參考,如COM本質論、COM技術內幕、ATL技術內幕等。

Windows DNA的目標是爲網絡應用系統提供框架性的指導。提到網絡我們必然會想到分佈式處理。如何讓本地運行的進程內或進程外COM組件能夠被遠程調用,這是Windows DNA所要解決的問題。Microsoft的解決之道就是DCOM,即分佈式的COM。DCOM是基於RPC的,它的作用就是將客戶端的方法調用序列化然後傳遞到服務端,如果有返回值服務端將調用結果序列化返回給客戶端。但是我們知道網絡應用系統的一般問題包括併發、事務、安全等,Microsoft的工作就是讓他們的開發者更加地關注業務而不是技術。顯而易見DCOM無法做到這一點,它做的只是模仿本地調用來實現遠程調用,僅此而已,而且最初的DCOM只有進程外的COM組件(.exe)纔可以實現遠程調用。

那麼Microsoft需要一種機制來實現他們的目標。這就是COM+。我們可以認爲COM+是一組服務,它不但實現了進程內組件的遠程調用,而且附加了併發、事務、安全、異步調用等服務。如果你編寫過COM+組件你就能體會到Microsoft在這個方面做了很多工作,這樣你纔可能在你編寫的COM+對象中訪問到事務上下文、安全上下文、構建參數,同時你無需爲程序的併發做太多的工作。你所要做的就是考慮清楚你的COM+對象需要什麼的事務支持,需要什麼樣的安全策略,需要什麼可配置性的參數等等,還需要注意的一點是你的COM+組件最好要是無狀態的,因爲windows DNA要求你的體系結構是可伸縮的,而可伸縮的體系結構的一個最大特點就是無狀態,這樣纔可能在實現系統的橫向可伸縮。對於COM+組件的安裝和部署,Microsoft也做了很多工作。

上面有提到COM+是一組服務的集合,這其中就包括隊列服務和分佈式事務處理。如果將你的COM+對象標記爲可隊列化的,那麼對於COM+對象的每次調用都會放到一個特定的windows隊列中,通過MSMQ服務實現可靠的遠程方法調用。如果將你的的COM+對象標記爲支持事務或請求新事務等,則在你的COM+對象中你可以獲得事務上下文,並實現事務的操作,如放棄事務、提交事務等,底層的COM+則通過MTS、資源處理器等部件來實現兩階段事務處理,從而保障的你的業務得到有效而正確地處理。

總而言之,當考慮業務邏輯層設計的時候,優先考慮COM+技術,考慮業務邏輯需要什麼樣的事務支持,需要什麼樣的安全策略,而且還要讓你的COM+對象可配置,並通過無狀態邏輯來實現業務層的橫向可伸縮。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章