Existe-t-il un moyen de configurer un service WCF pour créer un nouveau thread pour gérer toute nouvelle demande entrante?Service WCF qui crée un nouveau thread pour chaque nouvelle demande
Répondre
Non, car vous ne voudrez jamais faire cela. Qu'est-ce que vous essayez vraiment de réaliser?
EDIT
Sur la base de plus d'informations à venir dans, voici ce que je pense.
Si vous voulez simplement un "état collant" par requête, vous devez utiliser l'état sur l'instance et utiliser InstanceContextMode.PerCall, conformément à la réponse de marc_s.
Si vous avez besoin d'un état pour le stockage local-thread pour votre appel, vous pouvez utiliser ICallContextInitializer comme un moyen de placer l'état sur le thread sur lequel WCF choisit d'appeler votre méthode (et nettoyer l'état du thread quand l'appel se termine).
Mais vous ne devriez pas vous soucier de "quel fil". WCF va gérer cela avec un pool de threads en votre nom.
Pourriez-vous expliquer un peu plus? –
L'idée est de partager des sessions db, des informations d'identification, etc. dans une requête en les stockant dans ThreadContext. Cela nous aidera à faire des reculs, etc. – Nazgul
Bien sûr, vous pouvez - c'est même la meilleure pratique recommandée! Le ServiceHost a un pool de threads de travail pour ce but précis –
Oui, vous pouvez le faire - c'est ce qu'on appelle la gestion "par appel" des demandes. Le ServiceHost créera une nouvelle instance de votre classe de service pour chaque demande entrant pour gérer cette demande.
Pour ce faire, vous devez définir votre classe de service (l'une implémentation de l'interface de service) pour être « Percall » - vous faites cela en appliquant un attribut de votre classe de service:
[ServiceBehavior(InstanceContextMode=InstanceContextMode.PerCall)]
public class YourService : IYourService
{
...
}
Marc
Cela va créer une nouvelle instance de service par appel, mais ne génère pas un nouveau thread par appel. – Nazgul
mais il affectera la nouvelle instance de service à un thread de travail pour gérer la requête ...... –
Je ne pense pas que vous pouvez faire plus que cela. Je ne connais aucun paramètre dans WCF pour créer spécifiquement un nouveau fil pour chaque demande. Et pourquoi voudriez-vous vraiment ?? Créer un thread à part entière est une opération assez coûteuse - pourquoi ne pas utiliser le pool de threads de travail déjà existant? –
dépend de ce que vous voulez exactement, mais le comportement de service suivant résoudrons:
ServiceBehavior:
ConcurrencyMode=ConcurrencyMode.Multiple
InstanceContextMode=InstanceContextMode.Single
Votre classe sera un singleton, mais tous les appels aux méthodes se déroulera dans un SEPAR mangé le fil. Si vous avez besoin de synchronisation, vous devez le faire manuellement.
N'oubliez pas non plus de vous pencher sur la limitation pour être conscient des problèmes de performances potentiels.
- 1. WCF Service & demande
- 2. Comment écrire un service WCF multi-thread transactionnel consommant MSMQ
- 3. WCF est-il utile pour créer un client qui utilise un service Web non-WCF?
- 4. Ajax demande à nouveau
- 5. Le nouveau thread bloque toujours l'UI-Thread
- 6. AppDomains sont créés pour chaque demande?
- 7. Meilleure pratique pour un grand service WCF?
- 8. Fonction qui crée un horodatage dans C#
- 9. Comment créer un service D-Bus qui crée dynamiquement plusieurs objets?
- 10. VB9 Nouveau thread avec plusieurs paramètres
- 11. WCF dans un service Windows
- 12. Qu'est-ce qui provoquerait un service WCF pour renvoyer un objet de type "objet"
- 13. Liaison Wcf pour le service Web
- 14. Service WCF pour renvoyer iCal
- 15. taille de package de demande/réponse WCF
- 16. Déplacement du service WCF de IIS vers un service Windows
- 17. Service WCF unique pour plusieurs connexions client
- 18. Service WCF RESTful sur Service WCF standard
- 19. Que nommer un service WCF?
- 20. C# WCF: Service WCF renvoyant une (404) demande incorrecte lors de l'envoi d'un tableau d'éléments
- 21. Comment promouvoir un nouveau produit/service?
- 22. WCF un service ou plusieurs services
- 23. Gestion des exceptions de thread dans WCF
- 24. Consommer un service REST de WCF
- 25. Impossible d'ajouter un service de référence à tout service WCF
- 26. WCF: comment ajouter un ServiceThrottlingBehavior à un service WCF?
- 27. Ai-je besoin d'un nouveau fichier de clés .snk pour chaque version d'une bibliothèque nommée forte?
- 28. Win32Exception @ ServiceHost.Open() pour le service WCF
- 29. MySQL Impossible de créer un nouveau thread (errno 12)
- 30. Comment configurer les clients pour un service wcf?
Est-ce que WCF ne fait pas déjà ça? – Jehof
non, pas par défaut – Nazgul