我建立一個系統,這將有幾個渠道餵養不同的客戶端(MonoDroid的,MonoTouch的,Asp.Net MVC中,REST API)SOA/WCF解剖系統和服務的界限
我試圖採用一個SOA架構,並試圖通過可達性模式採用持久性(http://www.udidahan.com/2009/06/29/dont-create-aggregate-roots/)
我的問題涉及設計建築。如何最好地將系統拆分爲謹慎的塊以從SOA中受益。
在我的模型中有一個SystemImplementation,它代表了系統iteself的安裝。也是一個賬戶實體。
我最初以爲關於設計這個問題的方法是創建服務:
- SystemImplementationService - 負責管理與實際安裝本身,如品牌,流量日誌等
- 帳戶服務的東西 - 責任用於管理用戶資產(媒體,聯繫人等的網絡)
邏輯上一個新的用戶帳戶的註冊將在AccountService.RegisterAccount
發生在服務可以TA ke關心驗證新帳戶(duped用戶名檢查等),哈希pw等
但是,爲了實現持久性的可達性,我需要將新帳戶添加到SystemImplementation.Accounts
集合爲它保存在SystemImplementation服務自動(使用nhibernate我可以使用lazy = extra來確保當我將新帳戶添加到集合時,它不會自動加載所有帳戶)
爲了實現這種情況,我可能需要創建帳戶AccountService,將未保存的實體傳回給客戶端,然後讓客戶端調用SystemImplementation.AssociateAccountWithSystemImplementation
因此,我不需要調用th e從AccountService的SystemImplementation服務(因爲這樣,糾正我,如果我錯了 - 是不好的做法)
我的問題是 - 我是否分裂系統不正確?如果是這樣,我該如何分解一個系統?是否有任何方法來定義系統應該被拆分爲SOA的方式?是否確定在服務調用WCF服務:
AccountService.RegisterAccount
- >SystemImplementation.AssociateAccountWithSystemImplementation
我很擔心,我要去開建基於一些反模式,這將晚一點趕上我的系統:)
謝謝:)這是一個很好的答案 - 我希望我可以標記多個是正確的 - 感謝 – iwayneo 2010-11-09 10:14:00
如果你喜歡它標記它! – MetalLemon 2010-11-10 06:05:05