Google ChromeとIE8は、タブ(ウェブページ)を別々のプロセスで分離することで信頼性と安定性を高めることを目指しています。Chrome/IE8のマルチプロセス設計は、.NETで可能ですか?
これは、複数のスレッドよりはるかに重いように見えますが、1つのプロセスでクラッシュしてアプリケーション全体を停止させないという大きな利点があります。
複数のプロセスアーキテクチャーは長い間、サーバー側のアプリケーション(Webサーバーなど)で使用されてきましたが、専用のGUIのないプロセスです。デスクトップアプリケーションのユーザーインターフェイスに採用されているのは興味深いことです。
Windows Forms .NETアプリケーションでこれを実装するにはどうすればよいですか?それも可能ですか?
Process.Start()は最初の場所ですが、新しいプロセスのGUIはホストアプリケーションのGUIと緊密に統合されていません。これは、Chrome/IE8のように、ホストアプリケーションのサブコントロール/ウィンドウではなく、新しいスタンドアロンアプリケーションです。
(。誰も興味を持っスコットHanselmannのが良いイントロを書いたIE8 multi-process architecture hereにするため。)
[更新]
具体的:
どのように別の "サブプロセス" とは、直接レンダリングすることができます"メインプロセス"内のUI?これは実際に何が起こっているのか、あるいはコメントで示唆されているように、サブプロセスはIPCを使ってメインプロセスにそれをレンダリングするよう依頼していますか?
+1、ドメイン間での通信の特に警告。これは、開発者が時々期待するよりもはるかにコストがかかることがあります。 –
1つのプロセス内の2つのAppDomainsでユーザーインターフェイスを個別に更新できますか?つまり、タブを個別に更新できますか? Scott Hanselmann氏によると、AppDomainからすべてのプロセスを終了することは可能です。 – Ash
@Ashは1つのプロセス/ AppDomainが「GUI」プロセスであると仮定し、他のプロセスからのコマンドを受け取り、それらを反映する役割を担います。彼らに戻ってきて、どうして? –