1

我正在重新开发一个简单的应用程序,该应用程序现在作为一个面向公众的网站存在,在我们的 DMZ 中使用 SQL Server,这是我们桌面用户的另一个 Access 前端和后端。我还必须为没有网络访问(或互联网访问)的现场工作人员本地安装访问版本。

我正在尝试从头开始开发一个可以完成所有 3 种使用场景的应用程序:

  1. 连接到我们网络的桌面用户
  2. 没有网络连接或互联网的笔记本电脑用户
  3. 公共网页用户

一点关于应用程序。它由文件系统上的 100,000 多个 tiff 图像组成。数据库存储有关图像的元数据以及图像的相对 URL。有图像表、用户表(跟踪谁使用它和权限)和历史表(跟踪谁编辑了图像表上的内容)。该系统仅由大约 3 个将联网的人编辑,它主要是一个查找系统。

我从 winforms 和 EF 4 开始,并意识到这对我的需求来说太过分了。所以问题是:有没有办法支持在运行时本地缓存数据库和文件以“使应用脱机”,然后在回到办公室时同步?(如果有,我希望他们从不选择该选项,安装时不会在他们的 PC 上放置一个空的 SQL 数据库,因为我可以预先在每台笔记本电脑上安装数据库,因为它们只是需要它的人)

我应该只使用 ADO.net 作为数据库并且查询非常简单吗?我能从 EF 获得什么吗?几乎没有关系,不同的业务逻辑等。唯一复杂的查询是使用 AND/OR 的字段值列表等查找文件元数据的搜索。

4

1 回答 1

0

我认为您的场景是一个匹配良好 NoSQL 数据库的数据库。查看 CouchDB 并将其用作具有同步(复制)的存储。

引用 CouchDB:

CouchDB 支持在不同机器上运行的多个数据库副本,并提供一种机制来同步它们的数据。这在偶尔连接的应用程序(例如 PDA)中很有用。在这种情况下,用户可以在断开模式下工作一段时间,并将其数据更改存储在本地。稍后当他连接回他的公司网络时,他可以将他的更改同步回他的公司数据库。

您可以在此处或在CouchDb 网站上阅读“CouchDB:权威指南”一书。

CouchDb 具有 REST API,因此您可以使用任何 REST 客户端(甚至是 WebClient/HttpWeRequest),或者例如RestSharp 库

或者看看Mongo NoSQL数据库的一面。它有一个很酷的特性,叫做 GridFS(分布式文件存储),可以帮助处理大量的二进制数据。并且获得几乎相同但使用 Mongo 复制功能。

于 2012-05-11T19:11:27.190 回答