【问题标题】:Deciding on application architecture确定应用程序架构
【发布时间】:2012-05-20 08:23:51
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

  • 您是在问 EF 是否是矫枉过正(在为什么情况下:您为什么这么认为?),或者您是在问如何将应用程序与服务器同步?这两个问题非常不同(后者要复杂得多!)。
  • 是的,我想知道我从 EF 获得了什么?我在编写 Windows 应用程序方面还很陌生,但看起来它提供了很多功能,但不一定对这些简单的应用程序有帮助。同步可能适合另一个单独的问题,但我想知道有哪些技术/api/框架可以做到这一点?

标签: .net architecture


【解决方案1】:

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

引用 CouchDB:

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

您可以阅读《CouchDB:权威指南》一书中hereCouchDb site

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

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

【讨论】:

  • @home 引用“我应该只使用 ADO.net 作为数据库并且查询非常简单吗?我能从 EF 获得什么吗?”。据我了解,作者认为留在 EF/ADO.NET 或不留下。我的回答是否定的,我建议了与作者想要实现的数据库同步相关的替代方案。那么为什么你认为用替代建议和解释的“不”回答不是答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-12
  • 1970-01-01
相关资源
最近更新 更多