Création d'une application cliente
Pour créer un client du type distant défini dans Création d'un type accessible à distance et hébergé par l'application créée dans Création d'une application hôte, votre application doit s'inscrire en tant que client pour cet objet distant, puis l'appeler comme s'il se trouvait dans le domaine d'application du client. Le système .NET Remoting intercepte vos appels clients, les transfère à l'objet distant et retourne les résultats à votre client. L'exemple de code suivant montre comment créer un client d'accès distant simple.
' Client.vb
Imports System
Imports System.Runtime.Remoting
Public Class Client
Public Shared Sub Main()
RemotingConfiguration.Configure("Client.exe.config")
Dim remoteObject As New RemotableType()
Console.WriteLine(remoteObject.StringMethod())
End Sub 'Main
End Class 'Client
[C#]
// Client.cs
using System;
using System.Runtime.Remoting;
public class Client{
public static void Main(){
RemotingConfiguration.Configure("Client.exe.config");
RemotableType remoteObject = new RemotableType();
Console.WriteLine(remoteObject.StringMethod());
}
}
Pour compiler cette classe dans un exécutable appelant ou client à l'aide des outils de ligne de commande fournis avec le Kit de développement .NET Framework SDK, enregistrez-la sous Client
.extension-langage (ou choisissez un autre nom de fichier, où l'extension de langage correspond au langage que vous souhaitez compiler). Enregistrez le fichier dans le même répertoire que celui dans lequel vous avez enregistré une copie de RemotableType.dll
créé dans la rubrique Création d'un type accessible à distance. (Remarquez qu'il ne doit pas s'agir du même répertoire que celui de votre application Listener.exe
. Si c'est le cas, vous n'aurez pas la certitude de recevoir et d'utiliser une référence distante, car une résolution d'assembly et de type peut se produire lorsque des applications se trouvent dans le même répertoire.) À l'invite de commande dans ce répertoire, tapez la commande suivante :
[Visual Basic]
vbc /r:RemotableType.dll Client.vb
[C#]
csc /noconfig /r:RemotableType.dll Client.cs
Dans cette commande, le nom du fichier se présente comme suit :
[Visual Basic]
Client.vb
[C#]
Client.cs
Comme vous pouvez le voir dans l'exemple, la classe Client
doit être en mesure de trouver le fichier Client.exe.config
pour charger la configuration de la classe RemotableType
. Ce fichier doit être enregistré dans le même répertoire que le fichier Client.exe
; sinon, il ne sera pas trouvé et une exception sera levée. L'exemple de code suivant illustre le fichier de configuration Client.exe.config
de ce domaine d'application hôte ou d'écoute.
<configuration>
<system.runtime.remoting>
<application>
<client>
<wellknown
type="RemotableType, RemotableType"
url="https://localhost:8989/RemotableType.rem"
/>
</client>
</application>
</system.runtime.remoting>
</configuration>
Ce fichier indique au système d'accès distant que les informations de type de l'objet distant RemotableType
se trouvent dans l'assembly RemotableType
et que ce client doit tenter de créer et d'utiliser un objet RemotableType
situé à l'adresse https://localhost:8989/RemotableType.rem. Pour plus d'informations sur l'attribut URL dans ce fichier de configuration, consultez URL d'activation. Si vous voulez exécuter cette application sur un réseau, vous devez remplacer « localhost » dans la configuration du client par le nom de l'ordinateur distant.
Remarque Bien que le fichier de configuration précédent ne contienne que peu de paramètres, la plupart des problèmes d'utilisation de .NET Remoting surviennent parce que certains de ces paramètres sont incorrects ou ne correspondent pas aux paramètres de configuration des applications clientes. Il est courant de faire une faute de frappe dans un nom, d'oublier un port ou de négliger un attribut. Si vous rencontrez des problèmes avec votre application distante, commencez par vérifier vos paramètres de configuration.
Voir aussi
Création d'une application .NET Remoting de base | Configuration | Activation par serveur | Schéma des paramètres d'accès distant | <wellknown>