我有一个关于如何在(新)Firefox 扩展和现有 C# 代码之间构建通信的问题。
Firefox 扩展将使用配置数据并生成其他数据,因此需要从某处获取配置数据并将其输出保存在某处。数据由现有 C# 代码生成/使用,因此我需要决定扩展应如何与 C# 代码交互。
一些相关因素:
- 它只运行在windows上,在一个相对受控的企业环境中。
- 我的机器上运行着一个用 C# 构建的 Windows 服务。
- 由于其他原因,将数据存储在本地数据存储(如 sqlite)中会很有用。
- 数据量较小,例如每隔几分钟就有 10kb 的未压缩 xml,而且不是很“健谈”。
- 数据交换在大部分情况下可以是异步的(如果不是完全的话)。
- 与所有项目一样,我的资源有限,因此想要一个相对简单的选择。
- 它不必具有超高性能,但不应增加大量开销。
- 我正计划在 javascript 中构建扩展(尽管如果确实有必要的话可以相信)
我正在考虑的一些选择:
- 使用 XPCOM 到 .NET/COM 桥接器
- 使用 sqlite 数据库:扩展将从其中读取并保存到其中。 C# 代码将在服务中运行,填充数据库,然后处理服务创建的数据。
- 使用 TCP 套接字在扩展和服务之间进行通信。让服务管理本地数据存储。
我对(1)的问题是我认为这会很棘手而且不那么容易。但我可能完全错了?我看到(2)的主要问题是 sqlite 的锁定:一次只有一个进程可以写入数据,因此会出现一些阻塞。但是,通常拥有一个本地数据存储会很好,因此如果性能影响不太大,那么这是一个有吸引力的选择。我不知道(3)是否特别容易或困难......或者对协议采取什么方法:自定义或http。
对这些想法或其他建议有何评论?
更新:我计划用 javascript 而不是 c++ 构建扩展
我个人会用命名管道进行通信而不是套接字。它们的开销非常低,并且在 Windows 上非常可靠。
这在 C++ 和 C# 中非常容易使用。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)