Todo mundo está dizendo como o .NET Remoting está sendo substituído pelo WCF, mas estou me perguntando o quão preciso isso é. Eu não vi nenhuma palavra oficial que o Remoting está sendo preterido, e parece-me que certamente existem cenários onde o Remoting faz mais sentido do que o WCF. Nenhum dos objetos ou métodos relacionados ao Remoting se tornou obsoleto, mesmo na versão 4.0 do framework. Também é meu entendimento que System.AddIn nas estruturas 3.5 e 4.0 usam Remoting.
Alguém tem alguma palavra oficial em contrário?
No artigo, Escolhendo opções de comunicação em .NET (para 3.0, já que é a versão mais recente desse artigo), ele afirma:
8 Comunicações de domínio entre aplicativos
Se você precisar oferecer suporte à comunicação entre objetos em diferentes domínios de aplicativo dentro do mesmo processo, deverá usar o .NET Remoting.
Agora, isso, é claro, não é preciso, já que o WCF pode certamente ser usado para cruzar os limites do appdomain, mas está dando a recomendação oficial para esse cenário?
Atualização: Enviei a Clemens Vasters (que fazia parte da equipe proprietária do Remoting e WCF) esta pergunta:
Clemens, entendo que você está na equipe que controla o remoting e o wcf, e tenho algumas perguntas que acho que devo responder à fonte.
Em primeiro lugar, tenho uma pergunta sobre se a comunicação remota está indo embora. Especificamente, temos um aplicativo bastante grande que usa remoting extensivamente para comunicação entre appdomain em processo, e eu queria saber se esse uso de remoting é considerado "legado". Em caso afirmativo, AppDomain.CreateInstance e amigos serão substituídos por outra coisa?
Esta é a resposta dele:
Remoting é parte do .Net Framework e, como tal, não vai desaparecer. COM está no Windows desde o Windows NT 3.5 / Windows 95 e não foi embora, e também não vejo isso em breve.
Dito isso, há um investimento mínimo de desenvolvimento para o Remoting. WCF é o sucessor do Remoting e suplanta COM / DCOM para código gerenciado.
Para comunicação em processo, entre appdomain O Remoting é a forma nativa de comunicação do CLR. Se você estiver vendo problemas de desempenho bombeando grandes quantidades de dados ou muitas mensagens em pouco tempo, você deve dar uma olhada séria no WCF e no NetNamedPipeBinding.
Respostas:
Chamar isso de tecnologia legada é uma descrição mais precisa.
http://msdn.microsoft.com/en-us/library/72x4h507%28VS.85%29.aspx
Atualização: o WCF não distingue entre inter / intra / processo / inter / intra-appdomain. Se você estiver usando comunicação de máquina única no WCF, use pipes nomeados - usá-lo deve fornecer um bom desempenho em praticamente todos os cenários realistas.
Para uma comparação de desempenho de várias tecnologias de comunicação distribuída, clique aqui .
fonte
Sim. Remoting está obsoleto ... e é oficial da Microsoft. Aqui está o link:
.NET Remoting
A primeira linha do artigo diz em negrito:
Achei que a verborragia era "obsoleta", mas aparentemente eles se referem a ela como "legado"
fonte
Se você gostaria de migrar para o .NET Core, você precisa encontrar outra solução para Remoting de qualquer maneira:
Fonte: https://docs.microsoft.com/en-us/dotnet/core/porting/libraries#remoting
fonte
Clemens Vasters, o líder técnico do Microsoft .NET Service Bus (que significa tanto Remoting quanto WCF) fala sobre WCF vs. Remoting nesta postagem do fórum . Para resumir a postagem, ele acaba recomendando o WCF em vez do Remoting.
Não tenho certeza se o .NET 4.0 usa remoting internamente, mas você poderia tentar enviar a Clemens a pergunta ... Tenho certeza que ele sabe a resposta.
fonte
Acho que agora (2015) está bastante claro até mesmo para domínios de aplicativos cruzados: https://msdn.microsoft.com/en-us/library/vstudio/ms180984(v=vs.100).aspx
Então, o WCF deve ser usado também para domínios de aplicativos cruzados.
fonte