1. ホーム
  2. c#

[解決済み] WPF/C#でIEではなくChromiumのWebBrowserコントロールを埋め込むためのオプション [終了しました]。

2022-04-23 22:53:37

質問

更新情報 2020年に向けて、私は 私の記事をリンク ここでは、基本的な Windows デスクトップ アプリケーションで HTML WebView をホストするためのさまざまなアプローチのメモリ フットプリントを比較しています。


Internet Explorer ベースの WPF WebBrowser コントロールには、次のような問題があります。 キーボードとフォーカスの問題 メモリリーク問題 . これらの問題に対する代替ソリューションとして、HTML編集を中心としたWPF/C#プロジェクトにおいて、WebBrowserコントロールの代わりにChromiumをホストするための利用可能なオプションを検討中です。同様の質問は 質問 以前、ここで その回答を読み、自分なりに調べてみました。 しかし、以下のオプションのいずれかを実際にプロダクションクオリティのプロジェクトで使用したことのある人たちから、もう少しフィードバックを得たいと考えています。 :

オーエソミウム Awesomium.NET

とても適当な感じですが、このプロジェクトがオープンソースでないことと、フルソースが簡単に入手できないことが気に入りません。また、オフスクリーンレンダリングは私たちが本当に依存しているものではないので、私たちのプロジェクトにとっては過剰な機能かもしれません。

Chromium Embedded Framework (CEF)について CEF用.NETバインディング

これはおそらく、現在利用可能な最良の選択肢です。このプロジェクトは生きているようで、現在Chrome v27と同期しており、活発です。CEF3はChromeのマルチプロセスアーキテクチャを使用しています。また、Adobeはこのプロジェクトに お墨付き .

グーグルのクロームフレーム

もともとはIEやFirefoxのHTML5プラグインとして作られたものですが、実はスタンドアローンのActiveXコントロールとしても動作するので、WPFで使えるようにラッピングしてみました。これは 十分なAPI 内部ウェブページとの対話のために ( onmessage, addEventListener/removeEventListener, postMessage ). 私は、Googleが 打ち切る Chrome Frameですが、ソースはChromiumのリポジトリに残ると思います。最新のChromiumのコードで更新することは難しくないはずで、私たちはこれを完全にコントロールすることができます。

WebKit .NET ラッパー

Chromiumベースというわけでもなく、V8エンジンを使っているわけでもないので、あまり選択肢には入らない。

他に私が見落としているような選択肢はないでしょうか?

上記のオプションのいずれかを実際の製品品質のWPFプロジェクトで使用した経験を共有できる人がいれば、非常に感謝します。統合、ライセンス、またはデプロイメントの影響がありましたか?

解決方法は?

Chromiumを埋め込むための最も有名な解決策(CEF、Chrome Frame、Awesomium)はすでにリストアップされています。これ以上重要なプロジェクトはないでしょう。

がまだあります。 ベルケリウム プロジェクト(参照 ベルケリウムシャープ ベルケリウム・マネージド ) が、古いバージョンの Chromium を使っています。

CEF これは完全にオープンソースで、頻繁に更新されています。最新版のChromiumを埋め込むことができる唯一の選択肢です。現在、Per Lundberg が CEF 3 の移植に積極的に取り組んでいます。 CefSharp というのが、今後のベストな選択だと思います。また、次のようなものもあります。 ザリウム.CefGlue しかし、これはCEFのための低レベルのAPIを提供し、CEFのC APIにバインドしています。一方、CefSharpはCEFのC++APIにバインドします。

CEFを使用している主要なプレーヤーはAdobeだけではありません。 CEFウィキペディアのページ .

更新中 クロームフレーム は、プロジェクトが リタイア .