gpt4 book ai didi

.net - 我应该在同一台机器上运行的 Firefox 扩展和 C# 代码之间使用哪种 IPC 方法?

转载 作者:行者123 更新时间:2023-12-03 16:19:28 24 4
gpt4 key购买 nike

我有一个关于如何在(新)Firefox 扩展和现有 C# 代码之间构建通信的问题。

Firefox 扩展将使用配置数据并生成其他数据,因此需要从某处获取配置数据并将其输出保存在某处。数据由现有的 C# 代码生成/使用,因此我需要决定扩展应如何与 C# 代码交互。

一些相关因素:

  • 它只在 Windows 上运行,在相对受控的公司环境中。
  • 我在机器上运行了一个 Windows 服务,用 C# 构建。
  • 出于其他原因,将数据存储在本地数据存储(如 sqlite)中会很有用。
  • 数据量低,例如每隔几分钟就有 10kb 的未压缩 xml,而且不是很“健谈”。
  • 如果不是完全的话,数据交换大部分可以是异步的。
  • 与所有项目一样,我的资源有限,所以想要一个相对简单的选项。
  • 它不必是超高性能,但不应该增加显着的开销。
  • 我正计划在 javascript 中构建扩展(尽管如果真的有必要,可以另外说服)

  • 我正在考虑的一些选项:
  • 使用 XPCOM 到 .NET/COM 桥
  • 使用 sqlite db:扩展将从中读取并保存到其中。 c# 代码将在服务中运行,填充数据库,然后处理服务创建的数据。
  • 使用 TCP 套接字在扩展和服务之间进行通信。让服务管理本地数据存储。

  • 我对 (1) 的问题是我认为这会很棘手而且不容易。但我可能完全错了吗?我看到(2)的主要问题是sqlite的锁定:一次只有一个进程可以写入数据,所以会有一些阻塞。但是,通常拥有一个本地数据存储会很好,因此如果性能影响不是太大,这是一个有吸引力的选择。我不知道(3)是否会特别容易或困难......或者采用什么方法来处理协议(protocol):自定义或http。

    对这些想法或其他建议有何评论?

    更新:我打算用 javascript 而不是 c++ 构建扩展

    最佳答案

    我会亲自使用named pipes进行通信而不是套接字。它们的开销非常低,并且在 Windows 上非常可靠。

    这在 C++ 和 C# 中非常容易使用。

    关于.net - 我应该在同一台机器上运行的 Firefox 扩展和 C# 代码之间使用哪种 IPC 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1774073/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com