¿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%)