Quels sont les avantages pour plusieurs servicehosts? Est-ce que l'un ServiceHost plusieurs connexions simultanées soutenir sur un point final?

StackOverflow https://stackoverflow.com/questions/2131796

Question

Je pense à l'auto-hébergement mon service WCF au lieu d'utiliser IIS. Une grande question pour moi est de savoir si je dois instancier plusieurs servicehosts comme IIS fait ou un wil suffisant.

Ne muptiple servicehosts donnent un avantage à l'exception des raisons de sécurité à l'isolement sous test?

Peut-on ServiceHost servir plusieurs connexions sur un point final en même temps?

Était-ce utile?

La solution

Il n'y a aucun avantage ou le choix, vraiment - un ServiceHost (instance de cette classe) peut accueillir exactement un service, et pour chaque service, vous avez besoin d'un hôte de service distinct. Il est 1: 1. Mapping - toujours pas d'autre choix

Mais bien sûr, votre application de service ou la console Windows NT peut avoir plusieurs objets ServiceHost actifs en même temps. Cela peut être utile si vous avez un ensemble de services qui appartiennent logiquement et ne peut pas exister sans l'autre -. Où il n'a pas de sens d'avoir un d'entre eux a commencé et l'autre pas démarré

Et oui, un hôte de service peut héberger un service qui expose plusieurs points de terminaison, et plusieurs clients peuvent se connecter sur ces points d'extrémité séparés en même temps, aucun problème. Le temps d'exécution WCF tournera un certain nombre de threads de travail pour traiter les demandes entrantes (vous pouvez limiter ceux qui ont le comportement ServiceThrottling) indépendamment les uns des autres.


Pour mettre en place et de contrôle, le nombre d'appels simultanés et demandes que vous avez, vous aurez besoin de regarder le comportement de ServiceThrottling du côté du serveur.

<behaviors>
    <serviceBehaviors>
        <behavior name="serviceThrottled">
            <serviceThrottling
                maxConcurrentCalls="16"
                maxConcurrentInstances="26"
                maxConcurrentSessions="10"/>
        </behavior>
    </serviceBehaviors>
</behaviors>

et vous avez besoin de faire référence à cette configuration de comportement de service dans votre déclaration de service, bien sûr:

<service name="YourService" behaviorConfiguration="serviceThrottled">
  .....
</service>

Ce sont les valeurs par défaut. Les explications sont les suivantes (extrait du blog de Dan Rigsby, raccourcies):

  • MaxConcurrentCalls (valeur par défaut = 16) [par message] Le nombre maximal de messages pouvant être traités activement.

  • MaxConcurrentInstances (valeur par défaut = 26) Le nombre maximal d'objets InstanceContext dans un service qui peut exécuter à la fois. Pour par session de service, il est égal au nombre maximal de sessions, pour le service par appel, il est le nombre maximum d'appels simultanés, et pour les singletons, il est inutile.

  • MaxConcurrentSessions (par défaut = 10) [par canal] Le nombre maximal de sessions qu'un service peut accepter à un moment donné. entre en jeu seulement avec des liaisons basées sur les sessions (wsHttp ou NetTcp)

Certainement vérifier aussi excellent post de blog de Dan Rigsby sur le sujet.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top