Nous avons une application qui envoie plusieurs requêtes de threads au service SOAP. Nous balayons qu'avec l'augmentation du nombre de threads, le temps d'exécution de chaque requête augmente d'un ordre. Pour comprendre pourquoi, nous avons écrit une extension SOAP - en conséquence, il est devenu clair que même avec 5 flux de 16 processeurs, le temps de sérialisation est d'environ 95% du temps de la requête, 10 threads n'attendaient pas la requête (l'heure de la requête dans 1 thread est d'environ 150 ms). Qui a rencontré un tel comportement? On soupçonne que dans le service web, ou dans le sérialiseur ayant un bloc "mort".
P.S. Sur chaque thread crée sa propre instance du web-service.
P.P.S. Désérialiser le nombre de threads ne semble pas affecter.Utilisation du client de service Web dans une application multithread
0
A
Répondre
1
La solution consiste à utiliser WCF.
Le sérialiseur XML n'est simplement pas efficace. Le mieux que vous pouvez faire est de pré-générer les classes de sérialisation (avec sgen.exe), mais cela aide seulement le démarrage.
Le DataContractSerializer est beaucoup plus efficace. Cela limite la complexité du XML, en utilisant des éléments au lieu d'attributs, par exemple. Le résultat est une sérialisation et une désérialisation rapides, et la possibilité de sortir le XML en texte ou en binaire.
Questions connexes
- 1. Utilisation correcte multithread du client de référence Web .Net
- 2. Utilisation du service Web asp.net côté client
- 3. Utilisation de GeckoFX dans une application multithread
- 4. Utilisation de l'arrière-plan dans une application multithread
- 5. Utilisation du service d'authentification WCF pour une application Web
- 6. Comment implémenter la journalisation dans une application Web ASP.NET multithread (service Web asmx)
- 7. Utilisation du client SSL dans une application Ruby on Rails
- 8. Utilisation correcte de yieldIfContendedSafely() dans une application multithread Android
- 9. Utilisation du service Web en interne dans le service Web
- 10. Utilisation d'un service Web dans une application iOS
- 11. Détails du client dans le service Web
- 12. Contrôle RichTextBox dans une application multithread
- 13. Utilisation de NServiceBus dans une application Web
- 14. Génération de client de service Web dans netbeans dans une application Web à l'aide de maven
- 15. Comment accéder à une application client depuis une application web avec une application de service
- 16. Ecriture du client du service Web REST
- 17. Déploiement du client de service Web
- 18. SetCurrentDirectory dans une application multithread
- 19. Utilisation automatique du client Web de temporisation
- 20. Utilisation du plug-in Google Talk dans une application Web
- 21. authentification du client de service Web
- 22. Utilisation du service Web dans Android
- 23. Utilisation du service Web dans l'application Web ASP.NET
- 24. client Web pour service Web
- 25. Axis2 Web Service Client Generation - Types sans modification du client
- 26. service Web côté client
- 27. migration d'un service Web SOAP existant dans une application Web vers le service Web REST
- 28. Exceptions dans une application multithread.
- 29. Utilisation de client Web dans Silverlight
- 30. Utilisation de JavaHelp avec une application Web
Utilisez-vous "Ajouter Web Reference"? Ne fais pas ça. Utilisez "Ajouter une référence de service" pour utiliser une pile de client de service Web plus moderne. En outre, si vous écrivez les services, écrivez-les dans WCF et vous pouvez utiliser binaire sur TCP/IP en plus de SOAP. –
Les services existent déjà et nous ne pouvons pas le réécrire à WCF. Avez-vous rencontré ce problème? Vous avez résolu ce problème? – Boo
La solution consiste à utiliser WCF. Le XML Serializer n'est tout simplement pas efficace. Le mieux que vous pouvez faire est de pré-générer les classes de sérialisation (avec sgen.exe), mais cela aide seulement le démarrage. –