2013-01-23 96 views
-1

我正在開發使用LocalDb數據庫的ASP.NET MVC應用程序。此應用程序還需要有一個始終運行的相應Windows服務。經過大量研究,似乎LocalDb不是部署的明智選擇,因爲需要有兩個用戶併發訪問,並且每天24小時不間斷運行。SQL Server輕量級版本

我正在構建的應用程序不會部署到一臺服務器,它將被捆綁在一個安裝程序中並分發給多個用戶。如果我可以證明分發SQL Server Express 2012的合理性,那麼我會更簡單一些,但是將安裝程序燒掉120MB並在磁盤上使用300MB是我努力避免的。

數據庫的負載很輕 - 網絡應用程序使用SimpleMembership提供程序,除了成員表之外,其他表中只有少數其他表不會有任何大量數據。在此應用程序的以前版本中,我使用了一個XML成員資格提供程序,它將用戶和角色數據存儲在磁盤上,其他數據存儲在我自己的XML配置文件中。有些客戶對此有安全顧慮,所以我想將會員資格和配置數據配置到數據庫中,以便客戶可以將應用程序指向他們自己的SQL Server,並使用它來執行所需的所有安全性。

我還希望Windows服務使用SQL Server Broker和SqlDependency檢測Web應用程序在數據庫中所做的更改。

SQL Express不在了,因爲它太大了,這個應用程序需要繼續使用一些我不太可能獲得許可的嵌入式系統。

LocalDb可能是因爲我上面提到的原因。

SQL Server Compact - 我從來沒有使用它。我的理解是,它在進程中運行 - 該進程是否可以作爲我的Windows服務,以便它始終運行?我可以與網絡應用同時訪問嗎? SimpleMembership供應商會使用它嗎?任何想法,如果SqlDependency與它合作還是回到投票?

+0

討厭這麼做,bu投票結束 - 這個是一個購物問題。 – TomTom

+0

「我正在構建的應用程序不會部署到一臺服務器,它將被捆綁在一個安裝程序中並分發給多個用戶。」那麼每個用戶在自己的設備上都有一個完整的堆棧?即每個用戶正在使用自己的不同數據庫?「併發訪問和全天候運行時間」如果多個用戶各自擁有單獨的服務/數據庫,多個用戶如何同時訪問它?我認爲你的部署/架構有點不清楚。 – AaronLS

+0

沒錯。沒有什麼不清楚的。我公司向每個客戶銷售硬件 - 多種設備。每個客戶(公司)都將在其網絡上擁有自己的副本,以管理他們自己的設備。 – Rick242

回答

0

Windows服務和asp.net都可以在同一臺機器上同時訪問數據庫,是的。 SimpleMemberShip適用於它,沒有SqlDependency,但你可以通過使用rowversion列和@@ dbts函數(可能結合一些系統表查詢)做輕量級輪詢fir例子

+0

太棒了。感謝您的提示。 – Rick242

1

如果你需要一個小型的sql數據庫,那麼試試這個吧。 SQLlite只有幾百千字節,易於使用。

有一個c#端口http://code.google.com/p/csharp-sqlite/

關於在你的c#項目中使用sql lite的許多信息。

看到這個鏈接,瞭解更多的相關信息: http://www.codeproject.com/Articles/22165/Using-SQLite-in-your-C-Application

Is there a .NET/C# wrapper for SQLite?

我剛剛測試了一下它,它非常小,速度快,簡單的SQL語法往往是相同的。你不能以同樣的方式處理T-SQL,但正如你所說的,你只是存儲一些簡單的數據,你應該試試看。