Что мне нужно сделать для реализации COM-сервера "вне процесса" в C #? - PullRequest
10 голосов
/ 27 августа 2008

Я пытаюсь реализовать COM-сервер "вне процесса", написанный на C #. Как мне это сделать?

Мне нужно, чтобы код C # был "вне процесса" из моего основного приложения C ++, потому что я не могу загрузить среду выполнения .NET в основное пространство процесса

ПОЧЕМУ:
Мой код C ++ находится в DLL, которая загружается во множество различных пользовательских EXE-файлов, некоторые из которых используют разные версии среды выполнения .NET. Поскольку в один процесс может быть загружена только одна среда выполнения, лучше всего поставить код C # в другой процесс.

Ответы [ 4 ]

7 голосов
/ 02 сентября 2008

Вы можете создавать компоненты COM +, используя System.EnterpriseServices.ServicedComponent. Следовательно, вы сможете создавать активацию компонентов вне процесса и внутри процесса (клиент), а также все преимущества COM + для пула, удаленного взаимодействия, запуска в качестве службы Windows и т. Д.

1 голос
/ 27 августа 2008

Здесь мы можем прочитать, что это возможно, но исполняемый файл будет загружен как библиотека и не будет запущен в своем собственном процессе как исполняемый. Я не знаю, если это проблема для вас? Он также содержит некоторые возможные решения, если вы хотите, чтобы он действовал как настоящий внепроцессный com-сервер. Но, возможно, лучше использовать другой способ межпроцессного взаимодействия. Как .Net Remoting.

0 голосов
/ 28 августа 2008

Почему вы не можете загрузить среду выполнения .net в свое пространство процесса? Можно разместить среду выполнения .net и вызвать .net с помощью COM.

0 голосов
/ 27 августа 2008

Я не могу рекомендовать это как способ , но вы можете создать COM-вызываемую оболочку для вашей библиотеки C #, а затем создать exe-проект VB6 ActiveX, который делегирует вызовы вашей библиотеке C #.

...