2010-08-04 89 views
5

我們即將開始一個新項目。這將是一組網絡應用程序,並提供大量共享組件。它每天將有多達50,000位獨特用戶訪問,並且將是某種管理面板。所有項目都將在asp.net mvc 2中構建,並且它們都將在一個SQL Server數據庫上運行。OR項目選擇新項目

我們一直非常喜歡NHibernate,直到找到ormbattle.net網站,其中NHibernate的性能測試看起來與其他映射器相比非常差。在這個總結中,我發現圖書館以前對我來說是未知的。 BLToolkit看起來很有希望,但有兩個優點和缺點。

BLToolkit對社區的支持很薄弱,很少有例子,我真的沒有聽說有人在一個大項目中使用過它。它也非常輕便,這意味着它不支持多關係,延遲加載和緩存......另一方面,性能非常好,並且它對Linq的支持非常好。

在這種情況下,我選擇這些方式之一之間是:

  1. 不要那麼在乎性能和使用NHibernate的或EF或只是L2SQL(其中一個會更好?),並使用ORMapper它具有更多有用的功能。
  2. 專注於這一偉大的性能,並基於這個BLToolkit構建自己的解決方案,主要使用這個庫作爲一個非常好的基礎。如果我將在MVC中使用動作緩存,可能我不需要緩存。可能我不需要關聯,只要我可以使用連接表達式編寫良好的LINQ查詢。可能我不需要延遲加載,因爲我會仔細構建將從數據庫中獲得的所有我需要的確切方法。

我不是在尋找這種情況下的判決。我所要求的只是一個小小的討論,向我指出一些我沒有考慮過的問題,或者僅僅與我分享一些關於使用BLToolkit以及其他或映射器的經驗。

+0

http://stackoverflow.com/questions/1377236/nhibernate-entity-framework-active-records-or-linq2sql/ – 2010-08-04 10:27:10

+0

剛剛在接受的答案中添加了關於NH3 alpha1中LINQ的註釋。 – 2010-08-26 19:44:16

+0

你開始使用BLToolkit嗎?我也發現這個項目,我鼓勵給它一個機會:) – twk 2010-08-28 13:32:46

回答

3

您可以使用您正在考慮的幾個不同的ORM創建原型,並查看它們是否滿足您的需求?您可以編寫一些一次性的「性能峯值」代碼,並使用Visual Studio中的data generator填充示例數據。

我認爲選擇一個基於相信替代品性能不夠好的ORM是過早的優化 - 除非您已經完成了測試以確認您的懷疑。


關於ormbattle.net,這裏是Ayende's prespective - 他是NHibernate開發人員之一。這是從一段時間以來,我不知道ormbattle.net自那時以來是否發生了變化。

LINQ to SQL不再被積極開發 - 所以如果您想使用來自Microsoft的ORM,EF將是最佳選擇。我個人更喜歡NHibernate到EF,但是EF的當前版本確實有比當前版本的NHibernate更完整的LINQ實現。 NHibernate 3(今年晚些時候)將具有完整的LINQ支持,以及另一種類型安全的API,稱爲QueryOver

+0

NHibernate 3發佈日期已知?現在有一些alpha,beta或其他東西可用嗎?這聽起來像一個很好的選擇,但我沒有太多時間,直到我們開始我們的項目。 – 2010-08-04 08:24:09

+1

NHibernate 3 alpha 1可以在這裏找到:http://sourceforge.net/projects/nhibernate/files/。我認爲最終發佈日期尚未確定。基於這個討論主題,這聽起來像今年秋天,絕對是在年底之前:http://groups.google.com/group/nhusers/browse_thread/thread/d6104226e150a735/da22cbc3556b48b1 – 2010-08-04 08:38:33

+0

好.. ..更多的問題。有沒有手動或任何例子Nhib3 avaible某處? – 2010-08-04 08:48:17

4

BLToolkit在俄語forum上很棒的社區,你可以很容易地用英語提問你的問題,因爲這個社區的大多數成員都知道英語。

+0

不錯的鏈接,謝謝你...你在一些商業\大項目中使用過BLToolkit嗎?你對此有何感想? – 2010-08-04 08:21:52

+3

是的,我已經使用BLToolkit作爲商業產品,我已經使用NHibernate作爲另一個項目,並且這些工具是完全不同的工具。如果你需要堅實的解決方案,你會像使用Nhibernate一樣使用它。一方面,BLToolkit不是一個ORM,它是創建你的DAL的一個很好的工具,它支持映射,請求生成等等,但是你將不得不編寫一些代碼來爲你的需求做出解決方案,你會花一些時間,但是它的工作速度比休眠快得多,並且您對數據流有更多的控制權。 – Mike 2010-08-04 08:39:03

+1

順便說一句,你可以下載完整的BLToolkit代碼,你會發現一堆單元測試和例子。 – Mike 2010-08-04 08:39:59

2

ormbattle.net webstite可能非常錯過領先優勢,因爲不同的ORM被設計爲以不同的方式使用,所以簡單的基準測試並不會告訴您匹配。

您有兩個基本選項。

  • 選擇您的系統和數據庫模式的設計,然後找到一個適合它的數據訪問系統。
  • 或者選擇數據訪問系統並設計數據庫模式以便與之配合。

例如,如果您選擇Nhibernate,您會發現Nhibernate專家將使用給定樣式的數據庫模式(和對象)。複製它們,你會有最小的痛苦。

問題是沒有ORM可以很好地處理所有類型的數據庫模式,並且除非您之前已經編寫了另一個類似的系統,否則您不可能知道所有數據存儲所需的系統開發的很長一段時間。

請記住,如果您發現您的ORM要緩慢進行某些更新,則可以繞過ORM並使用手寫的SQL。