Comments 9
Кроме того, P/Invoke нужен для использования функционала существующих фреймворков и инструментов, написанных на C++ вместо того, чтобы переписывать код с C++ на C#.
Довольно смело, учитывая, что по сути маршалить можно на примитивные типы и структуры, и инвокать функции, которые явно указали extern "C"
, что уже намекает
Первый раз о таком прочитал, есть примеры для чего такое может быть нужно?
Польза от использования Platform Invoke чаще всего объясняется использованием языков программирования с большИм контролем низкоуровневых процессов (как в случае с C++).
Касаемо удалённых объектов – имеет место быть сценарий, когда нужно выполнить какой-то код в другом процессе или в другом приложеннии на другом комьютере (на удалённом сервере, например).
Кроме того, реализация удалённого объекта может быть замаскирована через интерфейс (как показывает пример с интерфейсом IRandomNumberGenerator, который упоминается в статье), что бывает полезно в больших проектах с неявным использованием логики.
Часто драйверы для разных устройств (видеокамеры, например) имеются только для c++. Используя P/Invoke можно их использовать в программах на c#.
Скоро .NET Core 8 выйдет, а тут про древний .NET Framework. Дайте уже старичку почить в бозе.
Тем более для решения задач такого класса микрософт давно рекомендует юзать gRPC.
Старый добрый маршалинг. Обзор