决定应用程序架构

时间:2012-05-11 18:06:47

标签: .net architecture

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

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

  1. 桌面用户已连接到我们的网络
  2. 没有网络连接或互联网的笔记本电脑用户
  3. 公共网页用户
  4. 关于应用程序的一点点。它由文件系统上的100,000多个tiff图像组成。数据库存储有关图像的元数据以及图像的相对URL。有图像表,用户表(跟踪谁使用它和权限)和历史表(跟踪谁在图像表上编辑了什么)。该系统仅由约3人进行网络连接编辑,主要是查找系统。

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

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

1 个答案:

答案 0 :(得分:0)

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

引用CouchDB:

  

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

您可以在“CouchDB:The Definitive Guide”hereCouchDb site上阅读。

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

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