Tout le monde dit que .NET Remoting est en train d'être remplacé par WCF, mais je me demande dans quelle mesure cela est exact. Je n'ai pas vu d'annonce officielle indiquant que Remoting est déprécié, et il me semble qu'il existe certainement des scénarios dans lesquels Remoting a plus de sens que WCF. Aucun des objets ou méthodes liés à Remoting n'a été déprécié, même dans la version 4.0 du framework. Je crois également savoir que System.AddIn dans les cadres 3.5 et 4.0 utilise Remoting.
Quelqu'un a-t-il des informations officielles à ce sujet ?
Dans l'article, Choix des options de communication dans .NET (pour 3.0, car il s'agit de la dernière version de cet article), il est indiqué :
8 Communications entre domaines d'application
Si vous devez prendre en charge la communication entre des objets de différents domaines d'application au sein d'un même processus, vous devez utiliser .NET remoting.
Maintenant, cela, bien sûr, n'est pas exact, comme WCF peut certainement être employé pour traverser des frontières d'appdomain, mais donne-t-il la recommandation officielle pour ce scénario ?
Mise à jour : J'ai envoyé cette question à Clemens Vasters (qui faisait partie de l'équipe propriétaire de Remoting et WCF) :
Clemens, je comprends que vous faites partie de l'équipe qui possède à la fois remoting et wcf, et j'ai quelques questions pour lesquelles je pense devoir aller à la source.
Tout d'abord, j'ai une question sur le fait que le remoting va disparaître. Plus précisément, nous avons une application assez importante qui utilise largement le remoting pour la communication inter-appartements en cours de traitement, et je me demandais si cette utilisation du remoting était considérée comme "ancienne". Dans l'affirmative, AppDomain.CreateInstance et ses amis seront-ils remplacés par autre chose ?
Voici sa réponse :
Le remoting fait partie du .Net Framework et, en tant que tel, il n'est pas prêt de disparaître. COM est présent dans Windows depuis Windows NT 3.5/Windows 95 et n'a pas disparu et je ne pense pas qu'il va disparaître de sitôt non plus.
Cela dit, l'investissement en développement pour Remoting est très faible. WCF est le successeur de Remoting et supplante COM/DCOM pour le code géré.
Pour les communications intra-processus et inter-domaines, Remoting est le moyen de communication natif du CLR. Si vous rencontrez des problèmes de performance lors du pompage de grandes quantités de données ou de très nombreux messages en peu de temps, vous devriez vous pencher sérieusement sur WCF et le NetNamedPipeBinding.
1 votes
Voir stackoverflow.com/questions/1295353/ pour une question sur la raison pour laquelle WCF est tellement plus lent que Remoting dans ma situation spécifique.
1 votes
Remoting est intrinsèque à .NET, et les détails du rôle qu'il joue et de son fonctionnement peuvent être trouvés dans le document suivant Essentiel .NET par Don Box et Chris Sells. Cependant, il s'effondre lorsque les communications entre composants ne sont pas fiables ou sont lentes, et pratiquement tous les transports - même un réseau local gigabit - ne sont pas fiables et sont lents par rapport à la messagerie en cours de traitement. Quand les gens parlent de la lenteur de WCF, ils pensent généralement aux services Web. Les services Web sont trop lents si vous essayez de les utiliser pour des communications en cours de processus. Cependant, ils sont conçus pour tolérer des connexions lentes et peu fiables et servent bien dans ces conditions.
3 votes
@Peter : merci pour ces informations, mais certaines de vos hypothèses sont complètement fausses. D'abord, que le remoting est lent ou peu fiable. Ce n'est pas le cas. Il est très rapide et très fiable (sur des canaux fiables, bien sûr). Une autre hypothèse est que les "services web" (peu importe ce que cela signifie) sont lents. Ce n'est pas le cas. Bien sûr, tout ce qui est en cours de traitement sera beaucoup plus rapide que tout ce qui passe par le réseau, mais ce n'est pas du tout le sujet de cette question...