DotNet軟體開發架構
來源:互聯網
上載者:User
DotNet軟體開發架構 著作權 如有轉載請註明出處。 以我個人的能力,沒有足夠的時間和資源自行開發一套完整的平台。在已有的眾多開源項目中選擇若干優秀的項目進行整合。“站在巨人肩膀上”是牛頓有一句名言.,同樣適合我們的IT行業。我對平台的技術架構的構想,是採用開源的ORM架構做資料持久層, Asp.net沒有合適的Web層架構,就採用Asp.net的Code-behind方式編寫代碼,資料持久層同Web表現層之間的串連採用IOC的容器。1、 開源架構選擇:資料持久層Nhibernate和IbatisNet這兩個都是非常優秀的資料持久層,Nhibernate是優秀的Hibernate的dotNet移植版本,在開源社區具有非常高的人氣,IbatisNet是Data Mapper架構,也是JAVA版的Ibatis的移植版本,在dotnet的開源社區一樣是非常受歡迎的一個工具。Nhibernate用於支援非常好的物件導向的設計的模型,IbatisNet用於支援應用程式的移植(已經存在資料庫,處於生產狀態),這兩個架構對開發人員的要求。這樣就具有更大的彈性。IOC容器Spring.Net和Castle,這是兩個dotnet非常優秀的IOC容器。Spring.Net同樣是Java的Spring 的移植版本,目前的版本是0.6,Castle則是dotnet下出現新的IOC容器,它的功能,成熟度等級方面比Spring.Net好得多,架構中準備採用Castle.最後的平台的技術架構就是Nhibernate/IbatisNet + Castle + ASP.NET2、 架構整合:Web層的Asp.net負責資料輸入輸出, 響應使用者事件,及輸入校正的工作,Web層上如何得到Nhibernate的Session和IbatisNet的SqlMapper?本架構中的DAO,Service以及 Nhibernate的Session和IbatisNet的SqlMapper都是通過Castle進行管理,Web層如何得到Castle IOC容器的執行個體呢,這裡採用HttpModule來處理之,使用用HttpContext.Current.Items來儲存容器執行個體,參看http://www.tobinharris.com/nhibernateasp.aspx。Asp.net頁面通過Service處理商務邏輯,Service負責use case邏輯, domain相關的邏輯委託給domain model去實現. Service通過DAO完成對domain model的持久化工作. Service負責資料庫事務和NHibernate Session/IbatisNet SqlMapper的管理。Domain model負責表示問題域的資料,DAO使用Nhibernate/IbatisNet持久化資料以及查詢. 在實現DAO時, 我們使用了Castle的Nhibernate/IbatisNet DAO Support,極大地簡化了代碼, 很多方法都只用簡單的一行完成。這樣的架構優點很明顯, 層次清晰, 各層的職責也明確, 便於分層設計與開發, 結合mock和Castle的IOC, unit test也是非常容易的. 而且後台(Service, domain model and DAO)的代碼不依賴於Asp.net架構,同樣的代碼可以在Web App也可以在WinForm上面使用,只需更換UI層。 使用的架構工具的連結http://www.castleproject.org/castle/show/HomePagehttp://nhibernate.sourceforge.net/
http://sourceforge.net/projects/ibatisnet/
另外這裡有一篇精彩文章應用系統架構設計