Je suis en train d'écrire une application au niveau de l'entreprise utilisant les services WCF et NetTCP. J'ai d'abord choisi NetTCP par curiosité, mais plus tard, j'ai déterminé que c'était la meilleure option pour moi car je peux avoir des services qui durent 5+ heures pour retourner les résultats en raison de la quantité de données impliquées.Performance d'hébergement de WCF
La façon dont je crée actuellement mes services est un processus en plusieurs étapes. J'ai un élément de configuration (using System.Configuration) qui spécifie certains trucs par défaut (numéro de port, nom de serveur pour les clients qui se connectent, si activer HTTP aussi bien que NetTCP, etc.) et qui a une collection de "services" dessous il. Par exemple, voici ce qu'un basique ressemble à:
<serverConfiguration tcpListenerPortNumber="60000" httpGetEnabled="true" httpListenerPortNumber="6000" serverName="localhost" retryEnabled="true" retryInterval="5" maxRetryAttempts="3">
<services>
<add virtualDirectory="Service1" applicationName="Service1" assembly="SampleService" type="SampleService.Service1" />
</services>
</serverConfiguration>
Fondamentalement, ce qui se passe ici est mon service Windows démarre et regarde tout dans la collection < services/> et engendre hors un fil par service pour accélérer le temps de démarrage et chaque thread contient un AppDomain où le service vit vraiment, donc si un service a une sorte de faute, il ne fait pas tomber le système.
Le "problème" que je rencontre est que cette application héberge environ 20 services et qu'il faut 15 à 20 secondes pour que tous les services soient opérationnels. J'ai fait les threads et les pièces d'AppDomain pour l'abaisser à cette valeur (utilisé pour prendre plus d'une minute car chaque service a été ouvert séquentiellement) mais il me semble que cela pourrait aller beaucoup plus vite.
Quelqu'un a des suggestions? Google Bing a une pléthore d'exemples pour l'hébergement d'un service, mais je ne trouve pas beaucoup là-bas pour les applications du monde réel (malheureusement, "Hello World" n'est pas attrayante pour les utilisateurs finaux). Si vous hébergez actuellement plusieurs services via un service Windows et NetTCP, comment le faites-vous?
Est-ce que _need_ doit être plus rapide que cela? Si cela ne démarre qu'une fois par jour, cela fait 20 secondes par jour. Ce n'est pas long. –
C'est surtout pendant le débogage que c'est plus lent, donc c'est la zone principale dans laquelle j'essaie d'extraire les performances. Les services eux-mêmes fonctionneront indéfiniment (moins les redémarrages et tels bien sûr). – RubyHaus