O que eu preciso fazer para implementar um "fora do proc" COM server em C#?
Pergunta
Estou tentando implementar um "fora do proc" COM servidor escrito em C#.Como eu faço isso?
Eu preciso de código C# para ser "fora do proc" meu principal aplicativo de C++, porque eu não posso carregar o .Tempo de execução NET no meu processo principal espaço
POR quê?:
Meu código C++ está em uma DLL é carregada em diversas cliente EXE, algumas das quais utilizam diferentes versões .Tempo de execução NET.Como só pode ser um tempo de execução carregado em um único processo, a minha melhor aposta parece ser a de colocar o meu código C# em outro processo.
Solução
Você pode criar componentes COM+ usando o Sistema.EnterpriseServices.ServicedComponent.Conseqüentemente, você será capaz de criar um fora-de-proc e-proc (cliente) a ativação do componente, bem como todos os+ benefícios de agrupamento, de sistema de interacção remota, é executado como um serviço do windows, etc.
Outras dicas
Aqui podemos ler que é possível, mas o exe será carregado como uma biblioteca e não começou em seu próprio processo como um exe.Eu não sei se isso é um problema para você?Ele também contém algumas soluções possíveis se o que você quer fazer é agir como um verdadeiro fora do processo de servidor com.Mas talvez usando outra forma de comunicação entre processos é melhor.Gosta .Líquido De Sistema De Interacção Remota.
Eu não posso recomendar este como a forma, mas você pode criar um COM callable wrapper para o seu C# biblioteca e, em seguida, criar um VB6 projecto exe ActiveX que os delegados de chamadas para o seu C# biblioteca.
Por que você não pode carregar .líquido de tempo de execução para o processo de espaço?É possível hospedar o .tempo de execução net e chamar .net usando COM.