2009-05-21 7 views
3

Je suis après quelques conseils plus que tout..Net Remoting sans utiliser .Net remoting?

J'ai l'exemple suivant:

Appication1.exe - A objet MyList

Application2.exe - A besoin d'accéder à MyList et d'interagir avec l'objet comme si elle a été créée à partir Application2. Dois-je utiliser .NET Remoting (c.-à-d. 2.0) ou WCF ou une autre pile technologique? Quels cadres sont disponibles pour soutenir cela? Quels sont les avantages/inconvénients de chacun?

Je devrais noter qu'il s'agit plus d'une application «d'assistance» et qu'elle ne sera utilisée par personne en dehors de l'équipe de développement.

Répondre

0

Je pense que le choix resonable est d'utiliser .NET remoting. Vous devez lancer un service Web sur Application1 pour Application2 pour parler. Le seul véritable inconvénient est que "MyList" doit être marqué avec MarshalByRefObject. MSDN dit Remoting est maintenant legecy stuff (.NET 3.0) en faveur de WCF. Mais autant que je sache, Remoting est le seul jeu en ville pour la communication cross-appdomin.

+0

Est-ce que "MyList" ne devrait pas être sérialisable? Ou la classe/l'objet dans lequel il vit? – IAbstract

1

C'est difficile à dire. WCF est certainement une possibilité. Vous devez avoir le contrôle des deux applications bien sûr et changer App1 pour soutenir (soit sur un modèle pousser ou tirer) le transfert de données à App2. Si vous n'avez pas nécessairement besoin d'un échange de données à la demande, vous pouvez considérer une base de données comme la méthode de transfert de données esp. si App1 écrit déjà des données dans une base de données. Ensuite, vous pouvez demander à App2 d'aller chercher les données dont il a besoin à partir de là. Ou vous pouvez même utiliser le système de fichiers, si l'échange n'arrive pas souvent. Sérialisez la liste et récupérez-la avec App2. (Je ne le suggère que parce que vous essayez d'accrocher un outil de développement dans quelque chose qui existe déjà). Remoting est une technologie plus ancienne qui se heurte à des problèmes d'implémentation et de déploiement complexes. WCF est beaucoup plus propre et plus facile à mettre en œuvre. Donc, si c'est entre les deux, je recommanderais sans hésiter à la WCF d'utiliser le remoting.

8

C'est difficile à dire sans connaître plus de détails sur vos applications, mais personnellement, je n'utiliserais pas WCF pour ce scénario. WCF a un pipeline très lourd et fait des efforts considérables pour la configuration et l'utilisation. Son API est également fortement orientée vers les services Web, ce qui semblerait être exagéré dans votre cas. Microsoft prétend que WCF remplace l'accès à distance parce qu'il ne veut plus prendre en charge l'accès à distance, mais ayant utilisé les deux, je peux dire que WCF n'est pas aussi bon que l'accès distant pour déplacer des données dans des applications homogènes. Cependant, il existe des dizaines de façons de déplacer des données d'une application à une autre, toutes avec leurs propres avantages et inconvénients. Une discussion complète de toutes ces méthodes dépasse la portée de ce commentaire. Pouvez-vous ajouter plus de détails sur votre scénario d'utilisation? Quel type de données est dans cette liste, quelle est sa taille, d'où vient-elle, quel type de modifications sont effectuées, App 1 doit-elle voir les changements, App 2 va envoyer les données ailleurs quand elle est fait, etc ...

3

Je suppose que l'application 1 est une application de production et l'application 2 est l'application d'aide au développement uniquement. Si tel est le cas, votre objectif devrait être de minimiser ou d'éliminer toute surcharge supplémentaire dans l'application 1 liée à la prise en charge de l'application 2. La WCF, qui est très lourde, devrait donc être éliminée en option. Remoting ajoute également les frais généraux.

Vous pourriez sérialiser l'objet - peut-être que XML serait approprié pour cela?

Il y a trop de variables à cette question pour y répondre complètement. Pouvez-vous fournir plus d'informations sur l'Application 1 et l'Application 2? Où vont-ils? Est-ce que les objets qui vous intéressent changent souvent? Comment conservent-ils l'état?

+0

Je vote en ce sens car il semble que la façon la plus logique d'accéder à la liste sans aucun frais généraux de Remoting ou WCF. Avoir app1 simplement sérialiser la liste soit au formateur Xml ou binaire. – IAbstract

Questions connexes