2010-10-30 32 views
2

場景:爲學習目的創建應用程序,並試圖使其與數據庫無關。獨立DAL設計 - 特定和通用

我已經看了很多啤酒屋架構,其中每個數據庫都有自己的dal,一個SqlCommands和DataReaders等的混合物。我沒有一個確定的對或錯,但通常在維護,速度等方面記住.net應用程序的體系結構方面對我來說是相當新穎的,你會傾向於像滾動啤酒屋一樣滾動自己的特定類,或者使用類似dbProviderFactory的方法,其中很多功能已經存在?

有什麼利弊/使用事先

感謝System.Data.Common通用類,如的DbCommand,DbDataReader,反對特定的SqlCommand,SqlDataReader對象類等缺點。

+0

數據庫獨立性被高估。但是,如果你堅持這一點,你可以與NHibernate密切合作。 – jason 2010-10-30 17:23:42

回答

1

據我所知,直接使用DbDataReader更快。但是當你想修改你的用戶界面的時候它是不可擴展的。 (例如讓您的Winforms和Webforms項目使用相同的DAL)。

在我的觀點如果你想要更多的靈活性,你可能會失去表現。關鍵是你(作爲開發者)負責平衡性能與複雜性/可擴展性。例如,假設你正在爲一家公司設計一個winforms應用程序。您確定公司不會更改其數據提供者(例如從SQL Server到Oracle)。那麼就沒有必要設計你的程序來連接到不同的數據提供者。正如他們所說:KISS。 (Keep It Simple Stupid!; p)

+0

感謝您的快速回答。我完全同意更多的靈活性=更少的性能和更大的複雜性。參考我的問題的前半部分,對於需要切換其數據庫提供程序的中小型應用程序,您是否需要特定的提供程序實現或DBProviderFactory? – gdp 2010-10-30 17:06:36

+0

@geepie:這取決於。但一般來說,我會去DbProviderFactory,因爲它需要較少的工作。閱讀更多在http://forums.asp.net/p/1605716/4096890.aspx – Kamyar 2010-10-30 17:17:21

+0

非常感謝您的幫助! – gdp 2010-10-30 17:33:34