2009-06-18 5 views
0

J'ai des doutes sur l'objet SAO. Fo par ex. J'ai Interface ITest qui est dans ITestObj.dll et RemoteObject (qui est enregistré comme SAO) Test qui implémente ITest dans un serveur appelé RemoteObject.dll. Maintenant, mon client utilise ITestObj.dll et essaie de créer l'objet proxy en utilisant la méthode Activator. Selon MSDN- GetObject ou nouveau peut être utilisé pour l'activation du serveur. Il est important de noter que l'objet distant n'est pas instancié lorsque l'un de ces appels est effectué. En fait, aucun appel réseau n'est généré. Le framework obtient suffisamment d'informations à partir des métadonnées pour créer le proxy sans se connecter à l'objet distant.Comment le proxy est créé pour SAO lorsque le client et le serveur partagent la même interface dans Remoting

Comment se fait-il que Activator.GetObject puisse créer une instance de Test et la donner comme type d'Itest au client sans se connecter au serveur?

Répondre

0

Le proxy n'essaie pas de se connecter au serveur tant que vous n'avez pas appelé l'objet. Ainsi, même si le serveur ne fonctionne pas, vous pouvez utiliser Activator.GetObject() pour obtenir une référence à un proxy sur l'objet.

Si vous appelez une méthode sur l'objet proxy alors que le serveur n'est pas en cours d'exécution, vous obtiendrez une exception RemotingException.

0

Lorsque le proxy transparent client est créé, sa validité sur le serveur n'est pas vérifiée. Une fois que vous appelez une fonction, une connexion est établie avec le serveur, à quel point le serveur tente de localiser l'objet serveur implémentant l'interface. Si ce n'est pas trouvé, une erreur est générée.

Fondamentalement, le proxy transparent créé sur le client utilise l'interface pour déterminer comment sérialiser l'appel au serveur. Je ne suis pas sûr si j'explique ceci clairement, mais j'espère que ceci aide.

Questions connexes