¿Por qué se prefiere la interoperabilidad COM sobre P / Invoke en .NET?

En nuestro proyecto, estamos reutilizando gran parte del código de Delphi a través de COM en nuestra aplicación asp.net.

Así: legacy delphi dll => delphi COM wrapper => .Net interop => asp.net (mvc)

Tenemos algunos problemas relacionados con las violaciones de acceso, la descarga de archivos DLL, etc. Ahora he transferido algunos para usar el archivo DLL heredado directamente a través del código P / Invoke.

Cuando miro los recursos relacionados con COM y P / Invoke, la gente casi siempre aconseja usar COM. ¿Porqué es eso? No P / Invoke tiene los siguientes beneficios:

El código desprotegido siempre utilizará los dll correctos en lugar del último COM registrado.Se pueden ejecutar varias versiones en paralelo en los servidores (por ejemplo: DEV, TEST y QA)No más problemas de registro COMMucho más rápido que la comunicación COM (los artículos que leo indican un aumento de velocidad del 30%)

Respuestas a la pregunta(1)

Su respuesta a la pregunta