Из трех способов вызова нативного кода из управляемого кода (COM Interop, P / Invoke и IJW или C ++ / CLI взаимодействие) COM Interop является самым медленным. И если ваш существующий нативный код не в форме COM-компонента, то он также самый сложный, потому что это будет шаг 1.
Чтобы использовать P / Invoke, вам понадобятся некоторые функции в стиле C (extern C), которые продолжают и вызывают ваш существующий код. Чтобы использовать взаимодействие IJW или C ++ / CLI, вы реализуете класс public ref
(в скомпилированном файле / clr) с методами, которые продолжают и вызывают ваш существующий код. Вам решать, что вы находите легче. Когда у вас есть оболочка, из C # вы можете выполнить PInvoke с атрибутом DllImport
в объявлении функций, а затем вызывать их как обычно. Чтобы сделать IJW, вы добавляете ссылку на сборку с открытым классом ref и вызываете методы этого класса как обычно.
Моя рекомендация - спросить, хотите ли вы какой-нибудь шаблон Facade, в котором вы ставите некоторую логику перед взаимодействием - если так, идите IJW. Также, если вы хотите контролировать маршалинг, идите IJW. Если нет то иди P / Invoke. Но в любом случае работает.