Por que a interoperabilidade COM é preferencial em relação ao P / Invoke no .NET?

Em nosso projeto estamos reutilizando muito do código Delphi através do COM em nosso aplicativo asp.net.

Assim: legado delphi dll => Delphi COM wrapper => .net interoperabilidade => asp.net (mvc)

Temos alguns problemas relacionados a violações de acesso, descarga de dll's, etc ... Agora eu portei alguns para usar a dll legada diretamente através do código P / Invoke.

Quando vejo os recursos relacionados a COM e P / Invoke, as pessoas quase sempre aconselham o uso de COM. Por que é que? P / Invoke não tem os seguintes benefícios:

código de saída sempre usará as DLLs corretas em vez da última registrada COMVárias versões podem ser executadas lado a lado nos servidores (por exemplo: DEV, TEST e QA)Não há mais problemas com registros COMMuito mais rápido que a comunicação COM (os artigos que leio indicam um aumento de velocidade de 30%)

questionAnswers(1)

yourAnswerToTheQuestion