Есть ли аналог. EXE-файла вне процесса в .NET? - PullRequest
7 голосов
/ 03 марта 2009

Одной из приятных особенностей COM / ActiveX был внешний файл EXE. У вас может быть EXE-файл, который предоставляет методы и свойства в форме, используемой обоими другими процессами, включая VBScript и JScript. В то же время EXE-файл может иметь свою собственную функциональность, связанную или не связанную с той, которая предоставляется его библиотекой типов.

Что такое эквивалент .NET?

У меня есть существующий проект VB6, который является интерпретатором языка сценариев (использующим MSScript) и ресурсом различных функций инструмента для других языков сценариев. Было предложено попытаться преобразовать его в .NET.

Это сработает, или я в итоге разделю один элемент на два?

Ответы [ 3 ]

4 голосов
/ 09 марта 2009

Корпоративные сервисы позволят вам сделать именно это. Вы можете запустить компонент COM как:

  • Процесс DLLHost
  • Услуга
  • Библиотека inproc (это тот же процесс, что и ваш другой код)

В интернете есть множество примеров. То, к чему это сводится, является:

  • Украсьте ваши классы, которые вам нужно представить для COM с интерфейсами
  • Компоненты, которые вы хотите разместить, должны быть получены из ServicedComponent
  • Украсьте свои интерфейсы с помощью GuidAttribute (используйте уникальный Guid)
  • Украсить интерфейсы и классы, доступные для COM, с атрибутом ComVisible (true)

Надеюсь, это поможет.

3 голосов
/ 03 марта 2009

.NET соответствует .NET Remoting для .NET 2.0 и WCF для 3.0+. Однако, если вам нужно взаимодействовать с COM-объектами, вы должны вместо этого создать COM-объект. Для этого есть немало учебников.

1 голос
/ 03 марта 2009

Есть несколько вариантов для этого; наиболее очевидным является обслуживаемые компоненты ; это позволяет вам размещать управляемый код в COM + для запуска его в отдельном процессе, но вам требуется GAC / COM-callable и т. д.

...