5

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を使ってメインプロセスにそれをレンダリングするよう依頼していますか?

答えて

3

.NETで複数のプロセスを使用すると、複数のAppDomainsを代わりに使用することをお勧めします。これは、1つの実際のWindowsプロセスを作成するだけで、複数の領域の安定性を向上させるという利点があります(つまり、AppDomainのクラッシュはアプリ全体ではなく、

オブジェクトはAppDomain境界を越えてシリアル化する必要があるため、これに関連するコストがあります。しかし、マルチプロセスモデルよりも開発が簡単になるかもしれません。

+0

+1、ドメイン間での通信の特に警告。これは、開発者が時々期待するよりもはるかにコストがかかることがあります。 –

+1

1つのプロセス内の2つのAppDomainsでユーザーインターフェイスを個別に更新できますか?つまり、タブを個別に更新できますか? Scott Hanselmann氏によると、AppDomainからすべてのプロセスを終了することは可能です。 – Ash

+0

@Ashは1つのプロセス/ AppDomainが「GUI」プロセスであると仮定し、他のプロセスからのコマンドを受け取り、それらを反映する役割を担います。彼らに戻ってきて、どうして? –

5

Google Chromeは、プロセス間通信にという名前のパイプを使用しています。

いくつかの興味深い文書がここにあります:「.NET」と名前付きパイプの詳細については http://dev.chromium.org/developers/design-documents

ちょうどそれをグーグル。

@Ash: 子プロセスは、別のWindows「デスクトップ」で実行されています。つまり、何も表示する方法がありません。 (デスクトップは難しいことです...) 私は、子プロセスレンダリングがすべてIPCを通過しなければならないと仮定しなければなりません。メイン(?)プロセスで表示されます。

私は別のWindows "デスクトップ" ここ事ことがわかった:ところで http://dev.chromium.org/developers/design-documents/multi-process-architecture

+0

それはどのようにGUIのインタラクション側を実装する上の任意のアイデア? – Ash

+0

Chromeの優れたリンク、ありがとうございました – Ash

+0

ようこそ。私もこれに非常に興味があります。 :) –

1

...DUP

参照:Windows Forms application like Google Chrome with multiple processes(ジョンスキートの答えとします。o)

(私は、これはあまりにも "より具体的に" の部分を答えだと思う)

+0

もう一度ありがとう。私は5分かけて既存の質問を探しました。私はまた、 "Ask Question"テキストボックスに様々なタイトルを入力しました。これらは私の経験ではうまくいきません。 – Ash

+0

私はちょうど右の "関連する"ボックスを一見しました:P –

関連する問題