2011-11-02 75 views
1

我正在編寫一個windows服務,它將讀取定期生成的XML文件並更新數據庫。我通常在Web應用程序中看到了3層架構(演示文稿,BL & DAL作爲類庫)。我有以下問題DAL for Windows Service

  1. 我們是否應該遵循相同的桌面應用/ windows服務方法?
  2. 我們是否需要爲DAL類創建實例成員,還是應該是靜態的?
  3. 是否有任何工具可以快速生成映射數據庫的DAL層?

    任何指導將不勝感激。

謝謝。

+1

實體框架 - http://msdn.microsoft.com/en -us/library/bb399572.aspx(我不是NHibernate的粉絲,因爲我發現它是英國媒體報道) – Lloyd

回答

-1

您不必使用LINQ,NHibertate或Entity。 .NET 4.0上運行的很多項目仍使用舊式的ADO.NET。

LINQ to SQL在您的應用程序中不值得引以爲傲。對於實體框架或NHibernate,這些都是ORM API,並且具有高度有利的使用場景,但其學習曲線陡峭,性能低於使用內嵌查詢或存儲過程的效率(但提供了更好的可擴展性和可維護性)。使用這些ORM庫的另一個好處是在大多數情況下您不必編寫SQL,但是如果您有複雜的場景,它可能會給您帶來一些麻煩。 您還可以使用實體框架與.NET 3.5

如果您習慣使用SQL和項目沒有一個大的團隊分配的,沒有什麼錯,在所有使用內聯查詢或存儲過程。 或者,如果你喜歡,你可以使用類似MyBatis的東西,它使用基於提供的XML文件的反射來生成對象。 (我認爲他們有生成工具)。

所以我的意見是,如果你有一個大的數據庫,但不期望複雜的查詢,學習Entity Framework的成本是合理的。 但是,如果你有一個小的數據庫,但複雜的查詢,這是已經寫在某個地方,這將是一個巨大的錯誤使用實體或NHibernate ...

1

n層架構和其他解決方案架構給了我們一些想法,並取決於一些項目條件,只是其中一個條件就是我們的項目。

如果您在網絡應用程序中使用3輪胎,並不意味着它不在其他類型的項目中使用。

作爲第一個問題的答案,我說n層對於任何在數據庫上有事務的項目都是一個好的(不是最好的)解決方案。使用三層(甚至是四層),不用擔心。它是開發Windows服務的常用策略

您的第二個問題:是的,您可以創建它們。使用靜態方法不是基於n層架構生成應用程序的一種方法。

第三個問題:是的。

如果你使用.net framework 2,用NHibernate生成DAL層。如果使用.net framework 3和3.5,則使用LinQ生成DAL圖層。 並且如果您使用.net framework 4,則使用ADO.net實體框架建模器生成DAL層。

+0

LinQ是否爲DAL生成存儲過程和c#代碼?我發現這個http://code.google.com/p/crudgeneratoraspnetwinform/wiki/CRUDGenerator,是一個有用的工具嗎?由於我是C#初學者,我只是想用什麼框架。 – Jeeva

+0

Yes.it的確如此,不過只是使用LinQ或實體框架。這些工具都很完美,如果你沒有使用它們,你卻無法理解它們的力量。 在Visual Studio 2010中使用dot.net framework 4。 –