Google Chrome et IE8 (entre autres) visent à fournir une plus grande fiabilité/stabilité en isolant chaque onglet (page web) dans un processus séparé (trop simplifié, je sais). Il semblerait que ce soit beaucoup plus lourd que plusieurs threads, mais a l'avantage majeur d'un crash dans un processus ne faisant pas tomber l'ensemble de l'application.Conception multi-processus Chrome/IE8, est-ce possible dans .NET?
Il semble que l'architecture de processus multiple a longtemps été utilisée dans les applications côté serveur (par exemple les serveurs Web), mais il s'agit de processus sans interface graphique dédiée. Il est intéressant qu'il soit maintenant utilisé dans les interfaces utilisateur des applications de bureau.
Comment est-ce que j'irais mettre en application ceci dans une application de Windows Forms .NET par exemple? Est-ce même possible? Process.Start() est un premier endroit évident à regarder, mais l'interface graphique du nouveau processus n'est pas étroitement intégrée à l'interface graphique de l'application hôte. C'est une nouvelle application autonome, pas un sous contrôle/fenêtre de l'application hôte, comme c'est le cas avec Chrome/IE8.
(Pour les personnes intéressées Scott Hanselmann a écrit une bonne introduction à la IE8 multi-process architecture here..)
[Mise à jour]
Plus précisément:
Comment un séparé "sous-processus" rendre directement à l'interface utilisateur dans le "processus principal"? Est-ce que c'est effectivement ce qui se passe, ou comme cela a été suggéré dans les commentaires, est-ce que le sous-processus utilise le CIP pour demander au processus principal de le rendre?
+1, en particulier les mises en garde de la communication entre les domaines. Cela peut être beaucoup plus coûteux que ce que les développeurs attendent parfois. –
Can 2 AppDomains dans un processus unique mettre à jour l'interface utilisateur indépendamment, à savoir les onglets distincts? De plus, comme le dit Scott Hanselmann, il est toujours possible de faire tomber tout le processus d'un AppDomain. – Ash
@Ash en supposant qu'un processus/AppDomain est le processus "GUI", chargé de recevoir des commandes d'autres processus et de les refléter; et en revenant à eux, pourquoi pas? –