Comment : héberger un service WCF dans une application managée

Pour héberger un service à l'intérieur d'une application managée, incorporez le code du service à l'intérieur du code de l'application managée, définissez un point de terminaison pour le service soit de manière impérative dans le code, soit de façon déclarative par le biais de la configuration, puis créez une instance de ServiceHost.

Pour commencer à recevoir des messages, appelez OpenServiceHost. De cette manière, vous créez et ouvrez l'écouteur pour le service. L'hébergement d'un service selon cette méthode est souvent appelé « auto-hébergement » parce que l'application managée effectue le travail d'hébergement elle-même. Pour fermer le service, appelez System.ServiceModel.Channels.CommunicationObject.Close sur ServiceHost.

Un service peut également être hébergé dans un service Windows managé, dans le service IIS (Internet Information Services), ou le service WAS (Windows Process Activation Service). Pour plus d'informations sur les options d'hébergement pour un service, consultez Hébergement de services.

L'hébergement d'un service dans une application managée est l'option la plus souple parce qu'elle requiert le moins d'infrastructure à déployer. Pour plus d'informations sur les services d'hébergement dans les applications managées, consultez Hébergement dans une application managée.

La procédure suivante montre comment implémenter un service auto-hébergé dans une application console. Pour l'exemple fonctionnel sur lequel cette procédure est basée, consultez Self Host Sample.

Pour créer un service auto-hébergé

  1. Définissez un point de terminaison de service pour le service par le biais de la configuration.

  2. Créez une interface pour le service. Consultez Comment : définir un contrat de service Windows Communication Foundation.

  3. Implémentez l'interface pour créer le type de service. Consultez Comment : implémenter un contrat de service Windows Communication Foundation. Dans l'exemple suivant, l'implémentation est appelée MathService.

  4. Créez une méthode pour démarrer le service. Dans cet exemple, la méthode Main est utilisée.

  5. Créez une instance de la classe Uri avec l'adresse de base du service. Cet exemple utilise la propriété AppSettings statique de la classe ConfigurationManager pour sélectionner une adresse de base. Veillez à ajouter une référence à System.Configuration.dll à votre projet. L'adresse de base peut être définie dans le fichier de configuration pour l'application hôte sous l'élément <appSettings>.

  6. Dans le fichier de configuration de l'application, ajoutez un élément <appSettings>. Puis, utilisez l'élément <add> avec un attribut key approprié. Dans ce cas, la valeur key correspond au paramètre passé à la propriété AppSettings dans l'étape précédente.

  7. Créez une instance de la classe ServiceHost, en passant un Type qui représente le type de service et l'URI d'adresse de base (Uniform Resource Identifier) à ServiceHost.

  8. Appelez la méthode Open sur l'objet ServiceHost.

Pour créer un point de terminaison dans la configuration

  1. Ajoutez un fichier de configuration au même répertoire que l'assembly de service. Pour plus d'informations sur sur la configuration, consultez Configuration de liaisons pour les services Windows Communication Foundation.

Exemple

L'exemple de code suivant crée un objet ServiceHost pour héberger un service de type CalculatorService, puis appelle la méthode Open sur ServiceHost. Une adresse de base est fournie dans le code, alors que le chemin d'accès relatif est fourni dans la configuration.

Pour créer un client pour le service à l'aide du ServiceMetadata Utility Tool (svcutil.exe), la liaison pour le point de terminaison doit utiliser le protocole HTTP. Pour plus d'informations sur les liaisons, consultez Utilisation de liaisons pour configurer des services et des clients et Liaisons fournies par le système. Pour l'exemple complet sur lequel cette rubrique est basée, consultez l'exemple Self-Host.

Voir aussi

Tâches

Comment : héberger un service WCF dans IIS
Comment : définir un contrat de service Windows Communication Foundation
Comment : implémenter un contrat de service Windows Communication Foundation

Référence

Uri
AppSettings
ConfigurationManager

Concepts

Hébergement de services
Utilisation de liaisons pour configurer des services et des clients
Liaisons fournies par le système

Autres ressources

Self Host
Service Metadata Utility Tool (svcutil.exe)