2012-03-13 63 views
-1

我有一個SQL Server數據庫,它服務於多個ASP.NET Web應用程序。他們每個人都有自己的SiteID來區分數據。需要一個服務來處理多個連接到1個數據庫

我最近意識到,讓多個應用程序直接訪問一個數據庫並不是一個好習慣,並決定我將實現一個服務來處理所有數據庫連接。

所有的Web應用程序和數據庫都位於同一個Windows 2008服務器上。

我想知道什麼樣的服務最適合此功能。網絡服務或Windows服務?在以前的工作中,他們似乎有一個在服務器上運行的Windows服務,這對於Web服務有什麼優勢?

+2

由於它們是Web應用程序,Web服務對Windows服務有很大的意義。你知道,因爲他們都有「網絡」。 – jrummell 2012-03-13 16:29:18

+0

任何需要的諷刺?我問,因爲我已經看到了在Windows Server 2008上使用Windows服務的非常成功的設置。 – David 2012-03-13 16:31:58

+0

你想完成什麼?如果您只是將Web應用程序移動到另一臺機器,則不需要這兩者。 – Maciej 2012-03-13 16:33:12

回答

0

Windows服務VS Web服務是蘋果VS桔子... Windows服務自身不提供了數據...

因此,這裏有一些選擇:

數據在傳統的訪問代碼

聽起來像這就是你所擁有的。只要這是一個邏輯上分離的層,這可能不是太糟糕。

服務

使用服務具有很多優勢的顧慮/執行這樣的真正分離。您甚至可以使用與您的客戶端應用程序不同的語言/平臺實現您的服務。缺點可能是性能。你很可能將不得不序列化/反序列化數據,並以任何方式分割cpu循環。

接口驅動方法

這是好的,因爲你可以寫在你對接口的應用程序數據訪問。該接口可以通過「傳統」ADO/ORM代碼實現。或者你可以使用Web服務。這具有將UI與數據分開並使自動化單元測試更容易的獨特優勢。

1

儘管有多個應用程序訪問一個數據庫當然可以,但我認爲您的意思是您試圖避免在多個網站中複製所有數據訪問和業務邏輯。換句話說,你寧願有一個集中的服務,你可以一次更新所有的應用程序。

聽起來好像你想要一個WCF服務,它可以讓你運行在IIS下的Web應用程序 - 或者作爲一個自託管的Windows服務。如果你從來沒有做過WCF,那麼有一點學習曲線,但這是值得學習的。

在IIS下的WCF,您可以獲得與運行任何網站相同的好處。應用程序生命週期管理,使用IIS mms插件進行維護,以特定的池標識運行等。

作爲Windows服務,您可以通過Services mms進行管理,而且您必須手動編寫更多的代碼(只需一點點)來處理服務啓動和關閉,當然你不會得到你用IIS做的應用程序生命週期管理。

您選擇哪一個可能取決於您對服務器有多少安全訪問權以及您允許哪些工具運行。如果你有完整的服務器訪問權限,我更喜歡IIS方式,但這完全是主觀的。