【问题标题】:Design patterns for applications with multiple data sources?具有多个数据源的应用程序的设计模式?
【发布时间】:2017-03-27 10:07:17
【问题描述】:

我目前正在开发需要离线和在线操作的 Windows 窗体应用程序。这个想法是,当运行应用程序的设备有互联网连接时,它会从 Web 服务获取数据,但是当没有连接时,它会从本地文件系统中 JSON 格式的本地数据源获取数据。

我更喜欢使用服务和管理器设计模式(3 层)。但是,我不确定由哪个负责决定要使用的数据源。管理人员应该可以访问两个不同的服务并且每个服务查看不同的源并了解如何与每个服务交互,还是服务应该知道如何与两个数据源交互?

【问题讨论】:

  • 我会建议一种服务根据当前状态分派到两个特定实现之一,这样您就可以将业务逻辑与持久性的细节分开,但是对于 SO,设计问题非常广泛.

标签: .net design-patterns


【解决方案1】:

我建议将 3 层模式与 IoC 容器一起使用,这样您就可以根据应用程序的状态注入正确的 DAL 对象作为应用程序的数据源 - 如果它在线,则注入一个“ OnlineDAL”继承自IDAL接口,否则注入同样继承自IDAL接口的“OfflineDAL”。

记得在应用开启/关闭时更改注入的类(使用事件监听器或其他东西)

【讨论】:

  • 感谢您的建议,我之前没有使用过 IoC 容器,所以我会仔细阅读它们。
  • 我认为当您提到 DAL 时,您指的是我的服务层?
  • 我的意思是数据访问层——您与数据库/本地数据源交互的层。我认为这是根据 3 层模式的这一层的标准名称。
  • 顺便说一句,你不必自己实现 IoC 模式,有很多框架可以帮助实现这一点,例如 Ninject 等。
  • 我目前正在研究 Simple Injector。唯一令人困惑的是容器应该放在哪里,因为它需要知道 DAL。这应该在根 Winform 中创建吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-01-14
  • 2016-03-17
  • 1970-01-01
  • 2018-01-28
  • 1970-01-01
  • 1970-01-01
  • 2013-03-24
相关资源
最近更新 更多