Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 具有多个数据源的应用程序的设计模式?_.net_Design Patterns - Fatal编程技术网

.net 具有多个数据源的应用程序的设计模式?

.net 具有多个数据源的应用程序的设计模式?,.net,design-patterns,.net,Design Patterns,我目前正在开发需要离线和在线操作的windows窗体应用程序。其思想是,当运行应用程序的设备具有internet连接时,它将从web服务获取数据,但是当没有连接时,它将以本地文件系统中JSON的形式从本地数据源获取数据 我更愿意使用服务和管理器设计模式(3层)。但是,我不确定由谁负责决定要使用的数据源。管理者是否可以访问两种不同的服务,并且每种服务查看不同的源并了解如何与每种服务交互,或者这些服务是否知道如何与这两种数据源交互?我建议对IoC容器使用三层模式,通过这种方式,您可以根据应用程序的状

我目前正在开发需要离线和在线操作的windows窗体应用程序。其思想是,当运行应用程序的设备具有internet连接时,它将从web服务获取数据,但是当没有连接时,它将以本地文件系统中JSON的形式从本地数据源获取数据


我更愿意使用服务和管理器设计模式(3层)。但是,我不确定由谁负责决定要使用的数据源。管理者是否可以访问两种不同的服务,并且每种服务查看不同的源并了解如何与每种服务交互,或者这些服务是否知道如何与这两种数据源交互?

我建议对IoC容器使用三层模式,通过这种方式,您可以根据应用程序的状态注入正确的DAL对象作为应用程序的数据源——如果它处于联机状态,则注入从IDAL接口继承的“OnlineDAL”,否则,注入也从IDAL接口继承的“OfflineDAL”


请记住,每当应用程序打开/关闭时(使用事件侦听器或其他工具),都要更改注入的类。

我建议使用一种服务,根据当前状态将其分派到两个特定实现中的一个,这样您就可以将业务逻辑与持久性的细节分开,但是设计问题非常广泛。谢谢你的建议,我以前没有使用过IoC容器,所以我会仔细阅读它们。我想当你提到DAL时,你指的是我的服务层?我指的是数据访问层-你与数据库/本地数据源交互的层。根据三层模式,我认为这是这一层的标准名称。顺便说一句,你不必自己实现IoC模式,有许多框架可以帮助实现这一点,等等。我目前正在研究Simple Injector。唯一让人困惑的是容器应该放在哪里,因为它需要知道DAL。是否应在根Winform上创建此文件?