2015-08-11 2 views
0

Je suis en train d'avoir plusieurs processus. Tous font une tâche différente. Certains d'entre eux hébergent également des services WCF et interagissent avec la base de données. La plupart d'entre eux sont des processus multi-threads faisant un travail intensif. Tous ont besoin de tout le temps (ils agissent tous ensemble comme serveur). Certains processus interagissent également avec du code non géré via CLI.C#: processus unique avec plusieurs domaines d'application VS processus multiples

Récemment, je suis tombé sur un concept de «processus unique avec plusieurs domaines d'applications». Je me demande si c'est bon dans mon cas? Quelles sont les limites et les avantages de cette architecture multi-processus?

Éditer: Si un processus plante, il doit redémarrer à nouveau. Actuellement, il y a un observateur de processus pour cela.

+0

Qu'est-ce qu'un blocage de processus? – Sinatr

+0

ils doivent redémarrer à nouveau. Il y a un observateur de processus pour cela –

+0

Je le laisserais en tant que processus individuels, vous ne voulez pas qu'un processus soit en mesure d'abattre les autres. –

Répondre

0

tldr: Vous avez des dépendances natives. Continuez à utiliser des processus séparés si vous avez besoin de robustesse. À mon avis, cela dépend surtout si vous utilisez du code .Net pur ou si vous avez des dépendances natives: L'isolation des processus empêchera une panne globale en cas de crash natif (ce qui pourrait détruire tout le processus) . Même chose pour les ressources non gérées: Si vous avez une fuite de ressources non gérée quelque part, redémarrer un processus "corrige" la fuite. Mais redémarrer un appdomain ne fonctionne pas. Si vous n'utilisez que du code managé (ce qui ne vous semble pas être le cas), un processus unique avec plusieurs domaines d'application est OK, et a l'avantage de se débarrasser de la surcharge de création de processus (créer un nouveau domaine AppDomains plus léger que la création de processus)