Dlaczego interop COM jest lepszy niż P / Invoke w .NET?

W naszym projekcie używamy partii kodu Delphi przez COM w naszej aplikacji asp.net.

W ten sposób: legacy delphi dll => delphi COM wrapper => .Net interop => asp.net (mvc)

Mamy pewne problemy dotyczące naruszeń dostępu, rozładowywania bibliotek dll, itd ... Teraz przeportowałem niektóre, aby używać starszej biblioteki dll bezpośrednio przez kod P / Invoke.

Kiedy patrzę na zasoby dotyczące COM i P / Invoke, ludzie prawie zawsze radzą używać COM. Dlaczego? Czy P / Invoke nie ma następujących korzyści:

sprawdzony kod zawsze użyje poprawnych plików dll zamiast ostatniego zarejestrowanego COMWiele wersji może działać równolegle na serwerach (na przykład: DEV, TEST i QA)Nie ma więcej kłopotów z rejestracją COMZnacznie szybciej niż komunikacja COM (artykuły, które czytam, wskazują na 30% wzrost prędkości)

questionAnswers(1)

yourAnswerToTheQuestion