Hébergement de services

Pour être activé, un service doit être hébergé dans un environnement d'exécution qui le crée et contrôle son contexte et sa durée de vie. Les services Windows Communication Foundation (WCF) sont conçus pour s'exécuter dans tout processus Windows qui prend en charge le code managé.

WCF est le modèle de programmation unifié de Microsoft permettant de générer des applications orientées service. Ce modèle de programmation reste cohérent et est indépendant de l'environnement d'exécution dans lequel le service est déployé. En pratique, cela signifie que le code de vos services est essentiellement le même quelle que soit l'option d'hébergement.

Ces options d'hébergement vont de l'exécution dans une application console à une exécution dans des environnements serveur tels qu'un service Windows dans un processus de travail managé par les services IIS (Internet Information Services) ou WAS (Windows Process Activation Services). Les développeurs choisissent l'environnement d'hébergement qui répond aux spécifications de déploiement du service. Ces spécifications peuvent dériver de la plateforme sur laquelle l'application est déployée, du transport sur lequel envoyer et recevoir des messages ou du type de recyclage de processus et tout autre gestion de processus indispensable pour garantir la disponibilité adéquate, ou d'autres impératifs de gestion ou de fiabilité. La section suivante fournit des informations et des instructions sur les options d'hébergement.

Options d'hébergement

Auto-hébergement dans une application managée

Les services WCF peuvent être hébergés dans toute application managée. Il s'agit de l'option la plus souple car l'infrastructure à déployer est la plus faible. Vous incorporez le code pour le service à l'intérieur du code d'application managée, puis créez et ouvrez une instance de ServiceHost pour rendre le service disponible. Pour plus d'informations, consultez Comment : héberger un service WCF dans une application managée.

Cette option active deux scénarios courants : les services WCF qui s'exécutent à l'intérieur d'applications console et des applications clientes élaborées telles que celles basées sur Windows Presentation Foundation (WPF) ou Windows Forms (WinForms). L'hébergement d'un service WCF à l'intérieur d'une application console est en général utile pendant la phase de développement de l'application. Cela simplifie son débogage, l'obtention des informations de suivi pour déterminer ce qui se passe à l'intérieur de l'application, et son déplacement en la copiant vers un nouvel emplacement. Cette option d'hébergement permet aux applications clientes élaborées, telles que les applications WPF et WinForms, de communiquer facilement avec le monde extérieur. Par exemple, un client de collaboration de réseau pair à pair qui utilise WPF pour son interface utilisateur et héberge également un service WCF qui permet à d'autres clients de se connecter et de partager des informations.

Services Windows managés

Cette option d'hébergement consiste à enregistrer le domaine d'application (AppDomain) qui héberge un service WCF comme un service Windows managé (autrefois appelé un service NT) afin que la durée de vie de processus du service soit contrôlée par le Gestionnaire de contrôle des services (SCM) pour les services Windows. Comme l'option d'auto-hébergement, ce type d'environnement d'hébergement requiert que du code d'hébergement soit écrit dans le cadre de l'application. Le service est implémenté comme un service Windows et comme un service WCF en lui faisant hériter de la classe ServiceBase ainsi que d'une interface de contrat de service WCF. Le ServiceHost est ensuite créé et ouvert dans une méthode OnStart substituée et fermée dans une méthode OnStop substituée. Une classe Installer qui hérite de Installer doit également être implémentée pour permettre au programme d'être installé comme un service Windows par l'outil Installutil.exe. Pour plus d'informations, consultez Comment : héberger un service WCF dans un service Windows managé. Le scénario activé par l'option d'hébergement du service Windows managé est celui d'un service WCF de longue durée hébergé en dehors d'IIS dans un environnement sécurisé qui n'est pas activé par message. La durée de vie du service est contrôlée à la place par le système d'exploitation. Cette option d'hébergement est disponible dans toutes les versions de Windows.

Services Internet (IIS)

L'option d'hébergement IIS est intégrée à ASP.NET et utilise les fonctionnalités offertes par ces technologies, telles que le recyclage de processus, l'arrêt inactif, le contrôle d'état de processus et l'activation basée sur des messages. Sur les systèmes d'exploitation Windows XP et Windows Server 2003, il s'agit de la solution par défaut pour héberger les applications de service Web qui sont fortement sollicitées et doivent être très évolutives. Les services IIS offrent également la facilité de gestion intégrée que les clients attendent d'un produit serveur de classe d'entreprise. Cette option d'hébergement requiert que les services IIS soient configurés correctement, mais elle ne requiert pas que le code d'hébergement soit écrit dans le cadre de l'application. Pour plus d'informations sur le mode de configuration de l'hébergement IIS pour un service WCF, consultez Comment : héberger un service WCF dans IIS.

Notez que les services hébergés par IIS peuvent utiliser uniquement le transport HTTP. Son implémentation dans IIS 5.1 a introduit des limitations dans Windows XP. L'activation basée sur des messages fournie pour un service WCF par IIS 5.1 sur Windows XP empêche tout autre service WCF auto-hébergé sur le même ordinateur d'utiliser le port 80 pour communiquer. Les services WCF peuvent s'exécuter dans le même domaine d'application/pool d'applications/processus de traitement que d'autres applications en cas d'hébergement par IIS 6.0 sur Windows Server 2003. Cependant, dans la mesure où WCF et IIS 6.0 utilisent la pile HTTP en mode noyau (HTTP.sys), IIS 6.0 peut partager le port 80 avec d'autres services WCF auto-hébergés qui s'exécutent sur le même ordinateur, contrairement à IIS 5.1.

Windows Process Activation Service (WAS)

Le service WAS (Windows Process Activation Service) est le nouveau mécanisme d'activation de processus pour Windows Server 2008, également disponible sur Windows Vista. Il conserve le modèle de processus IIS 6.0 classique (pools d'applications et activation de processus basée sur des messages) et les fonctionnalités d'hébergement (telles que la protection rapide contre les pannes, le contrôle d'état et le recyclage), mais il supprime la dépendance sur HTTP de l'architecture d'activation. IIS 7.0 utilise le service WAS pour accomplir l'activation basée sur des messages via HTTP. Les composants WCF supplémentaires s'intègrent aussi dans le service WAS pour assurer l'activation basée sur des messages via les autres protocoles que WCF prend en charge, tels que TCP, MSMQ et les canaux nommés. Cela permet aux applications qui utilisent des protocoles de communication d'utiliser les fonctionnalités IIS (telles que le recyclage de processus, la protection rapide contre les pannes et le système de configuration commun) qui étaient réservées exclusivement aux applications basées sur HTTP.

Cette option d'hébergement requiert que le service WAS soit configuré correctement, mais elle ne requiert pas que le code d'hébergement soit écrit dans le cadre de l'application. Pour plus d'informations sur le mode de configuration de l'hébergement WAS, consultez Comment : héberger un service WCF dans WAS.

Choix d'un environnement d'hébergement

Le tableau suivant résume certains avantages et scénarios clés associés à chacune des options d'hébergement.

Environnement d'hébergement Scénarios courants Avantages et limitations clés

Application managée (« auto-hébergée »)

  • Applications consoles utilisées pendant le développement.
  • Applications clientes WPF et WinForm élaborées accédant aux services.
  • Souple.
  • Facile à déployer.
  • Ne constitue pas une solution d'entreprise pour les services.

Services Windows (autrefois appelés services NT)

  • Service WCF de longue durée hébergé en dehors d'IIS.
  • Durée de vie des processus de service contrôlée par le système d'exploitation, non pas activée par des messages.
  • Pris en charge par toutes les versions de Windows.
  • Environnement sécurisé.

IIS 5.1, IIS 6.0

  • Exécution d'un service WCF côte à côte avec un contenu ASP.NET sur Internet à l'aide du protocole HTTP.
  • Recyclage de processus.
  • Arrêt inactif.
  • Contrôle d'état de processus.
  • Activation basée sur des messages.
  • HTTP uniquement.

Windows Process Activation Service (WAS)

  • Exécution d'un service WCF sur Internet sans installer IIS qui utilise différents protocoles de transport.
  • IIS n'est pas requis.
  • Recyclage de processus.
  • Arrêt inactif.
  • Contrôle d'état de processus.
  • Activation basée sur des messages.
  • Fonctionne avec HTTP, TCP, les canaux nommés et MSMQ.

IIS 7.0

  • Exécution d'un service WCF avec du contenu ASP.NET.
  • Exécution d'un service WCF sur Internet qui utilise différents protocoles de transport.
  • Avantages du service WAS.
  • Intégré avec du contenu ASP.NET et IIS.

Le choix d'un environnement d'hébergement dépend de la version de Windows sur lequel il est déployé, des transports requis pour envoyer les messages et du type de recyclage de processus et de domaine d'application requis. Le tableau suivant résume les données liées à ces spécifications.

Environnement d'hébergement Disponibilité de plateforme Transports pris en charge Recyclage de processus et AppDomain

Applications managées (« auto-hébergées »)

Windows XP, Windows Server 2003, Windows Vista,

Windows Server 2008

HTTP,

net.tcp,

net.pipe,

net.msmq

Non

Services Windows (autrefois appelés services NT)

Windows XP, Windows Server 2003, Windows Vista,

Windows Server 2008

HTTP,

net.tcp,

net.pipe,

net.msmq

Non

IIS 5.1

Windows XP

HTTP

Oui

IIS 6.0

Windows Server 2003

HTTP

Oui

Windows Process Activation Service (WAS)

Windows Vista, Windows Server 2008

HTTP,

net.tcp,

net.pipe,

net.msmq

Oui

Il est important de noter que l'exécution d'un service ou d'une extension à partir d'un hôte non fiable compromet la sécurité. Notez aussi que lors de l'ouverture d'un ServiceHost lorsque l'emprunt d'identité est activé, une application doit garantir que l'utilisateur n'est pas déconnecté, par exemple en mettant en cache le WindowsIdentity de l'utilisateur.

Voir aussi

Tâches

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

Concepts

Configuration requise WCF
Cycle de vie de la programmation de base
Implémentation de contrats de service