Почему COM-взаимодействие предпочтительнее, чем P/Invoke в .NET?

В нашем проекте мы повторно используем много кода Delphi через COM в нашем asp. сетевое приложение.

Вот так: унаследованная библиотека delphi dll => оболочка COM delphi => .Net interop => asp.net (mvc)

У нас есть некоторые проблемы, связанные с нарушением прав доступа, выгрузкой dll и т. д. Сейчас я перенес некоторые используют устаревшую dll напрямую через код P/Invoke.

Когда я просматриваю ресурсы, касающиеся COM и P/Invoke, люди почти всегда советуют использовать COM. Почему это? Разве P/Invoke не имеет следующих преимуществ:

  • проверенный код всегда будет использовать правильную DLL вместо последней зарегистрированной COM
  • Несколько версий могут работать параллельно на серверах (например: DEV, TEST и QA)
  • Больше никаких проблем с COM-регистрацией
  • Гораздо быстрее, чем COM-связь (статьи, которые я читал, указывают на увеличение скорости на 30%)
7
задан stakx supports GoFundMonica 7 June 2012 в 09:35
поделиться