Qual método IPC devo usar entre a extensão do Firefox e o código C # em execução na mesma máquina?

Eu tenho uma pergunta sobre como estruturar a comunicação entre uma (nova) extensão do Firefox e código C # existente.

A extensão do firefox usará dados de configuração e produzirá outros dados, portanto, precisa obter os dados de configuração de algum lugar e salvar sua saída em algum lugar. Os dados são produzidos / consumidos pelo código C # existente, portanto, preciso decidir como a extensão deve interagir com o código C #.

Alguns fatores pertinentes:

Está sendo executado apenas no Windows, em um ambiente corporativo relativamente controlado.Eu tenho um serviço do windows em execução na máquina, construído em c #.Armazenar os dados em um armazenamento de dados local (como o sqlite) seria útil por outros motivos.O volume de dados é baixo, por ex. 10kb de xml não comprimido a cada poucos minutos, e não é muito tagarela.A troca de dados pode ser assíncrona na maior parte, se não completamente.Como em todos os projetos, tenho recursos limitados, por isso quero uma opção relativamente fácil.Não precisa ser um desempenho ultra-alto, mas não deve adicionar uma sobrecarga significativa.Estou planejando construir a extensão em javascript (embora possa ser convencido do contrário, se for realmente necessário)

Algumas opções que estou considerando:

use uma ponte XPCOM para .NET / COMuse um banco de dados sqlite: a extensão seria lida e salva nela. O código c # seria executado no serviço, preenchendo o banco de dados e processando os dados criados pelo serviço.use soquetes TCP para se comunicar entre a extensão e o serviço. Deixe o serviço gerenciar um armazenamento de dados local.

Meu problema com (1) é que eu acho que isso vai ser complicado e não tão fácil. Mas eu posso estar completamente errado? O principal problema que eu vejo com (2) é o bloqueio do sqlite: apenas um único processo pode gravar dados de uma vez para que haja algum bloqueio. No entanto, seria bom geralmente ter um armazenamento de dados local, portanto, essa é uma opção atraente se o impacto no desempenho não for muito grande. Não sei se (3) seria particularmente fácil ou difícil ... ou qual abordagem usar no protocolo: algo personalizado ou http.

Quaisquer comentários sobre essas idéias ou outras sugestões?

ATUALIZAÇÃO: Eu estava planejando construir a extensão em javascript em vez de c ++

questionAnswers(4)

yourAnswerToTheQuestion