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
Design patterns 在应用程序内使用嵌入式DB(SQLite/SQL Compact)进行消息传递?_Design Patterns_Sqlite - Fatal编程技术网

Design patterns 在应用程序内使用嵌入式DB(SQLite/SQL Compact)进行消息传递?

Design patterns 在应用程序内使用嵌入式DB(SQLite/SQL Compact)进行消息传递?,design-patterns,sqlite,Design Patterns,Sqlite,出于好奇,对于具有相当复杂的模块树的应用程序,像sqlite/SQLCompactEdition这样的东西是否可以很好地用于消息传递 因此,如果我有包含以下数据的模块: \子系统A\SubSystemB\ModuleB\ModuleDataC\SubSystemB\subsystemEMC\ModuleA\ModuleDataX 使用传统的消息传递/路由,您必须通过中间模块才能将消息传递给ModuleB以请求(比如ModuleDataC) 相反,如果我们只是将“\SubsystemA\SubSu

出于好奇,对于具有相当复杂的模块树的应用程序,像sqlite/SQLCompactEdition这样的东西是否可以很好地用于消息传递

因此,如果我有包含以下数据的模块:

\子系统A\SubSystemB\ModuleB\ModuleDataC\SubSystemB\subsystemEMC\ModuleA\ModuleDataX

使用传统的消息传递/路由,您必须通过中间模块才能将消息传递给ModuleB以请求(比如ModuleDataC)

相反,如果我们只是将“\SubsystemA\SubSubSysB\ModuleB\moduledaac”存储在sqlite数据库中,那么获取该数据就像sql查询一样简单,不需要路由和传递数据

以前有人这样做过吗?即使没有,您是否预见到任何问题和性能影响?我现在唯一关心的是自定义类型的传递,例如,如果ModuleDataC是自定义数据结构或指针,我需要某种方法将数据结构存储到DB中或将指针存储到DB中

谢谢

JW

编辑


我没有考虑过的一个使用案例是,当您希望从ModuleA向ModuleB发送一条消息,让ModuleB做一些事情,而不仅仅是获取/设置数据。是否可以使用嵌入式数据库来实现这一点?我认为需要DB的回调,这有多可行?

正如我在评论中所暗示的,这看起来有点像共享的、持久的“白板”,不同的进程可以读取或更新数据

这通常是某些分布式系统的一部分,因此不同的线程、进程、实体可以通过元组空间共享和协调工作

在我看来,在一个程序中使用它有点过分,但是考虑到你显然是把它作为一种方式来对待,它可能非常值得

该模型非常简单,因此您可以使用sqlite或任何其他嵌入式DB创建自己的版本。
有一个解决方案,但它看起来不可嵌入,需要单独的客户端/服务器进程,因此对于您的情况来说,这可能是一个过度的解决方案。

我看不出它不起作用的任何原因,但我认为这可能比它的价值更麻烦。如果每个类都要有一个适配器来访问数据库,那么最好使用已经存在的库添加一个消息传递层。您似乎在暗示,使用DB进行消息传递可能没有消息传递库复杂。。。我的猜测是,情况并非如此。我脑子里有些问题

  • 数据库中存储了多少条消息 DB
  • 邮件是否过期
  • 谁负责这个消息 清理
  • 你如何处理并发事件 更新
我不是Sqlite专家,但我知道它使用回调,所以您可能可以实现您的想法。我想这将是一个有趣的思想实验,但我看不出我想把它用于任何重要的事情


如果我要尝试的话,我会确保将DB函数封装在一些类似消息的类中,这样,如果您发现DB的问题比它的价值更大,您就可以轻松地使用嵌入的DB替换掉一些不同的东西

所以你想用DB来代替单例?(我不是在挖苦或批评……只是想了解你想要实现的目标)。还有,这有点像元组空间吗?()我不想实施任何事情,只是在脑子里玩弄我的想法。这个链接看起来很有趣,我会在下班后再看。详细描述你实际上试图解决的问题可能比提出一个模糊问题的解决方案更有效。从提供的信息来看,似乎中央事件调度器或某些IoC框架可以很好地工作。你的特定环境/语言会很有帮助。