-1

我正在开发一个使用 LocalDb 数据库的 ASP.NET MVC 应用程序。这个应用程序还需要有一个始终运行的相应 Windows 服务。经过大量研究,LocalDb 似乎不是部署的明智选择,因为需要有两个用户和并发访问以及 24/7 的正常运行时间。

我正在构建的应用程序不会部署到一台服务器上,它将捆绑在安装程序中并分发给多个用户。如果我能证明分发 SQL Server Express 2012 的合理性,这将变得简单得多,但是将安装程序扩大 120MB 并在磁盘上使用 300MB 是我非常努力避免的事情。

数据库的负载将非常轻——Web 应用程序使用 SimpleMembership 提供程序,除了成员表之外,只有少数其他表中永远不会包含任何大量数据。在这个应用程序的早期版本中,我使用了一个 XML 成员资格提供程序,它将用户和角色数据存储在磁盘上,并将其他数据存储在我自己的 XML 配置文件中。一些客户对此有安全顾虑,因此我想将成员资格和配置数据移动到数据库中,以便客户可以将应用程序指向他们自己的 SQL Server,并使用它来实现他们想要的所有安全性。

我还希望 Windows 服务使用 SQL Server Broker 和 SqlDependency 来检测 Web 应用程序在数据库中所做的更改。

SQL Express 之所以出局,是因为它太大了,而且这个应用程序需要在一些嵌入式系统上运行,而我不太可能获得安装它的许可。

LocalDb 可能因为我上面提到的原因而退出了。

SQL Server Compact – 我从未使用过它。我的理解是它在进程内运行——该进程可以成为我的 Windows 服务以便它始终运行吗?我可以与网络应用程序同时访问它吗?SimpleMembership 提供者会使用它吗?知道 SqlDependency 是否可以使用它还是返回轮询?

4

2 回答 2

1

如果你需要一个小型的 sql 数据库,试试这个怎么样。SQLlite 只有几百 KB 并且易于使用。

它有 ac# 端口http://code.google.com/p/csharp-sqlite/

还有很多关于在你的 c# 项目中使用 sql lite 的信息。

有关更多信息,请参阅此链接:http: //www.codeproject.com/Articles/22165/Using-SQLite-in-your-C-Application

SQLite 是否有 .NET/C# 包装器?

我只是用它测试了一下,它非常小,速度快,简单而且 SQL 语法通常是一样的。您不能以相同的方式处理 T-SQL,但正如您所说,您只存储一些简单的数据,您应该尝试一下。

于 2013-01-23T19:02:08.857 回答
0

Windows 服务和 asp.net 都可以在同一台机器上同时访问数据库,是的。SimpleMemberShip 与它一起工作,没有 SqlDependency,但您可以通过使用 rowversion 列和 @@dbts 函数进行轻量级轮询示例,可能与一些系统表查询结合使用

于 2013-01-23T20:09:09.147 回答