Все говорят, что .NET Remoting заменяется WCF, но мне интересно, насколько это точно. Я не видел официального слова о том, что Remoting устарел, и мне кажется, что есть сценарии, где Remoting имеет больше смысла, чем WCF. Ни один из объектов или методов, связанных с Remoting, не устарел, даже в версии 4.0 фреймворка. Также я понимаю, что System.AddIn в фреймворках 3.5 и 4.0 использует Remoting.
Есть ли у кого-нибудь официальное слово об обратном?
В статье Выбор параметров связи в .NET (для версии 3.0, как и последняя версия этой статьи), она заявляет:
8 Передача доменных имен между приложениями
Если вам необходимо поддерживать связь между объектами в разных доменах приложения в рамках одного и того же процесса, вы должны использовать удаленную передачу .NET.
Теперь это, конечно, неточно, поскольку WCF, безусловно, может использоваться для пересечения границ домена, но дает ли он официальную рекомендацию для этого сценария?
Обновление: я отправил Clemens Vasters (который был в команде, которая владеет Remoting и WCF), на этот вопрос:
Клеменс, я понимаю, что вы в команде, которая владеет как удаленными, так и wcf, и у меня есть несколько вопросов, которые, я считаю, мне нужно пойти в источник.
Во-первых, у меня вопрос о том, уходит ли дистанцирование. В частности, у нас есть довольно большое приложение, которое широко использует удаленно для межпроцессорной коммуникации внутри процесса, и мне было интересно, считается ли это использование удаленных объектов "наследием". Если да, будет ли AppDomain.CreateInstance и друзей заменены чем-то еще?
Это его ответ:
Remoting является частью .NET Framework и, как таковой, он не уходит. COM был в Windows с Windows NT 3.5/Windows 95 и не ушел, и я тоже не вижу этого в ближайшее время.
Тем не менее, очень мало инвестиций в развитие происходит в Remoting. WCF является преемником Remoting и вытесняет COM/DCOM для управляемого кода.
В процессе обработки, междоменное общение. Remoting - это собственный способ общения на CLR. Если вы видите проблемы с производительностью, которые накапливают большие объемы данных или очень много сообщений за короткое время, вы должны серьезно взглянуть на WCF и NetNamedPipeBinding.