我正在开发一个使用 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 是否可以使用它还是返回轮询?