(新しい) Firefox 拡張機能と既存の C# コードとの間の通信を構築する方法について質問があります。
Firefox 拡張機能は構成データを使用し、他のデータを生成するため、どこかから構成データを取得し、その出力をどこかに保存する必要があります。データは既存の C# コードによって生成/消費されるため、拡張機能が C# コードと対話する方法を決定する必要があります。
関連する要因:
- 比較的管理された企業環境で、Windows 上でのみ実行されます。
- C#で構築されたマシンで実行されているWindowsサービスがあります。
- データをローカル データストア (sqlite など) に格納すると、他の理由で役立ちます。
- データの量は少なく、たとえば数分ごとに 10kb の圧縮されていない xml があり、あまり「おしゃべり」ではありません。
- データ交換は、完全ではないにしても、大部分が非同期である可能性があります。
- すべてのプロジェクトと同様に、リソースが限られているため、比較的簡単なオプションが必要です。
- 超高性能である必要はありませんが、大きなオーバーヘッドを追加するべきではありません。
- 私はJavaScriptで拡張機能を構築することを計画しています(ただし、本当に必要な場合は別の方法で確信できます)
私が検討しているいくつかのオプション:
- XPCOM から .NET/COM へのブリッジを使用する
- sqlite db を使用します。拡張機能は、そこから読み取って保存します。C# コードはサービスで実行され、db にデータが入力され、サービスによって作成されたデータが処理されます。
- TCP ソケットを使用して、拡張機能とサービスの間で通信します。サービスにローカル データ ストアを管理させます。
(1) に関する私の問題は、これがトリッキーで、それほど簡単ではないと思うことです。しかし、私は完全に間違っている可能性がありますか?(2) で見られる主な問題は、sqlite のロックです。一度に 1 つのプロセスしかデータを書き込めないため、ブロックが発生します。ただし、一般的にはローカル データストアがあると便利なので、パフォーマンスへの影響がそれほど大きくない場合、これは魅力的なオプションです。(3)が特に簡単か難しいかはわかりません...またはプロトコルにどのようなアプローチをとるべきか:カスタムまたはhttp.
これらのアイデアやその他の提案について何かコメントはありますか?
更新: C++ ではなく JavaScript で拡張機能を構築することを計画していました