2

我计划开发一个 Windows 窗体应用程序(或可能是 WPF),它可以安装/分发在一个网络上的多台计算机上。

这些应用程序将访问它们之间的一个 SQL 数据库。

这种解决方案的典型方法是什么?

以下是我到目前为止提出的内容:

  • 所有人都在访问 Web 托管的 SQL 数据库
  • 每次安装都附带安装数据库的选项(只有第一个需要这个),安装为用户提供了数据库的 IP,然后网络上的所有其他应用程序都可以引用这个数据库

我不是在征求意见,因为我知道这违反了 SO 规则,我在问实现这一目标的最佳方法是什么。

4

3 回答 3

4

考虑在您的网络中托管的 Web 服务来执行所有数据库访问(调用)。这真正将您的数据库与客户端分开。客户端的 app.config 将保存服务的 url。

于 2012-08-20T11:51:53.213 回答
1

“网络托管”数据库不是一个好主意。如果您的应用程序将在局域网内的一组计算机上运行,​​那么您可以使用的最佳方法是在该网络内设置 SQL Sever。

于 2012-08-20T11:41:23.310 回答
1

通常,当多个客户端需要访问同一个数据库时,网络中有一个专用的数据库服务器将托管数据库。这将是唯一托管数据库的地方;客户没有自己的副本。

旁注:在上面,我没有考虑数据库分布在多台服务器上的情况。这通常仅在数据库变得非常大或高可用性非常重要时才需要。在这种情况下,一个数据库可能会在不同地理位置的不同数据库服务器上完全复制,或者可以使用一种称为分片的技术将其拆分为更小的数据库,每个数据库只有部分数据。(我认为分发数据库还有其他原因或技术,但如前所述,我们暂时不考虑这些。)

每个客户都有自己的数据库副本听起来是个坏主意,因为您必须开始考虑以下问题:

  • 是否需要定期同步/合并各个副本,以便在其他客户端下线时每个客户端都有完整的数据;

  • 当不同的数据库包含相互矛盾的信息时会发生什么;

  • 如何保护驻留在数据库中的敏感数据,例如用户密码。这一直是个问题,但是当每个客户端都可以直接访问本地数据库文件时就变得更加困难了;在中央数据库服务器上保护此类数据更容易,例如通过将其“隐藏”在服务外观后面。

因此,将您的数据库放在中央数据库服务器上,并让您的客户端连接到它;直接到数据库,或者通过(可能是安全的)SOAP/REST 服务。

于 2012-08-20T13:14:53.030 回答