Это зависит от того, что вы хотите сделать; удаленное взаимодействие становится непригодным для истинных «отдаленных» сценариев; в общем, для связи между системами предпочтительнее использовать сервисный интерфейс, например, через WCF.
Удаленное взаимодействие по-прежнему важно для связи между доменами приложений в одном приложении.
Обратите внимание, что удаленное взаимодействие доступно не для всех платформ .NET - например, Silverlight не поддерживает удаленное взаимодействие, но WCF и такие вещи, как http / (raw) сокеты, подходят.
Если можете, посмотрите в сторону WCF. Если WCF не вариант, посмотрите на обычные веб-сервисы.
В частности, проблемы с удаленным взаимодействием:
- связывает клиента и сервера с .NET
- связывает клиента и сервера в одну и ту же двоичную реализацию
- это приводит к плохо продуманным границам (очень легко просачивать неправильные объекты по проводу, что может привести к большим задержкам)
и т.д.
повторное исполнение; удаленное взаимодействие использует двоичную сериализацию, которая в некоторых случаях полезна, а в других - проблемна (см. выше). Web-сервисы, как правило, основаны на xml (хотя существуют и другие форматы) и основаны на контракте (а не на реализации), что означает, что клиент и сервер могут иметь разные типы, представляющие объекты, при условии, что они похожи достаточно.
Также возможно использование бинарных файлов на веб-сервисах; например, protobuf-net предоставляет ловушку WCF для использования двоичного (основанного на контракте) формата Google «буфер буфера протокола» над службой WCF (предостережение: тогда это протокол на заказ, и вам потребуется инструмент на обоих концах).
Существуют и другие способы общения между системами, все они, возможно, предпочтительнее, чем удаленное взаимодействие (даже если они менее универсальны - иногда минимализм является достоинством):
- розетки (нестандартные коммуникации)
- http (простые сообщения POX и т. Д.)
- промежуточное ПО (msmq, biztalk и т. Д.)