2009-05-01 20 views
3

.NetアプレットについてのWeb上の記事をいくつか見てきましたが、どうやらActiveXコントロール(.Net言語を使用して作成されたもの) ?IEに埋め込まれた.NETアプレットとActiveXコントロールの違い

を(、これはWebブラウザ内で実行するアプレットに関してです明確にする)(違いです:?.NET言語で記述されたActiveXコントロールは、.NETアプレットと呼ばれている)

はどんな利点がありますもう一方を使いながら?

また、マイクロソフトはこの技術をどのように参照していますか? (MSDNでの検索では、.Netアプレットと呼ばれるものがありません)

ps:ActiveXコントロールはCOM登録が必要ですが、.Netアプレットはありません。また、Webページでは、ActiveXコントロールはCLSIDを使用して参照されますが、.NETアプレットはフルネーム(パス、DLL名、名前空間、クラス)によって参照されるようです。

答えて

6

ActiveXコントロールは、最低でも、IUnknownの実装を単にCOMオブジェクトです。最近のバージョンのIEでは、IObjectSafetyを実装するためにオブジェクトが必要になりました。有用なことをするには、オブジェクトはIDispatch、IOleObjectなどの他のいくつかのOleインターフェイスを実装する必要があります。オブジェクトはCoCreateInstance()を使用して作成可能である必要があります。つまり、レジストリで何らかの形でregister 。タグにGUIDを使用する必要はありません。登録する場合はAppIdを使用することもできます。

また、マネージコードを記述してIE内で実行することもできます。 CLRが動作する方法は、インストール時にMIME filterを登録します。そして、IEが適切なMIMEタイプのものを送ってくるのを見たら、コードをCLRに渡して処理します。 CLRは、インターネットアクセス許可のみが与えられているため、フレームワークが公開するすべてのことを行うことはできません。このセキュリティゾーンでできることとできないことについて、特定のドキュメントをチェックする必要があります。

いくつかのトレードオフ:インストールの

やすさ:ActiveXコントロールはかなり不可解な方法でインストール要件について説明し.iniファイルと.CABファイルにすべてを荷造りする必要が。モジュール(ATL/MFC dllやその他のサードパーティ製モジュールなど)に依存関係を追加する必要がある場合は、かなり手間がかかります。 .netモジュールでは正しいMIMEタイプで送信するだけですが、ユーザーにフレームワークの正しいバージョンがあることを確認する必要があります(Webサイトのユーザーエージェント文字列で確認できます)。

セキュリティ:ActiveXコントロールは、ユーザーシステム上で実行されるネイティブコードに過ぎません。したがって、理論上、ActiveXコントロールは必要な操作を実行できます。実際にはLoRIEは多くの場合それを制限しており、レジストリやファイルシステムへのアクセス(Understanding and Working in Protected Mode参照)のような特殊なケースを扱わなければなりません。

スレッディング:ActiveXコントロールはブラウザのUIスレッド上で実行されるため、そのスレッドで長いブロック操作を行わないようにする必要があります。したがって、自分でスレッドを実行する必要があります。長いブロッキング操作でDOMが操作される場合は、the GITまたはCOMマーシャリングfunctionsを使用して、IHTMLxxxインターフェイスをマーシャリングする必要があります。ネットアプレットがブラウザのUIスレッド上で動作するかどうかはわかりませんが、C#で処理する方が簡単です。

ブラウザオブジェクト:管理対象エクステンションでIE/Shellオブジェクトを使用する場合は、管理対象オブジェクトにこれらのインタフェースをラップするという大きな仕事をしていないので、ほとんどの場合は自分でinteropを書く必要があります。ちょっとした助けになるには、http://pinvoke.netを参照してください。

互換性:異なるバージョンのランタイムを同じプロセスでホストする際に問題があります。最近まで、それはまったく可能ではありませんでしたが、私は、それがある程度可能になるようになった3.xバージョンと思っています。結局のところ、.net 2.0をターゲットにし、すでに.net 1.0をブラウザ拡張の一部としてロードしている他の人がいれば、あなたは失うでしょう。一般にIEとWindowsシェルは管理拡張機能をサポートしていません。この.net app MIMEフィルタは、注目すべき例外ですが、潜在的な問題がある可能性があることに注意してください。

+0

LoRIEは何を表していますか? –

+0

低権利のIE。デフォルトの完全性レベルではなく、低レベルのプロセスでIEを実行するのはIE7 +のものです。 「プロテクトモードIE」とも呼ばれます。 http://msdn.microsoft.com/en-us/library/bb250462.aspxを参照してください。 –

0

ActiveXコントロールには、 .NETアプレットと同じセキュリティ制限があります。これは、実行する内容に応じてメリットまたはデメリットになる可能性があります。 .NETアプレットは一般的に開発が容易で、ActiveXはVB6またはC++で作成します。

1

".Net言語を使用して作成されたActiveXコントロール"と ".NETアプレット"は、両方とも、 "IEでホストされている.NETアセンブリ"用の言語です。

実際、.NETアセンブリはさまざまなアプリケーションでホストできます。参照:

Creating a Host to the .NET Common Language Runtime

関連する問題