Это действительно зависит от того, во что в основном написаны другие части системы. С точки зрения производительности только один вызов PInvoke
(через атрибут DllImport
), вероятно, будет быстрее, чем один вызов COM, если аргументы методане нужно никакого особого маршалинга.
Третья, и, возможно, лучшая альтернатива, - это создание управляемой библиотеки C ++ / CLI, которая вызывает неуправляемый метод C ++ практически без влияния на производительность, и добавление ссылки на библиотеку C ++ / CLI в приложении C #.Затем приложение C # может выполнять вызовы управляемых методов к приложению C ++ / CLI, которые, в свою очередь, могут выполнять неуправляемые вызовы методов.Хотя это добавляет один уровень косвенности, оно обеспечит гораздо лучшую производительность, чем методы, которые вы упоминали.