2013-08-08 2 views
0

Résumé: Comment demandes parallèle à un service Web sont gérées lorsque l'hôte est un service Windows?Service Web dans un service Windows: Multithreading

Je connais un service Web SOAP peut être hébergé au sein de IIS, une application console ou une application WinForms. Pour une raison ou une autre, ces hôtes ne sont pas disponibles et je dois héberger mon service Web dans un service Windows.

En cas d'IIS, j'ai lu que le serveur Web lui-même gère plusieurs requêtes parallèles et leur assigne différents fils. J'ai besoin de comprendre comment ce multithreading fonctionne en cas de service Windows. Quel composant en est responsable? Est-ce basé sur la piscine ou quelque chose? Comment et où puis-je configurer la taille du pool, etc.?

Répondre

0

Le terme 'service Web' est un large. S'il vous plaît examiner Web Service vs WCF Service pour clarification. Dans le cas où votre question concerne les services basés sur WCF, il y a un bon article sur la concurrence ici: http://www.codeproject.com/Articles/89858/WCF-Concurrency-Single-Multiple-and-Reentrant-and.

Pour répondre à vos questions:

Le System.ServiceModel.ServiceHost est responsable de l'hébergement du service. L'attribut ServiceBehavior dans la configuration de l'application ou en code peut être utilisé pour définir le comportement désiré, comme suit:

[ServiceBehavior(ConcurrencyMode=ConcurrencyMode.Multiple)] 
var yourServiceHost = new ServiceHost(yourService); 

Les fils sont créés à partir du pool de threads. Vous pouvez contrôler le nombre de threads utilisés avec System.ServiceModel.Description.ServiceThrottlingBehavior ou dans la configuration de l'application:

<serviceBehaviors> 
<behavior name="serviceBehavior"> 
    <serviceThrottling maxConcurrentInstances="<your_max_instances>" maxConcurrentSessions="<your_max_concurrent_sessions>" /> 
</behavior> 
</serviceBehaviors> 
+0

Voilà une bonne réponse. Merci @dirkj. – dotNET

+0

Et j'héberge le service WCF dans un service Windows, donc votre hypothèse est correcte. – dotNET