Какой метод IPC мне следует использовать между расширением Firefox и кодом C #, работающим на одной машине?

У меня есть вопрос о том, как структурировать связь между (новым) расширением Firefox и существующим кодом C #.

Расширение Firefox будет использовать данные конфигурации и создавать другие данные, поэтому необходимо получить данные конфигурации откуда-то и сохранить их ».вывод где-то. Данные создаются / потребляются существующим кодом C #, поэтому мне нужно решить, как расширение должно взаимодействовать с кодом C #.

Некоторые подходящие факторы:

Это'Работает только на Windows, в относительно контролируемой корпоративной среде.У меня на компьютере работает служба Windows, встроенная в C #.Хранение данных в локальном хранилище данных (например, sqlite) было бы полезно по другим причинам.Объем данных низкий, например, 10 КБ несжатого xml каждые несколько минут, и неточеньболтливый.Обмен данными может быть асинхронным по большей части, если не полностью.Как и во всех проектах, у меня ограниченные ресурсы, поэтому хочу вариант, которыйотносительно легко.Это нене должно быть сверхвысокой производительности, но не должнот добавить значительные накладные расходы. Яя планирую построить расширение в javascript (хотя в случае необходимости можно было бы убедиться в обратном)

Некоторые варианты ям с учетом:

использовать XPCOM для моста .NET / COMиспользуйте базу данных sqlite: расширение будет считывать и сохранять в нем. Код c # будет выполняться в службе, заполняя базу данных, а затем обрабатывая данные, созданные службой.используйте сокеты TCP для связи между расширением и сервисом. Позвольте службе управлять локальным хранилищем данных.

Моя проблема с (1), я думаю, это будет сложно и не так просто. Но я могу быть совершенно не прав? Основная проблема, которую я вижу в (2), заключается в блокировке sqlite: только один процесс может одновременно записывать данные, поэтомубудет некоторая блокировка. Однако, как правило, было бы неплохо иметь локальное хранилище данных, так что это привлекательный вариант, если влияние на производительность неСлишком здорово. Я неНе знаю, будет ли (3) особенно легко или сложно ... или какой подход использовать для протокола: что-то нестандартное или http.

Любые комментарии по этим идеям или другие предложения?

ОБНОВЛЕНИЕ: я планировал создать расширение в javascript, а не в c ++

Ответы на вопрос(4)

Ваш ответ на вопрос