Warum wird COM-Interop in .NET P / Invoke vorgezogen?

In unserem Projekt verwenden wir viel Delphi-Code über COM in unserer asp.net-Anwendung.

So: Legacy-Delphi-DLL => Delphi-COM-Wrapper => .Net-Interop => asp.net (mvc)

Wir haben einige Probleme in Bezug auf Zugriffsverletzungen, das Entladen von DLLs usw. Ich habe jetzt einige portiert, um die alte DLL direkt über P / Invoke-Code zu verwenden.

Wenn ich mir Ressourcen zu COM und P / Invoke anschaue, wird fast immer empfohlen, COM zu verwenden. Warum das? Hat P / Invoke nicht die folgenden Vorteile:

Ausgecheckter Code verwendet immer die richtigen DLLs anstelle der zuletzt registrierten COMAuf den Servern können mehrere Versionen nebeneinander ausgeführt werden (zum Beispiel: DEV, TEST und QA)Keine Probleme mehr mit COM-RegistrierungenViel schneller als die COM-Kommunikation (Artikel, die ich lese, weisen auf eine Geschwindigkeitssteigerung von 30% hin)

Antworten auf die Frage(1)

Ihre Antwort auf die Frage