Création d'une application hôte
La classe RemotableType
, définie dans la rubrique Création d'un type accessible à distance, n'est pas spéciale. Pour permettre à des objets contenus dans d'autres domaines d'application de créer des instances de cet objet à distance, vous devez créer une application hôte ou d'écoute afin d'effectuer les deux tâches suivantes :
- Choisir et inscrire un canal, qui est un objet gérant les protocoles réseau et les formats de sérialisation en votre nom.
- Inscrire votre type avec le système .NET Remoting, de sorte qu'il puisse utiliser votre canal pour écouter les demandes portant sur votre type.
Le .NET Framework inclut deux canaux par défaut, HttpChannel (qui utilise un format SOAP) et TcpChannel (qui utilise un format binaire). HttpChannel est un bon canal pour commencer car, dans certains scénarios, il peut être utilisé à travers des pare-feu sans ouvrir de port et il prend en charge la sécurité standard et les protocoles d'authentification. Pour plus d'informations sur le choix des canaux appropriés à votre scénario, consultez Canaux.
Vous pouvez créer des applications d'écoute à l'aide de n'importe quel type de domaine d'application : une application Windows Forms, une application Web ASP.NET, une application console, un service Windows (également appelé service Windows NT) ou tout autre domaine d'application managé Étant donné qu'une configuration à distance est effectuée par domaine d'application, le domaine d'application doit s'exécuter pour écouter les demandes.
Remarque Contrairement à COM, .NET Remoting ne démarre pas l'application hôte ou serveur pour vous. Il s'agit d'une différence importante entre .NET Remoting et l'activation à distance dans COM.
La configuration peut être effectuée par programme ou en utilisant un fichier de configuration d'application ou d'ordinateur. Le code suivant implémente un domaine d'application hôte RemotableType
simple qui utilise un fichier de configuration. (L'utilisation d'un fichier de configuration vous permet, entre autres, de modifier la configuration de l'accès distant sans recompiler votre exécutable.) Pour plus d'informations sur la configuration de l'infrastructure .NET Remoting, consultez Configuration.
' Listener.vb
Imports System
Imports System.Runtime.Remoting
Public Class Listener
Public Shared Sub Main()
RemotingConfiguration.Configure("Listener.exe.config")
Console.WriteLine("Listening for requests. Press Enter to exit...")
Console.ReadLine()
End Sub 'Main
End Class 'Listener
[C#]
// Listener.cs
using System;
using System.Runtime.Remoting;
public class Listener{
public static void Main(){
RemotingConfiguration.Configure("Listener.exe.config");
Console.WriteLine("Listening for requests. Press Enter to exit...");
Console.ReadLine();
}
}
Pour compiler cette classe dans un exécutable hôte ou d'écoute à l'aide des outils de ligne de commande fournis avec le Kit de développement .NET Framework SDK, enregistrez-la sous Listener
.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é le fichier RemotableType.dll
créé dans la rubrique Création d'un type accessible à distance. À l'invite de commande dans ce répertoire, tapez la commande suivante :
[Visual Basic]
vbc /r:RemotableType.dll Listener.vb
[C#]
csc /noconfig /r:RemotableType.dll Listener.cs
Dans cet exemple, le nom du fichier est :
[Visual Basic]
Listener.vb
[C#]
Listener.cs
La classe Listener
doit être en mesure de trouver le fichier Listener.exe.config
pour charger la configuration de la classe RemotableType
. Ce fichier de configuration doit être enregistré dans le même répertoire que Listener.exe
; sinon, il ne sera pas trouvé et une exception sera levée. Le code suivant illustre le fichier de configuration Listener.exe.config
de ce domaine d'application hôte ou d'écoute.
<configuration>
<system.runtime.remoting>
<application>
<service>
<wellknown
mode="Singleton"
type="RemotableType, RemotableType"
objectUri="RemotableType.rem"
/>
</service>
<channels>
<channel ref="http" port="8989"/>
</channels>
</application>
</system.runtime.remoting>
</configuration>
Le système d'accès distant utilise les informations contenues dans ce fichier pour écouter et acheminer des demandes distantes à une instance d'un type accessible à distance. Le fichier spécifie le mode d'activation de serveur Singleton, le nom du type et l'assembly du type au nom duquel il doit écouter ainsi que l'URI (Uniform Resource Identifier) de l'objet ou le nom externe de l'objet. (Pour plus d'informations sur les URI d'objets et l'accès distant, consultez URL d'activation.) Le fichier indique également au système d'accès distant d'écouter les demandes sur le port 8989 à l'aide du HttpChannel fourni par le système.
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 | Schéma des paramètres d'accès distant | Activation par serveur | WellKnownObjectMode.Singleton