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)