Question

Un collègue et moi avons une discussion au sujet des services WFC lorsque le sujet de « coût » revient.

La question est la suivante:

Étant donné qu'un service WCF IIS hébergé et un service WCF hébergé par Windows service font exactement la même chose, quel service sera plus « coûteux » en ce qui concerne les cycles de mémoire et CPU si les deux acceptent la même charge?

Nous ne sommes pas préoccupés par le codage initial de démarrage, d'installation ou de configuration (à laquelle IIS semble adapté pour offrir une expérience plus simple), juste le coût bare-bones de l'exécution des services.

Était-ce utile?

La solution

Je ne peux pas fournir des chiffres concrets, mais si cela est grande préoccupation, vous devriez certainement faire des tests de performance pour être sûr. Pour un service WCF HTTP typique, toutes les demandes seront traitées initialement par http.sys dans Windows, puis envoyés au processus approprié. Que ce soit ou non votre service est hébergé dans IIS ou autonome ne sera pas question presque autant que les paramètres de configuration spécifiques WCF que vous utilisez, par rapport à chaque appel, par session ou configuration singleton, et les limites de taille de la demande et la limitation de la demande.

Je me concentrerais sur la facilité d'utilisation et ce qui est plus logique que strictement sur les chiffres de performance, car ils devraient être à peu près les mêmes.

Bottom line:. Utiliser tout ce qui est plus pratique, test de performance en cas de besoin

Autres conseils

Une très importante considération de la performance entre le service IIS ou Windows basé d'hébergement pour WCF, est de type obligatoire. IIS ne supporte que les liaisons WCF qui fonctionnent sur HTTP, tels que wsHttpBinding. basicHttpBinding, etc.

les liaisons non-Http sont généralement connus pour avoir de meilleures performances, comme le netTcpBinding (nécessite à la fois le service et le client doit être basée sur WCF je crois) ou NetNamedPipeBinding (le plus rapide, mais le service / client doit être sur la même machine). Ceux-ci ont bien sûr leurs propres limites, en particulier avec la flexibilité.

Voici une bonne vue d'ensemble: WCF Reliure de performance

Je sais que cela ne répond pas complètement à votre question, mais je voudrais partager mon expérience.

J'ai une application console Windows que lorsque prévu appelle les services WCF hébergés dans IIS. Dans cette architecture IIS est en réalité tout à fait inutile et juste un composant supplémentaire à la solution globale. Il a été vraiment inclus dans la solution pour des raisons de marketing, pour renforcer le produit, et non pour des raisons techniques.

Ce sont les principaux problèmes que je fais face, et pourquoi je l'aurais évité d'utiliser IIS si je pouvais pour des raisons techniques, et cela vaut pour mon expérience. S'il vous plaît noter: Je ne dis pas que l'hébergement de services WCF dans IIS est une mauvaise idée. Je donne simplement mes pensées du produit sur lequel je travaille actuellement.

  1. vu IIS dans les moyens de boucle ayant un autre système dans la solution globale. Cela ajoute de la complexité à votre déploiement. Certains clients ont d'autres IIS6 fonctionnent 7. Bien que ces différences peuvent sembler faible sur la surface. Ne vous méprenez pas, ils sont toujours différents, ce qui signifie que vous ajoutez plus de potentiel pour les différences d'environnement si vous déployez votre produit à différents clients. Ne sous-estimez pas ces différences. Ive même avoir des clients d'essayer d'exécuter mes services WCF dans une collection de sites SharePoint (duh!) Le point est beaucoup plus que vous pensez peut aller mal.
  2. IIS a aussi une considération AppPool, ce qui pourrait être configuré en fonction de la complexité de votre produit. Ce AppPool a besoin d'une identité pour fonctionner sous, en ajoutant plus de complexité à nouveau à votre solution globale.
  3. J'ai eu quelques problèmes où un seul service fileté a parfois « intéressant » - Enfiler messages d'abandon. Alors que je suis encore à essayer de comprendre la cause exacte, dans le dos de mon esprit j'espère sincèrement que ce n'est pas IIS en quelque sorte lié. Le point est que je ne voudrais pas que cette considération si j'éliminé IIS de la solution globale.
  4. J'ai entendu des discussions que IIS est un environnement d'hébergement plus robuste pour les services WCF vs'autonome. Je ne suis pas tout à fait sûr que cela tient tout poids. Si vous savez ce que vous faites il devrait y avoir aucune raison pour que votre'autonome service peu fiable. Mais je pense qu'il est plus de travail dès le départ pour mettre en œuvre certaines des fonctionnalités automatiques que vous obtenez dans IIS, par exemple le recyclage WP.
  5. Je ne suis pas satisfaits dans l'ensemble IIS dans la boucle, mais sa douleur quand je ramenez le produit pour le déploiement, et les consultants sans formation technique solide doivent configurer l'application IIS. Habituellement, quelque chose peut et va mal, et implique quelqu'un avec plus d'expérience technique à l'étape et résoudre. Si vous êtes travailleur autonome, vous pouvez emballer l'hébergement beaucoup plus facilement votre application pour le déploiement.
  6. Désolé de répéter, mais si vous allez pour IIS, vous aurez 2 applications dans votre solution plutôt que 1, même si le côté commercial de votre organisation ne verra l'application comme une unité d'affaires, pour l'essentiel ne pas comprendre toute la complexité de la solution vous mettre en œuvre. Par exemple: Pourquoi est-ce que nous avons 2 fichiers de configuration? Pourquoi est-ce que nous avons à la configuration du courrier deux fois? Pourquoi est-ce que nous devons déployer des DLL à 2 emplacements. Ces questions sont posées beaucoup.
  7. Enfin je pensais que je voudrais mentionner si vous travaillez à distance ou sur VPN pour déployer à ses clients, la situation est pire encore, parfois, le consultant a accès aux zones sensibles que vous ne voulez pas. En tant que développeur essayer d'éliminer autant que possible les bagages supplémentaires à partir de votre solution globale. Permet de mentionner également l'administrateur du système peut parfois effectuer une réinitialisation IIS pratique, si votre application est hébergé aux côtés d'autres, ils remis à zéro vos services.

systèmes moins dans mon expérience = moins peuvent aller mal. Mais vous devez décider si vous avez les compétences nécessaires pour mettre en œuvre des services de'autonome fiables. Tout cela à son tour, se rapporte directement au coût du développement, le déploiement et la maintenance.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top