J'essaie de discerner la différence entre les méthodes d'activation SingleCall et Singleton lors de l'implémentation d'un serveur pour héberger un objet en utilisant .NET Remoting. Il semblerait que SingleCall ait l'inconvénient de devoir construire et nettoyer un objet pour chaque appel côté client, alors que Singleton a la limitation de ne pouvoir traiter qu'un nombre limité de requêtes simultanées. Je cherche à rendre la performance aussi bonne que possible. Lequel devrais-je choisir?Lorsque vous utilisez .NET Remoting à l'aide d'objets activés par le serveur, quels sont les compromis entre SingleCall et l'activation de Singleton?
Répondre
Par défaut, vous devez utiliser SingleCall. De plus, gardez à l'esprit que lorsque vous utilisez des objets SingleCall, vous ne pouvez pas partager l'état d'un appel à l'autre.
Je trouve ce site une bonne ressource en matière de .NET Remoting: http://www.thinktecture.com/resourcearchive/net-remoting-faq/remotingusecases
Vous avez raison. SingleCall construit l'objet pour chaque appel et peut accepter plusieurs demandes simultanées, mais les données ne peuvent pas être partagées entre les appels, tandis que Singleton construit un seul objet pour gérer plusieurs appels permettant le partage de données, mais limite les connexions simultanées. Cependant, il y a des ajustements que vous pouvez faire si vous avez un concept de la façon de construire des objets thread-safe. Tout d'abord, je suggère d'utiliser le singleton car il est créé une seule fois pour beaucoup. Cela a également l'avantage de vous permettre de stocker des informations et de les partager entre les utilisateurs qui s'y connectent sans avoir à toucher constamment un magasin extérieur. Deuxièmement, je voudrais ajouter en ajoutant le ConcurrencyMode = ConcurrencyMode.Multiple dans les ServiceBehaviors de votre service. Cela permet à plusieurs utilisateurs de frapper votre singleton simultanément. Troisièmement, nettoyez tout code qui rendrait cette classe non thread thread. Vous devez verrouiller l'objet lors de l'accès aux variables locales auxquelles plusieurs threads peuvent accéder simultanément.
Beaucoup de bonnes informations sur ces sujets peuvent être trouvés ici:
- 1. .NET Remoting côté serveur
- 2. .Net Remoting sans utiliser .Net remoting?
- 3. Quels sont les services .NET?
- 4. Quels sont les noms de méthodes/variables/classes les plus courants que vous utilisez?
- 5. Quels sont les écarts constatés entre utf8_general_ci et utf8_unicode_ci?
- 6. .NET Remoting: surveillance des événements sur le serveur
- 7. Quels sont les avantages et les inconvénients de l'utilisation de RMI ou JMS entre les niveaux Web et métier?
- 8. .net performance de contrôle du serveur de compromis
- 9. Quels outils de création d'aide utilisez-vous?
- 10. Quels SGBDR utilisez-vous avec Django et pourquoi?
- 11. Quels sont les problèmes de performances du serveur causés par les clients à faible bande passante?
- 12. Quels sont les avantages de LePUS3 par rapport à UML?
- 13. COMException lorsque vous utilisez le code de Windows API pack
- 14. Lorsque vous utilisez des objets Aggregate, utilisez-vous ou non des collections personnalisées pour les associations?
- 15. Comment utilisez-vous Excel côté serveur?
- 16. Confusion dans .net Remoting
- 17. Quels sont les paramètres optimaux pour le serveur Web Tomcat?
- 18. Quels outils SIG Open Source utilisez-vous/recommandez-vous?
- 19. Menu ASP.NET Elément de menu parent Surlignage sur Vol stationnaire lorsque les Flyouts sont activés
- 20. Quels sont les sites que les développeurs de .net visitent?
- 21. Que utilisez-vous si vous voulez vous assurer que toutes les méthodes et propriétés sont implémentées
- 22. Lorsque vous utilisez rpcgen, comment l'appelant trouve-t-il l'appelé?
- 23. Transfert de données entre le serveur et le client (Mobile)
- 24. Problème avec .Net Remoting (C#)
- 25. Quels outils utilisez-vous pour analyser du texte?
- 26. Pourquoi mon nouveau gestionnaire d'interruption PowerPC ne plante-t-il que lorsque les caches sont activés
- 27. Comment puis-je partager des classes de message entre applications lorsque vous utilisez NServiceBus?
- 28. ImportError lorsque vous utilisez Google App Engine
- 29. Quels projets ou bibliothèques de code Open Source .Net utilisez-vous?
- 30. Quels sont les algorithmes d'ordonnancement utilisés par le noyau Linux?