Есть ли эквивалент нерабочего COM EXE в .NET?
Вопрос
Одной из приятных особенностей COM / ActiveX был исполняемый файл вне процесса.У вас мог бы быть EXE-файл, который предоставлял бы методы и свойства в форме, доступной обоим другим процессам, включая VBScript и JScript.В то же время EXE-файл может иметь свою собственную функциональность, связанную или не связанную с той, которая предоставляется его библиотекой типов.
Каков тип файла .ЧИСТЫЙ эквивалент?
У меня есть существующий проект VB6, который является интерпретатором языка сценариев (с использованием MSScript) и ресурсом различных инструментальных функций для других языков сценариев.Было предложено, чтобы я попробовал преобразовать его в файл .NET.
Сработает ли это, или мне в конечном итоге придется разделить один элемент на два?
Решение
Корпоративные сервисы позволят вам сделать именно это.Вы можете запустить COM-компонент как:
- Процесс DLLHost
- Услуга
- Библиотека inproc (это тот же процесс, что и ваш другой код)
В Интернете есть множество примеров по этому поводу.К чему это сводится, так это к:
- Украсьте свои классы, которые вам нужно предоставить COM, интерфейсами
- Компоненты, которые вы хотите разместить, должны быть получены из ServicedComponent
- Украсьте свои интерфейсы атрибутом GuidAttribute (используйте уникальный Guid).
- Украсьте интерфейсы и классы, которые доступны для COM, атрибутом ComVisible (true)
Надеюсь, это поможет.
Другие советы
Соответствие .NET является Удаленное использование .NET для .NET 2.0 и WCF для версии 3.0+.Однако, если вам нужно взаимодействовать с COM-объектами, вы должны вместо этого создать COM-открытый объект.Для этого существует довольно много руководств.
Для этого есть несколько вариантов;наиболее очевидным является обслуживаемые компоненты;это позволяет вам разместить управляемый код в COM +, чтобы запустить его в отдельном процессе, но вам нужен GAC /COM-callable и т.д.