這幾天看了一下MS的CRM產品,感覺其中使用到的開發架構和開發技術都是非常不錯,其中的很多想法非常的有創造性的想法,很多想法我以前從來沒有聽說過,像什麼自訂實體、如何將這些實體與業務外掛程式結合起來、如何與視圖、工作流程等整合起來。感覺想法非常先進。
但我發現其中只是定義了一個實體的一組標準的操作,目前我還沒有看到添加實體的擴充自訂動作,只看到了標準的建立、更新、刪除和選取等操作。這樣的操作如果在實現基本的業務上可能能夠滿足要求,但如果需要開發一個有很多自訂業務操作的實體,我想這種操作能否滿足要求。
同時其中的外掛程式在這裡我想非常的不錯,相當於一個職責鏈和觀查者模式的實現,當進行某一操作時,根據對實體和操作的外掛程式進行調用可以觸發更多的事件的執行,這相當於將整個商務邏輯代碼的AOP實現,這一點非常值得學習。相當於整個實體的業務操作是配置出來的,我想可能在設計時是按以下方式來設計的:
實現一個業務實體操作的基本外掛程式,用於實現資料庫操作和工作流程的整合和其它的一些基本的功能。
再針對於特定實體商務邏輯編寫若干的外掛程式,實現特定的業務。
調用過程中根據註冊外掛程式的順序先執行自訂外掛程式,再調用基本外掛程式完成整個操作。
我想這一過程肯定是一個有點慢的過程,但如果能夠通過相關的資訊,將這一組操作通過Emit之類的技術實現為一個動態建立的類,再來調用這個類,我想就能夠擷取的靈活的業務它高效的運行效率。
同時我想MSCRM解決了開發中的很多個問題包括:業務實體的屬性變化問題、商務邏輯它商務程序的變化問題、視圖的相關問題。這些問題的變化我們通常都需要通過二次開發來解決,很可能需要修改整個項目來解決,但MSCRM在這裡解決得很好,是應當學習和應用的。
但同時我想如果將這個架構和來開發大型的像ERP那樣的項目是否可很,特別是增量的開發。先根據需要開發不同的應用程式,後根據不同企業的不同需要布署不同的應用,如:
CRM:客戶關係管理
PM(Product Management):產品管理
SM (Sale Management):銷售管理
如這三個產品是公司目前的產品,針對於三種不同的使用者,
其中的CRM與PM、SM之中都包括有Product,但其中的CRM之中包括有最簡單的Product而,PM之中包括有產品最詳細的技術資料,那麼,當同時為同一家公司部署這三個產品之時,對於這個Product怎麼樣解決呢,能否相互使用相同的Product呢。或許還需要進行更多的思考。