J'ai créé un service WCF simple dans Visual Studio 2017, .NET 4.5. (Ajouter un nouvel élément -> Service WCF). Il a changé le web.config
et défini le aspNetCompatibilityEnabled
sur true
. Ainsi, le service s'exécute en mode de compatibilité ASP.NET.Le service WCF OneWay ralentit lorsque aspNetCompatibilityEnabled est défini sur false
<serviceHostingEnvironment aspNetCompatibilityEnabled="true"
multipleSiteBindingsEnabled="true" />
Le service a une méthode OneWay
:
[OperationContract(IsOneWay = true)]
void DoWork();
La mise en œuvre ressemble à ceci:
public void DoWork()
{
var threadId = Thread.CurrentThread.ManagedThreadId;
Debug.WriteLine("Starting..." + threadId);
Thread.Sleep(TimeSpan.FromSeconds(30));
Debug.WriteLine("Finished..." + threadId);
}
Cela fonctionne comme prévu. On peut envoyer des demandes et ensuite retourner immédiatement sans et répondre. Je peux envoyer beaucoup de demandes et revenir immédiatement.
Cependant, si je change aspNetCompatibilityEnabled="false"
et mis
[AspNetCompatibilityRequirements(
RequirementsMode = AspNetCompatibilityRequirementsMode.NotAllowed)]
sur la classe de service, le service ralentit. Il ne peut gérer que 3 demandes et le 4ème attend. Le service ne revient pas sans une réponse immédiatement. On dirait qu'il ne peut gérer que 3 requêtes à la fois.
Qu'est-ce qui explique ce comportement? Chaque paramètre est la valeur par défaut, rien de spécial n'est défini dans web.config
.
était le service plus rapide et était-il gérer plus de 3 demandes avant de la aspNetCompatibility false – BipinR
Oui, exactement, c'est le point. –