在同一台机器上运行的 Firefox 扩展和 C# 代码之间应该使用什么 IPC 方法?

2023-11-27

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

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

一些相关因素:

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

我正在考虑的一些选择:

  1. 使用 XPCOM 到 .NET/COM 桥接器
  2. 使用 sqlite 数据库:扩展将从其中读取并保存到其中。 C# 代码将在服务中运行,填充数据库,然后处理服务创建的数据。
  3. 使用 TCP 套接字在扩展和服务之间进行通信。让服务管理本地数据存储。

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

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

更新:我计划用 javascript 而不是 c++ 构建扩展


我个人会用命名管道进行通信而不是套接字。它们的开销非常低,并且在 Windows 上非常可靠。

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在同一台机器上运行的 Firefox 扩展和 C# 代码之间应该使用什么 IPC 方法? 的相关文章

  • 如何使用鼠标拖动和移动winform

    我知道如何通过添加以下代码来 拖动和移动 winform Protected Overrides Sub WndProc ByRef m As Message If m Msg 163 And ClientRectangle Contain
  • .net MVC 将 MP4 流式传输到 iDevice 问题

    我一直在编写用于提供视频服务的一段代码 但遇到了一些问题 代码如下 public ResumingFileStreamResult GetMP4Video string videoID if User Identity IsAuthenti
  • android sqlite 如果不存在则创建表

    创建新表时遇到一点问题 当我使用 CREATE TABLE 命令时 我的新表按应有的方式形成 但是当我退出活动时 应用程序崩溃 并且我在 logcat 中得到一个表已存在 如果我使用 CREATE TABLE IF NOT EXISTS 则
  • 无法通过 HTTPS 调用 Web 服务

    我正在开发一个 Net 应用程序 它与 Web 服务通信以获取一些数据 Net 应用程序和 Web 服务之间的连接是通过 HTTPS 完成的 当我从 Net 应用程序调用 Web 服务时 我得到以下堆栈跟踪 System Net WebEx
  • C# datagridview 列转入数组

    我正在用 C 构建一个程序 并在其中包含一个 datagridview 组件 datagridview 有固定数量的列 2 我想将其保存到两个单独的数组中 但行数确实发生了变化 我怎么能这样做呢 假设一个名为 dataGridView1 的
  • 日期时间的自定义 JavaScriptConverter?

    我有一个对象 它有一个 DateTime 属性 我想通过 AJAX JSON 将该对象从 ashx 处理程序传递回网页 我不想使用第 3 方控件 当我这样做时 new JavaScriptSerializer Serialize DateT
  • 从事务范围调用 WCF 服务方法

    我有这样的代码 using TransactionScope scope TransactionScopeFactory CreateTransactionScope some methodes calls for which scope
  • TPL 数据流块下游如何获取源生成的数据?

    我正在使用 TPL Dataflow 处理图像 我收到处理请求 从流中读取图像 应用多次转换 然后将生成的图像写入另一个流 Request gt Stream gt Image gt Image gt Stream 为此 我使用块 Buff
  • 使用 System.Security.Cryptography 将 Win32 Crypto API 调用转换为 C#

    我接到一项任务 要删除我们产品的一个 dll 并将其替换为纯 C 的 dll 旧的 DLL 是 NET 2 0 托管 C C CLI 它包装了对 Win32 本机加密 API 的调用 新的 DLL 应公开具有相同名称和方法的新对象 但应使用
  • 如何使用 json.net 在生成的 json 中“内联”属性

    我的一个类中有一个属性 我试图用 json net 序列化它 我想 内联 这意味着 我不想将该属性嵌套到具有属性名称的元素中 但其内容直接位于其父级中 这是一个例子 假设我有以下类结构 public interface ISteeringW
  • 在源代码管理中管理我的数据库

    由于我正在处理一个新的数据库项目 在 VS2008 中 而且我从未从头开始开发数据库 因此我立即开始研究如何在源代码管理 在本例中为 Subversion 中管理数据库 我找到了一些关于SO的信息 包括这篇文章 保持多个环境中的开发数据库同
  • “System.Int32”类型的表达式不能用于返回类型“System.Object”

    我正在尝试制作一个简单的脚本系统 用于打印标签 我过去曾通过反射完成此操作 没有任何问题 但我现在尝试使用 Lambda 函数来完成此操作 以便可以缓存函数以供重用 到目前为止我的代码如下 public static string GetV
  • 登录方式使用GINA定制

    我知道在 GINA 中找到大师并不容易 但我的问题最接近进程间通信 IPC 我用非托管 c 编写了我的自定义 GINA 我在其中包含了一个方法来检查用户尝试的指纹的有效性为了登录 该函数将调用正在运行的系统Windows服务中用C 编写的一
  • C#、Visual Basic.NET 和托管 C++ 之间的字符串文字有何区别?

    我指的是在代码中编写字符串的语法 包括多行字符串和逐字字符串 上下文 我正在开发一个扫描代码的工具 确定令牌何时位于字符串内非常重要 Thanks 这是语言之间的快速细分 托管 C 以与普通 C C 或 C 类似的方式支持字符串文字 也就是
  • 生成的表的行跨度导致额外的单元格

    HTML table border 1 cellspacing 1 width 100 thead tr td class csstextheader width 70px td td class csstextheader width 7
  • 如何嘲笑一切?

    我了解如何模拟接口或虚拟方法调用 但是像 TypeMock 这样的框架可以模拟框架中的所有内容 使用哪些 NET机制来提供此类功能 例如 Typemock Isolator 使用 CLR分析器API http msdn microsoft
  • 如何按字段对列表进行排序

    美好的一天 4 你们大家 我有一个对象列表 我的对象喜欢 Product iPhone Category SmartPhone Product HP Category PC Product HTC Category SmartPhone 我
  • .Net Core appsettings.json 最佳实践 - 覆盖开发设置(或反之亦然)?

    寻找一种关于在 Net Core 中构造 appsettings json 文件的合理方法 是否应该将基本 appsettings json 文件配置为在开发环境中运行 然后基于环境的覆盖 例如 appsettings Production
  • 作为服务运行时未找到 PowerShell 模块

    我有一个项目 我将 Office 365 许可证分配给用户 有一个 Web 项目允许管理员查看可用许可证并为用户选择许可证 在后台 有一项服务每 15 分钟执行一次实际的许可证分配 以及许多其他任务 我们不直接分配许可证的原因是用户可能尚未
  • C#“var”关键字在 VB.NET 中的等价物是什么?

    例如 我如何获得 VB NET静态类型局部变量是static赋值右侧的表达式的类型 像这样 Dim http msdn microsoft com en us library 7ee5a7s1 aspx我的变量 3 你还需要 选项推断 ht

随机推荐

  • 带有 ListView 和按钮的 Android 布局

    好吧 这个特定的布局让我很恼火 并且似乎无法找到一种方法来拥有一个列表视图 在底部有一排按钮 这样列表视图就不会延伸到按钮的顶部 因此按钮总是捕捉到屏幕的底部 这就是我想要的 删除了无效的 ImageShack 链接 看起来应该很容易 但我
  • 在 C# 中功能性地遍历一棵树

    考虑 C 中的以下扩展方法 Traverse IEnumerable
  • 如何修复 ICE57.Per-User 安装

    我们的应用程序在运行时将注册表的一些设置写入 HKCU 配置单元 我想在卸载过程中删除此设置 这是代码
  • Backbone 和 Require 如何添加 Qunit

    我正在使用 Backbone 和 Require js 一切都很好 但是 我想向我的应用程序添加一些单元测试 我决定使用 Qunit js In my main js文件我创建新对象EventsView require config pat
  • 我可以在控件内托管 Windows 窗体吗

    我有一个客户 它是一个具有有线表示逻辑的单实例模式下的 Visual Basic 项目 主窗体包含一个具有多个选项卡页的 TabControl 如果我单击 TabPage 另一个窗体会显示在窗体前面 并调整大小以与 TabPage 具有相同
  • 如何获取Oracle中每个组的最大值? [复制]

    这个问题在这里已经有答案了 我已经找到了解决此问题的一些解决方案 但是它们似乎不适用于 Oracle 我懂了 我想要一个视图只显示每个团队中最年长的人的信息 所以 我的输出应该是这样的 PERSON TEAM AGE Sam 1 23 Mi
  • 获取发送到 click.group() 子命令的参数

    如果我有一个click group 对于多个子命令 有没有办法可以将命令行参数传递给组本身内的这些子命令 我知道你可以通过context 而且我知道我可以使用callback将在命令之前执行的函数 但我不知道是否有比使用更好的方法来执行此操
  • 有没有办法在 Windows 上的链接时重新定义 malloc?

    我想在链接时替换默认的 malloc 以使用自定义 malloc 但是当我尝试在程序中重新定义 malloc 时 出现以下错误 MSVCRT lib MSVCR80 dll error LNK2005 malloc already defi
  • Azure Functions,无法加载文件或程序集

    当使用NuGet协议Azure Functions 中的 NuGet 包 出现以下错误 System Private CoreLib Could not load file or assembly 4 18 2020 8 51 43 AM
  • 根据单元格值数据按路径引用 Excel 工作簿

    我有一个 Excel 工作表 可以从其他关闭的 Excel 工作簿中提取数据 目前 当我列出关闭的工作簿的整个路径时 它工作正常 但我想使用存储在单独单元格中的变量作为路径名的一部分 例如 我正在尝试引用名为的工作簿 工作簿12 10 12
  • 在 joomla 组件中写入多个表?

    我正在尝试创建一个使用多个表的组件 前端 我发现一两个帖子部分回答了这个问题 但没有一个真正回答了这个问题 对于知道如何做的人来说 这一点似乎总是简单明了 但从未真正解释过 或者我错过了正确的帖子 在我的组件中 用户在一个视图中输入需要存储
  • 需要处理 git-archive 中的 git-submodules

    我需要将 git 子模块打包到我创建的 tarball 中git archive 我在1 6 5中看到了git archive不支持 git 子模块 我在网上看到了几个处理这种情况的脚本 但我不确定该选择哪一个 最好 最官方的方法是什么 你
  • 在 C# Windows 服务上重定向 stdout+stderr

    我使用 C 编写了一个 Windows 服务ServiceBase帮手 在执行期间 会调用外部本机 DLL 中的一些过程 令人烦恼的是 这些过程以不受控制的方式写入 stdout 和 或 stderr 因为没有给出该 DLL 的源代码 是否
  • Android Studio:错误代码 1:Gradle:任务“:app:processDebugResources”执行失败

    我想编译一个项目 我得到了Error Gradle Execution failed for task app processDebugResources 这是例外 错误 Gradle 任务 app processDebugResource
  • 如何在javascript中检测浏览器渲染引擎?

    我读过一本名为 Professional Javascript For Web Developers 2nd Edition 的书 其中指出此代码可以检测浏览器渲染引擎
  • 如何控制recyclerView.smoothScrollToPosition(position)的滚动速度?

    我有一个回收器视图 我想要平滑地向下滚动 然后以编程方式向上滚动到它 以向用户显示其中的完整内容 我可以通过以下方式做到这一点 final int height recyclerView getChildAt 0 getHeight rec
  • docker libgomp.so.1 内的 Lightgbm:无法打开共享对象文件

    我在我的 Mac 上安装了 LightGBM 并之前针对不同的项目进行了测试 现在我在 Mac 上安装了 python 3 6 的 docker 中 一旦我添加import lightgbm as lgbm在我的 Flask 应用程序中 我
  • 对象名称“dbo.UserRoles”无效

    我收到此错误 SqlException 0x80131904 Invalid object name dbo UserRoles 但我无法捕获错误所在 我可以从其他表中检索其他数据 但不能从这个表中检索数据 条件是 web config 中
  • Android创建BitmapDescriptor异常

    我正在编写一个可以与谷歌地图和标记配合使用的应用程序 我的任务是在谷歌地图上创建并显示一些标记 标记中有自定义图像和文本 数据正在从服务器加载 每次用户移动谷歌地图相机时我都需要显示新的数据量 所以我使用 android maps util
  • 在同一台机器上运行的 Firefox 扩展和 C# 代码之间应该使用什么 IPC 方法?

    我有一个关于如何在 新 Firefox 扩展和现有 C 代码之间构建通信的问题 Firefox 扩展将使用配置数据并生成其他数据 因此需要从某处获取配置数据并将其输出保存在某处 数据由现有 C 代码生成 使用 因此我需要决定扩展应如何与 C