Partager via


Hébergement dans une application de service Windows

Les services Windows (autrefois connus comme services Windows NT) fournissent un modèle de processus particulièrement adapté aux applications qui doivent exister dans un exécutable à durée d'exécution longue et n'affichent aucune forme d'interface utilisateur. La durée de vie de processus d'une application de service Windows est gérée par le gestionnaire de contrôle des services (SCM) qui vous autorise à démarrer, arrêter et suspendre les applications de service Windows. Vous pouvez configurer un processus de service Windows pour qu'il démarre automatiquement lorsque l'ordinateur démarre, créant ainsi un environnement d'hébergement adapté pour les applications « toujours actives ». Pour plus d'informations sur les applications de service Windows, consultez Applications de service Windows (page pouvant être en anglais).

Les applications qui hébergent des services Windows Communication Foundation (WCF) à durée d'exécution longue partagent de nombreuses caractéristiques avec les services Windows. Notamment, les services WCF sont des exécutables du serveur à durée d'exécution longue qui n'interagissent pas directement avec l'utilisateur et, par conséquent, n'implémentent aucune forme d'interface utilisateur. Par conséquent, l'hébergement de services WCF dans une application de service Windows est l'une des solutions pour construire des applications WCF à durée d'exécution longue solides.

Souvent, les développeurs de WCF doivent décider s'il faut héberger leur application dans une application de service Windows, dans les services IIS (Internet Information Services) ou bien dans l'environnement d'hébergement de service d'activation de processus de Windows (WAS). Vous pouvez envisager d'utiliser des applications de service Windows dans les conditions suivantes :

  • Votre application requiert l'activation explicite. Par exemple, vous devez utiliser des services Windows lorsque votre application doit démarrer automatiquement quand le serveur démarre au lieu d'être démarrée dynamiquement en réponse au premier message entrant.
  • Le processus qui héberge votre application doit rester actif une fois démarré. Une fois démarré, un processus de service Windows reste actif à moins qu'il ne soit explicitement interrompu par l'administrateur du serveur via le gestionnaire de contrôle des services. Les applications hébergées dans IIS ou WAS peuvent être démarrées et arrêtées dynamiquement pour une utilisation optimale des ressources système. Les applications qui requièrent un contrôle explicite sur la durée de vie de leur processus d'hébergement doivent utiliser des services Windows au lieu d'IIS ou WAS.
  • Votre service WCF doit s'exécuter sous Windows Server 2003 et utiliser des transports autres que HTTP. Sous Windows Server 2003, l'environnement d'hébergement IIS 6.0 est restreint uniquement à la communication HTTP. Les applications de service Windows ne sont pas soumises à cette restriction et peuvent utiliser tous les supports WCF de transport, y compris net.tcp, net.pipe et net.msmq.

Pour héberger WCF dans une application de service Windows

  1. Créez une application de service Windows. Vous pouvez écrire des applications de service Windows en code managé à l'aide des classes dans l'espace de noms System.ServiceProcess. Cette application doit inclure une classe qui hérite de ServiceBase.

  2. Liez la durée de vie des services WCF à la durée de vie de l'application de service Windows. En général, vous souhaitez que les services WCF hébergés dans une application de service Windows deviennent actifs lorsque le service d'hébergement démarre, cessent d'écouter les messages lorsque le service d'hébergement est arrêté et interrompent le processus d'hébergement lorsque le service WCF rencontre une erreur. Cela peut être accompli de la façon suivante :

    • Remplacez OnStart pour ouvrir une ou plusieurs instances de ServiceHost. Une application de service Windows unique peut héberger plusieurs services WCF qui démarrent et s'arrêtent en tant que groupe.
    • Remplacez OnStop pour appeler Closed sur ServiceHost tout service WCF actif démarré pendant OnStart.
    • Abonnez-vous à l'événement Faulted de ServiceHost et utilisez la classe ServiceController pour interrompre l'application de service Windows en cas d'erreur.

    Les applications de service Windows qui hébergent les services WCF sont déployées et gérées de la même façon que les applications de service Windows qui n'utilisent pas WCF.

Voir aussi

Tâches

Comment : héberger un service WCF dans un service Windows managé

Référence

System.ServiceProcess

Autres ressources

Windows Service Host
Procédure pas à pas : Création d'une application de service Windows dans le Concepteur de composants
Architecture de programmation d'application de service