1

我正在开发一个 VB.Net 应用程序。该应用程序可能在 LAN 上运行。将使用 MS Access 作为后端。我开发了许多单用户应用程序,但不知道多用户、局域网、管理数据库等。如何在局域网上将程序制作为多用户。数据将同时被访问。如何管理这样的事情。请给我一些帮助和指导。

谢谢

4

2 回答 2

5

您的 VB 应用程序不关心有多少人运行它。

您使用 MS Access 的数据库在处理多个用户时存在一些严重问题。如果可以的话,远离它。SQL Server 有一个名为 SQL Express 的免费版本。如果您只计划 2 人,您可能会暂时使用 Access,但要准备好支持它。

这就是所有简单的事情,现在您必须考虑如何处理尝试访问和更新相同数据的多个用户(并发)。

想象一下,您是查看员工记录 1 的用户,其他人也是如此。您更改生日并保存。另一个用户更改他们的主管并保存。你怎么知道有什么变化?如果事情发生了变化,你会怎么做?这些都是我无法为你解答的问题,你必须根据你的情况来决定。

有两种主要的并发类型,乐观和悲观。有关它们的详细解释和讨论,请参阅此链接:optimistic-vs-pessimistic-locking

您可以逐表查看。

  1. 如果一个表永远不会更新,你不必担心并发性
  2. 如果表很少更新,例如状态表,您可以决定是否值得为添加并发性付出额外的努力。
  3. 其他一切,几乎都应该具有某种类型的并发性。

现在,百万美元的问题,如何?

你会发现处理并发的方法和彩虹中的颜色一样多。以下是我喜欢的一些:

  1. 每次保存时增加的简单数字。小而容易。
  2. DateTime stamp - 只要您不希望有 2 个人在同一秒内保存相同的记录,这很容易。(我个人不喜欢它自己)
  3. 用户名 - 很简单,通过知道谁最后插入/编辑记录但不处理我经常看到的问题,可以进行一些审核。想象与上面相同的情况,但您有 2 个记录 1 实例。现在您再次更改数据,也许是主管,当您保存时,您会用第二次保存的更改覆盖第一次保存的更改。
  4. Guid - VB 可以创建 guid,SQL Server 可以创建 guid,Access 也可以。它是独一无二的,最重要的是,您可以在客户端创建它,这样您就不必在保存记录后重新查询数据库以获得刷新的记录。
  5. 这些的组合。我自己喜欢2和3。提供小型审核,并且对用户来说是唯一的。

如果您使用DataAdapter,默认情况下,MS 将假定并发检查意味着比较每个字段以确保它没有更改。这可行,但完全不可扩展,不应该这样做。

所有这一切都取决于您的应用程序的大小以及您如何看待它的使用方式。在做出决定之前,一定要做更多的研究。

于 2013-10-17T21:38:30.330 回答
1

这里有很多解决方案。

如果我可以建议一个激进的替代方案,您是否考虑过将在用户计算机上运行的客户端与服务器组件(通过 Web 服务)配对?更简单的替代方法是让客户端通过网络直接与 SQL Server(或其他数据库)实例对话?*

*我不喜欢让客户端应用程序直接与数据库对话。这将意味着将来的维护头痛,但我将其包括在内是为了给你选择

.

我通过谷歌找到了这个随机的例子,所以 YMMV。

于 2013-10-17T21:34:44.380 回答