Partager via


Services d’hébergement

Pour devenir actif, 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 n’importe quel processus Windows qui prend en charge le code managé.

WCF fournit un modèle de programmation unifié pour la création d’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é. Dans la pratique, cela signifie que le code de vos services ressemble beaucoup à l’option d’hébergement.

Ces options d’hébergement vont de l’exécution à l’intérieur d’une application console à des environnements serveur tels qu’un service Windows s’exécutant au sein d’un processus de travail géré par Internet Information Services (IIS) ou par le service d’activation de processus Windows (WAS). Les développeurs choisissent l’environnement d’hébergement qui répond aux exigences de déploiement du service. Ces exigences peuvent dériver de la plateforme sur laquelle l’application est déployée, le transport sur lequel elle doit envoyer et recevoir des messages, ou sur le type de recyclage des processus et d’autres gestion des processus nécessaires pour garantir une disponibilité adéquate, ou sur d’autres exigences de gestion ou de fiabilité. La section suivante fournit des informations et des conseils sur les options d’hébergement.

Options d’hébergement

Self-Host dans une application managée

Les services WCF peuvent être hébergés dans n’importe quelle application managée. Il s’agit de l’option la plus flexible, car elle nécessite le moins d’infrastructure à déployer. Vous incorporez le code du service à l’intérieur du code de l’application managée, puis créez et ouvrez une instance du ServiceHost service pour rendre le service disponible. Pour plus d’informations, consultez Guide pratique pour héberger un service WCF dans une application managée.

Cette option active deux scénarios courants : les services WCF s’exécutant à l’intérieur d’applications console et les applications clientes enrichies telles que celles basées sur WPF (Windows Presentation Foundation) ou Windows Forms (WinForms). L’hébergement d’un service WCF à l’intérieur d’une application console est généralement utile pendant la phase de développement de l’application. Cela leur permet de déboguer facilement, d’obtenir facilement des informations de trace pour découvrir ce qui se passe à l’intérieur de l’application et de les déplacer facilement en les copiant vers de nouveaux emplacements. Cette option d’hébergement permet également aux applications clientes riches, telles que les applications WPF et WinForms, de communiquer avec le monde extérieur. Par exemple, un client de collaboration d’égal à égal 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 à inscrire le domaine d’application (AppDomain) qui héberge un service WCF en tant que service Windows managé (anciennement appelé service NT) afin que la durée de vie du processus du service soit contrôlée par le gestionnaire de contrôle de service (SCM) pour les services Windows. Comme l’option d’hébergement automatique, ce type d’environnement d’hébergement nécessite que du code d’hébergement soit écrit dans le cadre de l’application. Le service est implémenté à la fois en tant que service Windows et en tant que service WCF en l’obligeant à hériter de la ServiceBase classe ainsi qu’à partir d’une interface de contrat de service WCF. Le ServiceHost est ensuite créé et ouvert dans une méthode OnStart(String[]) substituée et fermée dans une méthode OnStop() substituée. Une classe d'installation qui hérite de Installer doit également être implémentée pour permettre l'installation du programme en tant que service Windows par l'outil Installutil.exe. Pour plus d’informations, consultez Guide pratique pour héberger un service WCF dans un service Windows géré. Le scénario activé par l’option d’hébergement du service Windows géré 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.

Internet Information Services (IIS)

L’option d’hébergement IIS est intégrée à ASP.NET et utilise les fonctionnalités proposées par ces technologies, telles que le recyclage des processus, l’arrêt inactif, la surveillance de l’intégrité des processus et l’activation basée sur les messages. Sur les systèmes d’exploitation Windows XP et Windows Server 2003, il s’agit de la solution recommandée pour l’hébergement d’applications de service Web qui doivent être hautement disponibles et hautement évolutives. IIS offre également la facilité de gestion intégrée attendue par les clients à partir d’un produit serveur de classe entreprise. Cette option d’hébergement nécessite que IIS soit correctement configuré, mais qu’il ne nécessite pas que le code d’hébergement soit écrit dans le cadre de l’application. Pour plus d’informations sur la configuration de l’hébergement IIS pour un service WCF, consultez Guide pratique pour héberger un service WCF dans IIS.

Les services hébergés par IIS peuvent uniquement utiliser le transport HTTP. Son implémentation dans IIS 5.1 a introduit certaines limitations dans Windows XP. L’activation basée sur les 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 processus AppDomain/Pool d’applications/Worker que les autres applications hébergées par IIS 6.0 sur Windows Server 2003. Toutefois, étant donné que 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 s’exécutant sur le même ordinateur, contrairement à IIS 5.1.

Service d’activation de processus Windows (WAS)

Le service d’activation de processus Windows (WAS) est le nouveau mécanisme d’activation de processus pour Windows Server 2008 qui est également disponible sur Windows Vista. Il conserve le modèle de processus IIS 6.0 familier (pools d’applications et activation de processus basé sur les messages) et les fonctionnalités d’hébergement (telles que la protection rapide contre les défaillances, la surveillance de l’intégrité et le recyclage), mais elle supprime la dépendance sur HTTP de l’architecture d’activation. IIS 7.0 utilise WAS pour effectuer une 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 pris en charge par WCF, 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 des processus, la protection rapide contre les défaillances et le système de configuration commun qui n’étaient disponibles que pour les applications HTTP.

Cette option d’hébergement nécessite que WAS soit correctement configuré, mais il ne vous oblige pas à écrire de code d’hébergement dans le cadre de l’application. Pour plus d’informations sur la configuration de l’hébergement WAS, consultez Guide pratique pour héberger un service WCF dans WAS.

Choisir un environnement d’hébergement

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

Environnement d’hébergement Scénarios courants Principaux avantages et limitations
Application managée (« auto-hébergée ») - Applications console utilisées pendant le développement.
- Applications clientes WPF et WinForm élaborées accédant aux services
- Flexibilité
- Facile à déployer.
- Pas une solution d’entreprise pour les services.
Services Windows (anciennement appelés services NT) - Un service WCF de longue durée hébergé en dehors d’IIS. - Durée de vie du processus de service contrôlée par le système d’exploitation, et non activée par message.
- Pris en charge par toutes les versions de Windows.
- Environnement sécurisé.
IIS 5.1, IIS 6.0 - Exécution d’un service WCF en parallèle avec du contenu ASP.NET via Internet à l’aide du protocole HTTP. - Recyclage des processus.
- Arrêt en cas d’inactivité
- Monitoring de l’intégrité de processus
- Activation basée sur les messages.
- HTTP uniquement.
Service d’activation de processus Windows (WAS) - Exécution d’un service WCF sans installer IIS sur Internet à l’aide de différents protocoles de transport. - IIS n’est pas obligatoire.
- Recyclage des processus.
- Arrêt en cas d’inactivité
- Monitoring de l’intégrité de processus
- Activation basée sur les messages.
- Fonctionne avec HTTP, TCP, canaux nommés et MSMQ.
IIS 7.0 - Exécution d’un service WCF avec ASP.NET contenu.
- Exécution d’un service WCF sur Internet à l’aide de différents protocoles de transport.
- Avantages du service WAS
- Intégré au contenu ASP.NET et IIS.

Le choix d’un environnement d’hébergement dépend de la version de Windows sur laquelle il est déployé, les transports nécessaires pour envoyer des messages et le type de processus et de recyclage du domaine d’application dont il a besoin. Le tableau suivant récapitule les données relatives à ces exigences.

Environnement d’hébergement Disponibilité de la plateforme Transports pris en charge Recyclage de processus et de domaine d'application
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 (anciennement 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
Service d’activation de processus Windows (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 approuvé compromet la sécurité. De plus, 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