【问题标题】:C# Using multiple applications to connect a single database using Entity FrameworkC# 使用多个应用程序使用实体框架连接单个数据库
【发布时间】:2017-08-19 10:34:44
【问题描述】:

我目前正在开发一个 Windows 窗体应用程序,我计划在云设置上运行,该应用程序将计算新数据,在数据库中更新并充当我希望的实时数据馈送 RestFul API 的控制面板使用 ASP.NET MVC 5 Web API 创建。

我想知道将这两个独立的应用程序连接到一个数据库是否可行?我不太可能遇到数据库条目冲突问题,因为每个应用程序都有单独的任务来读取或写入某些表的数据。

如果可行,这是否意味着我每次更改表时都必须更新两个实体框架数据库模型? (不是主要的家务活)。

有没有更好的解决方案?我应该放弃运行 Windows 窗体应用程序来控制公共 API 后端的某些元素的想法吗?

如果有的话,设计这样的东西未来会遇到什么问题?

【问题讨论】:

  • 您能否详细说明一下我计划在云设置上运行的Windows 表单应用程序
  • 我认为主要问题是 - 这两个应用程序真的需要相同的数据吗?此外,如果它们确实使用相同的数据,这两个应用程序是否会对这些数据进行不同的操作,即您可以在 WinForms 应用程序中执行您在 WebAPI 中无法执行的操作吗?反之亦然?
  • 是的,他们需要使用一些相同的数据。我在主帖中说过,每个应用程序都有一个单独的读取/写入数据的任务。我不认为这两个应用程序都需要向同一个表添加新数据的功能,但是一个可能会添加新行,另一个可能会在使用后编辑数据。
  • 我已经发布了答案,请查看

标签: c# .net sql-server asp.net-mvc entity-framework


【解决方案1】:

假设你有一个分层架构,你有很多选择:

  1. 共享您的数据库、DAL 以及业务层
  2. 扩展您的 WEB API 并在您的 WinForms 中使用它
  3. 仅重用 DAL(不是最佳方法,因为业务系统不仅是数据,而且 - 行为 - 驻留在业务层中)
  4. 仅共享数据库 - 这是最糟糕的选择,有很多缺点

查看图片上的选项 1 和 2:

【讨论】:

  • 我想知道您为什么建议统一业务逻辑层?为什么要在同一领域包含任一独特应用程序的方法?这不会使代码混乱,并增加高耦合的风险吗?
  • @MortenBork,根据我的经验,如果您的应用程序不仅仅是简单的 CRUD,而且背后确实有一些复杂的业务逻辑,那么最好使用 DDD 建模。在这种情况下,您的数据应该与您的行为(业务逻辑、验证等)一起存在。例如,想象一个场景,如果客户只购买特定金额的商品,他就可以成为“高级”。您如何在不共享业务逻辑的情况下执行它?你重复你的逻辑吗?
  • @MortenBork,据我记得你说过这两个应用程序的数据重叠。我认为也会有一些重叠的业务逻辑。那应该共享而不是重复。如果您有一组未共享的 API,请随意提取一个额外的层 - 应用程序服务层,其中包含未共享的独特逻辑
  • 好吧,如果根据您使用的应用程序不同,成为高级会员怎么办?如果溢价甚至不是同一个状态怎么办?重复是维护负担之母。顺便说一句,我不是作者,我只是原始问题的海报。
  • 与应用程序相比,如果用户相同,但溢价,在移动应用程序上可能意味着不同的东西。然而用户是相同的,他们的订阅可能是相同的,需要不同的设计。在任何情况下,考虑到 UI 将具有不同的功能,拥有单独的业务层的轻微开销可能只是需要拆分,但我相信我们需要让 OP 指定工作流以便更具体。
【解决方案2】:

创建一个数据访问层,作为一个单独的组件。

像一个 DAL.dll

每个应用程序都有一个逻辑层,处理“无论你做什么”。

现在每一层都使用一种接口层,它将对象从应用程序的任一层转换为 DAL 的对象。

当您现在更改数据库时 - 您只需更新接口层。

(当然,如果您要添加更多功能,则必须更新所有层,但这并没有什么不同。

我建议使用这种方法,因为它会使您的调试任务更加轻松。除非您有大量的通信需求,否则轻微的额外代码开销不会影响性能。

如果您想了解更多细节,我需要任一程序中的类示例以及您的 SQL 表设计。

但是你的方法没有错。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多