關于ASP.NET數據持久化方案的思考

openkk 12年前發布 | 54K 次閱讀 ASP.NET .NET開發

 基本要求:

  1. 為自動生成單個數據表基本操作的用戶界面提供必需的支持;
  2. 為自動生成維護單個數據表基本操作所需的SQL語句提供必需的支持;

    其它要求:
  3. 為數據輸入框自動提供對話框,便于用戶從已有項中選擇數據錄入;
  4. 為數據輸入框保留最近輸入的若干項數據,便于用戶快速錄入;
  5. 為數據輸入框提供在線幫助,便于用戶了解各數據輸入框的作用、示例等;
  6. 數據搜索頁面允許用戶可以將當前的搜索方案(條件設置、排序設置等)永久存儲以備以后快速調用;
  7. 數據搜索頁面可以自動記錄用戶最近使用過的搜索方案,并使用戶能快速調出這些搜索方案執行搜索;

    基本任務:
  8. 給出滿足基本要求的設計方案;
  9. 對設計方案的簡單性、系統性能、適應范圍等因素進行分析;

    其他任務:
  10. 針對實現“其他要求”中要求,設計更合理的數據持久化方案
  11. 分析新方案是如何為實現相應要求提供支持的;
  12. 分析實現相應要求的難點及解決方法;
  13. 以ASP.net環境為支撐,分析實現相應要求應使用的技術和方式;
    </span>

    幾種.NET平臺數據持久化框架介紹

    在.NET平臺下,關于數據持久層框架非常多,本文主要對如下幾種做簡要的介紹并推薦一些學習的資源:

    1.NHibernate

    2.NBear

    3.Castle ActiveRecord

    4.iBATIS.NET

    5.DAAB

    附加介紹:DLinq

     

    一.NHibernate

    提起 NHibernate,相信大家都不陌生,NHibernate來源于非常優秀的基于Java的Hibernate關系型持久化工具,它從數據庫底層來持久化.Net對象到關系型數據庫,NHibernate為我們完成這一切,而不用自己寫SQL語句去操作數據庫對象,所寫的代碼僅僅和對象關聯,NHibernat自動產生SQL語句,并確保對象提交到正確的表和字段中去.大量減少開發時人工使用SQL和ADO.NET處理數據的時間. NHibernate可以幫助消除或者包裝那些針對特定數據庫的SQL代碼,并且把結果集從表格的表示形式轉換到一系列的對象去。NHibernate采用XML文件配置的方式,每一個實體類都會對應一個映射文件,如下面的例子:

    官方主頁:http://www.nhibernate.org/

    學習資源

    園子里首推DDL的Blog:http://www.cnblogs.com/renrenqq/,有NHibernate文檔的中文翻譯以及DLL寫的一些非常優秀的NHibernate文章。

    大名鼎鼎的張老三:http://blog.csdn.net/billy_zh/category/22383.aspx

    Aero的Nhibernate學習手記系列:http://www.cnblogs.com/chwkai/category/32514.html

    無心之柳的Blog也非常值得推薦:http://www.cnblogs.com/9527/

    博客園O/R Mapping團隊:http://www.cnblogs.com/team/ORMapping.html

     

    二.NBear

    園子里Teddy開發的NBear大家都非常熟悉,現在已經發布了3.0正式版。NBear包含的組件不僅僅是數據持久層,還包含了IOC,分布式組件和Web組件。看一下Teddy對于NBear的介紹:

    NBear的核心包括一個泛型、強類型的的ORM數據持久化接口、一組相關的Entity相關組件、高性能分布式組件、Web組件,因此:

    1、 NBear最適合開發各類基于ASP.NET 2.0,對性能要求較高的Web程序。NBear.Web組件提供了許多加速Web開發的組件,將使您基于標準 ASP.NET方式的開發效率大大提高;同時,簡單易用、性能突出的泛型持久化支持,則將使您能夠將更多注意力集中到業務開發,同時也不會有傳統ORM持久化框架的性能問題和繁瑣配置需要(NBear幾乎不需手動配置,性能則接近DAAB)。

    2、基于MQ和.Net Remoting的高性能分布式組件,將使您開發和維護分布式程序更加容易。一個基于NBear.IoC模塊的開發的應用程序甚至無需重新編譯就能部屬為真正的負載均衡的分布式程序。

    3、對于桌面應用程序,NBear同樣是一個幾乎沒有什么學習曲線(多少人會為寫一個小小的日歷程序而仔細研究透徹Hibernate的參考手冊?)、實用高效的數據持久化方案。

    4、隨著NBearV3帶來的全面的ORM支持、更詳細的文檔和教程,和全面的代碼生成工具,NBear也已經可以被用于企業級程序開發。

    官方首頁:http://teddyma.cnblogs.com/articles/Ilungasoft_Framework.html

    學習資源

    學習資源當然首推Teddy的個人Blog:http://www.cnblogs.com/teddyma/

    博客園NB團隊:http://nbteam.cnblogs.com/

     

    三.Castle ActiveRecord

    ActiveRecord是Castle中的一個子項目,現在的版本是RC1。它同樣是一個非常優秀的持久層框架,在底層封裝了NHibernate,改用Attribute來代替配置文件,這樣就不用再像NHibernate那樣去編寫復雜的配置文件。

    官方主頁:http://www.castleproject.org

    學習資源

    官方文檔:http://www.castleproject.org/activerecord/documentation/v1rc1/index.html

    葉子的家:http://wj.cnblogs.com/

    TerryLee的Castle開發系列:

    http://terrylee.cnblogs.com/archive/2006/04/28/castl_ioc_article.html

    Castle項目成員之一ayende的Blog:http://www.ayende.com/Blog/

     

    四.iBATIS.NET

    iBATIS.NET 分為DataMapper和DataAccess兩部分,應該說DataMapper是這個框架的核心,DataMapper使用XML文件來實現從實體到SQL statements的映射,學習起來非常簡單,是用DataMapper后,我們可以自由的使用SQL語句或者存儲過程;DataAccess允許我們通過一個簡單的接口來操作數據,而不必了解底層實現的細節。

    官方主頁:http://ibatis.apache.org/
    學習資源

    官方文檔:http://opensource.atlassian.com/confluence/oss/display/IBATIS/Quick+Start+Guide

    善友的iBATIS.NET開發指南系列:http://www.cnblogs.com/shanyou/archive/2006/04/29/388610.html


    五.DAAB

    DAAB 是微軟Enterprise Library中的一個應用程序塊,能夠幫助我們實現通用的數據訪問,所以也把它列在這里介紹一下。DAAB使應用程序中的數據訪問在不知道具體的數據庫系統的情況下進行,相信很多朋友對DAAB都很熟性并且已經在項目中使用,就不多介紹了,看一個簡單的代碼片斷:

    官方主頁:http://msdn.microsoft.com/practices/

    學習資源

    企業的幫助文檔和Hands On Lab

    TerryLee的Enterprise Library系列:http://www.cnblogs.com/Terrylee/archive/2006/08/01/Enterprise_Library.html

     

    附加介紹:DLinq

    DLinq 雖然不能算是開源框架,但是說到數據持久,還是提一下比較好,DLinq是微軟下一代數據庫集成查詢語言,在這之前微軟曾經嘗試過 ObjectSpace,最后是不了了之。DLinq實現的方式有點類似于前面說過的ActiveRecord,不支持使用外部的XML配置文件,而是使用了Attribute的方式,如下代碼片斷所示:

    官方主頁:http://msdn.microsoft.com/netframework/future/linq/

    學習資源

    下載LINQ May CTP版:http://msdn.microsoft.com/data/ref/linq/

    ScottGu的Blog:http://weblogs.asp.net/scottgu/default.aspx

     

    最后值得一提的是,微軟又推出個Ado.net vNext,使用映射文件來配置,更加類似于NHibernate。關于持久層框架,還有很多,這里就不再介紹了,如Grove等。

    轉自:http://blog.csdn.net/jpr1990/article/details/7295619
 本文由用戶 openkk 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!