2009-01-05 7 views
0

Il y a quelque chose que je ne comprends pas. Remoting .NET. Eh bien, deux choses en fait:Enregistrement de l'objet _instances_ au lieu de _types_ avec .NET remoting?

  1. Pourquoi l'accent retour sur les classes qui héritent de MarshalByRef au lieu d'interfaces ala le style original COM (que j'ai aimé)? Pourquoi est-ce que .NET Remoting vous force toujours à créer efficacement une sorte de pool d'objets au lieu de vous permettre d'associer instances avec une URL?

Code Serveur:

RemotingConfiguration.RegisterWellKnownServiceType(typeof(RemotingTypes.Server), "MyURL", WellKnownObjectMode.Singleton); 

Code client:

RemotingConfiguration.RegisterWellKnownServiceType(typeof(RemotingTypes.Server), "MyURL", WellKnownObjectMode.Singleton); 

Mais suppose que je veux créer l'instance "Server" moi-même, puis associez juste à un point final?

RemotingTypes.Server myInstance = new RemotingTypes.Server(); 

Et maintenant? Comment puis-je associer "myInstance" à l'URL "MyURL"?

Répondre

1

Le problème avec la réponse de Nickd: Je voulais savoir comment associer une instance déjà créée avec une URL, plutôt que comment obtenir .NET remoting pour faire cela pour moi (une instance que j'ai créée qui n'a pas de constructeur par défaut, par exemple).

J'espérais qu'il y aurait une réponse épique expliquant la « philosophie » derrière .NET Remoting, et pourquoi il est inextricablement couplé au système de type ...

Ce que j'ai conclu que la place est tout simplement: a) C'est parce que .NET Remoting est nul. Ne l'utilisez pas b) Utilisez WCF à la place

+0

Je ne sais pas ce que c'est à propos de Remoting qui vous oblige à le vider en gros. Vous pouvez utiliser des interfaces pour accéder à vos objets distants (l'implémentation doit être un objet MarshalByRef) comme vous le demandez dans 1. Learning Remoting ressemble un peu à l'apprentissage de Winforms dans un monde WPF. Ou peut-être ASP vs ASP.NET! – nickd

0

Je ne peux pas vraiment aborder les points 1 et 2 car je n'ai aucune expérience de COM et je ne comprends pas 2, mais pour répondre à votre dernière question spécifique, si vous utilisez le système. Classe de l'activateur, vous pouvez le faire :

RemotingTypes.Server myInstance = (RemotingTypes.Server) Activator.GetObject(typeof(RemotingTypes.Server), MyUrl); 

Cela signifie que vous devez le lier au moment de la construction, mais tout est côté client.

Voir mes similar question.