出于好奇,对于具有相当复杂的模块树的应用程序,sqlite / sql compact edition是否适用于消息传递?
因此,如果我的模块包含如下数据:
\ SubsystemA \ SubSubSysB \ ModuleB \ ModuleDataC,\ SubSystemB \ SubSubSystemC \ ModuleA \ ModuleDataX
使用传统的消息传递/路由,您必须通过中间模块才能将消息传递给ModuleB以请求说ModuleDataC。
如果我们只是在sqlite数据库中存储“\ SubsystemA \ SubSubSysB \ ModuleB \ ModuleDataC”而不是这样做,那么获取该数据就像sql查询一样简单,不需要路由和传递内容。
以前有人这样做过吗?即使你没有,你是否预见到任何问题&性能影响?我现在唯一关心的是传递自定义类型,例如:如果ModuleDataC是自定义数据结构或指针,我需要一些方法将数据结构存储到数据库中或将指针存储到数据库中。
谢谢,
JW
修改
我没有想到的一个用例是当你想从ModuleA向ModuleB发送消息以使ModuleB做某事而不仅仅是获取/设置数据。是否可以使用嵌入式数据库执行此操作?我认为需要来自DB的回调,这有多可行?
答案 0 :(得分:3)
正如我在评论中暗示的那样,这看起来有点像Tuple Spaces的想法,即一种共享的,持久的“白板”,其中不同的进程可以读取或更新数据。
这通常是某个分布式系统的一部分,因此不同的线程,进程,实体可以通过元组空间共享和协调工作。
在我看来,单个程序“内部”使用它有点矫枉过正,但考虑到你显然正在将其视为一种Gedanken Experiment它可能非常值得。
该模型非常简单,因此您可以使用sqlite或任何其他嵌入式数据库创建自己的版本。 有一个SQL-based version which is free,但看起来它不是可嵌入的,需要单独的客户端/服务器进程,因此对你的情况来说可能有点过头了。
答案 1 :(得分:1)
我认为没有任何理由不起作用,但我认为它可能比它的价值更麻烦。如果您要为每个类访问数据库都有适配器,那么您也可以使用已存在的库添加消息传递层。看起来你暗示使用数据库进行消息传递可能不如消息传递库复杂......我的猜测是情况并非如此。有些问题不在我的脑海中,
我不是Sqlite专家,但我知道它使用回调,所以你可能会实现你的想法。我想这将是一个有趣的思想实验,但我看不出想要将它用于任何重要的事情。
如果我要尝试它,我会确保将DB函数包装在类似于类的消息中,这样如果您发现DB比其更麻烦,您可以使用不同的嵌入式数据库轻松换出价值。