Comment : générer une application d'hébergement
En elle-même, la classe RemotableType
définie dans la rubrique Comment : générer un type accessible à distance n'a rien de spécial. Pour permettre aux objets d'autres domaines d'application de créer à distance des instances de cet objet, vous devez générer une application hôte ou écouteur pour :
Choisir et inscrire un canal, qui est un objet qui gère les formats de protocoles réseau et de sérialisation en votre nom.
Inscrire votre type auprès du système d'accès distant .NET afin qu'il puisse utiliser votre canal pour écouter les demandes destinées à votre type.
Le .NET Framework inclut trois canaux par défaut, HttpChannel (qui utilise le formatage SOAP par défaut), TcpChannel (qui utilise le formatage binaire par défaut) et IpcChannel (qui utilise le formatage binaire par défaut). HttpChannel peut être utilisé à travers des pare-feu sans ouvrir de port et prend en charge les protocoles de sécurité et d'authentification standard. Pour plus d'informations sur le choix des canaux qui conviennent le mieux à votre scénario, consultez Canaux.
Vous pouvez générer des applications écouteur à l'aide de tout type de domaine d'application : application Windows Forms, application Web ASP.NET, application console, Service Windows (également connu sous l'appellation Service Windows NT) ou tout autre domaine d'application managé. Comme la configuration distante se fait pour chaque domaine d'application, le domaine d'application doit être en cours d'exécution pour pouvoir écouter les demandes.
Remarque : |
---|
Contrairement à COM, l'accès distant ne démarre pas l'application hôte ou serveur pour vous. C'est une différence importante entre l'accès distant .NET et l'activation à distance dans COM. |
La configuration peut se faire par programme ou en utilisant le fichier de configuration de l'application ou le fichier de configuration machine.
Le système d'accès distant utilise les informations de ce fichier pour écouter et router les demandes distantes vers une instance d'un type accessible à distance. Le fichier spécifie le mode d'activation serveur, le nom et l'assembly du type au nom duquel il écoute, ainsi que l'URI (Uniform Resource Identifier) d'objet ou le nom externe de l'objet. (Pour plus d'informations sur les URI d'objet et l'accès distant, consultez URL d'activation.)
Remarque : |
---|
Bien qu'il y ait peu de paramètres dans le fichier de configuration précédent, la plupart des problèmes rencontrés avec l'accès distant .NET se produisent en raison de certains paramètres incorrects ou ne correspondant pas aux paramètres de configuration des applications clientes. Il est facile d'écrire de façon erronée un nom, d'oublier un port ou un attribut. Si vous rencontrez des problèmes avec votre application distante, commencez par vérifier vos paramètres de configuration. |
Un fichier de configuration vous permet entre autres de modifier la configuration d'accès distant sans recompiler votre exécutable. Pour plus d'informations sur la configuration de l'infrastructure .NET Remoting, consultez Schéma des paramètres d'accès distant.
Remarque : |
---|
Consultez Comment : compiler et exécuter une application d'accès distant de base pour obtenir des instructions complètes sur la génération et l'exécution de cet exemple. |
Pour implémenter un domaine d'application hôte simple qui utilise un fichier de configuration
Poursuivons à partir Comment : générer un type accessible à distance, créez un autre répertoire sous
remoting
et appelez-lehost
Créez un fichier de configuration pour la classe distante. L'application hôte doit être en mesure de charger la configuration pour la classe distante, et par conséquent, le fichier de configuration doit être enregistré dans le même répertoire que l'assembly de l'application hôte. Dans le cas contraire, il sera introuvable et une exception sera levée. Le code suivant présente un fichier de configuration qui spécifie que l'objet distant est un Singleton et que son implémentation est une classe appeléeRemotableType
située dans un assembly appeléRemotableType
. Un HttpChannel est ensuite inscrit pour écouter sur le port 8989. Enregistrez ce fichier dans le répertoireremoting\listener
. Le nom du fichier doit correspondre au format app-name.exe.config. Il s'appelle icilistener.exe.config
.<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>
Créez un fichier source pour le langage de votre choix. En haut du fichier source, importez l'espace de noms System.Runtime.Remoting:
Imports System Imports System.Runtime.Remoting
using System; using System.Runtime.Remoting;
Dans la méthode Main, chargez le fichier de configuration qui configure la classe distante, affiche un message qui informe l'utilisateur que l'hôte est en cours d'exécution, puis attend qu'une touche soit pressée. Enregistrez ce fichier dans le répertoire
remoting\listener
.Public Class Listener Public Shared Sub Main() RemotingConfiguration.Configure("Listener.exe.config", False) Console.WriteLine("Listening for requests. Press enter to exit...") Console.ReadLine() End Sub End Class public class Listener { public static void Main() { RemotingConfiguration.Configure("Listener.exe.config", false); Console.WriteLine("Listening for requests. Press enter to exit..."); Console.ReadLine(); } }
Copiez le fichier RemotableType.dll généré dans Comment : générer un type accessible à distance dans le répertoire
remoting\listener
. L'application hôte doit référencer cet assembly. Compilez cette classe dans un fichier exécutable en tapant la commande suivante :vbc /r:RemotableType.dll Listener.vb csc /noconfig /r:RemotableType.dll Listener.cs
Vous avez maintenant un assembly appelé
Listener.exe
. Essayez de l'exécuter pour voir si la configuration fonctionne. Une boîte de dialogue de sécurité peut s'afficher si un pare-feu bloque le port 8989. Dans ce cas, cliquez sur le bouton « Débloquer » pour ouvrir temporairement ce port.Pour plus d'informations sur l'utilisation du type accessible à distance, consultez Comment : générer une application cliente.
Exemple
' Listener.vb
Public Class Listener
Public Shared Sub Main()
RemotingConfiguration.Configure("Listener.exe.config", False)
Console.WriteLine("Listening for requests. Press enter to exit...")
Console.ReadLine()
End Sub
End Class
// Listener.cs
using System;
using System.Runtime.Remoting;
public class Listener
{
public static void Main(string[] args)
{
RemotingConfiguration.Configure("Listener.exe.config", false);
Console.WriteLine("Listening for requests. Press enter to exit...");
Console.ReadLine();
}
}
Voir aussi
Tâches
Comment : générer une application d'hébergement
Référence
Schéma des paramètres d'accès distant
Concepts
Configuration d'applications distantes
Activation serveur
Autres ressources
Génération d'une application d'accès distant .NET Framework de base
Copyright ©2007 par Microsoft Corporation. Tous droits réservés.