IEに埋め込まれた.NETアプレットとActiveXコントロールの違いは何ですか
-
03-07-2019 - |
質問
.Netアプレットに関するWeb上の記事に出くわしましたが、ActiveXコントロール(.Net言語を使用して作成された)とはどう違うのだろうか? (明確にするため、これはWebブラウザ内で実行されるアプレットに関するものです)
(違いは、.Net言語で記述されたActiveXコントロールは.Netアプレットと呼ばれますか?)
一方を他方よりも使用する利点はありますか?
また、Microsoftはこのテクノロジーを何と呼んでいますか? (MSDNで検索しても、.Netアプレットと呼ばれるものは表示されません!)
ps:ActiveXコントロールをCOMに登録する必要があるのがわかりますが、.Netアプレットは必要ありません。また、Webページでは、activeXコントロールはCLSIDを使用して参照されますが、.NETアプレットはフルネーム(パス、dll名、名前空間、およびクラス)で参照されるようです
解決
ActiveXコントロールは、少なくともIUnknownを実装する単なるCOMオブジェクトです。 IEの最近のバージョンでは、オブジェクトがIObjectSafetyを実装することも必要になり始めています。有用なことを行うには、オブジェクトはIDispatch、IOleObjectなど、他のOleインターフェイスも実装する必要があります。オブジェクトはCoCreateInstance()で作成可能である必要があります。つまり、何らかの方法でレジストリに登録します。タグでGUIDを使用する必要はありません。 AppId を登録する場合。
マネージコードを作成して、IE内で実行することもできます。動作する方法は、CLRが MIMEフィルターを登録することです。 がインストールされます。その後、IEが適切なMIMEタイプの何かを送信していると判断すると、コードをCLRに渡して処理します。 CLRは、インターネットアクセス許可のみが付与される範囲でコードをサンドボックス化するため、フレームワークが公開するすべてを実行することはできません。このセキュリティゾーンで実行できることと実行できないことについては、特定のドキュメントを確認する必要があります。
いくつかのトレードオフ:
インストールの容易さ:ActiveXコントロールでは、インストール要件をかなり暗号化された方法で記述する.INIファイルを使用して、すべてを.CABファイルにパックする必要があります。モジュール(ATL / MFC dll、または他のサードパーティのモジュールなど)に追加の依存関係をインストールする必要がある場合、かなり注意が必要です。 .netモジュールでは、適切なMIMEタイプで送信するだけですが、ユーザーが適切なバージョンのフレームワークを持っていることを確認する必要があります(Webサイトのユーザーエージェント文字列で確認できます)。
セキュリティ:ActiveXコントロールは、ユーザーシステム上で実行されるネイティブコードであるため、理論的には何でもできます。実際には、LoRIEは多くの場合それを制限し、レジストリやファイルシステムへのアクセスなどの特別なケースの束を行う必要があります(保護モードの理解と操作)。
スレッディング:ActiveXコントロールはブラウザのUIスレッドで実行されるため、そのスレッドで長時間のブロッキング操作を行わないようにする必要があるため、自分でスレッディングを行う必要があります。長いブロック操作がDOMを操作する場合、 GIT またはCOMマーシャリング関数。 .netアプレットがブラウザーのUIスレッドで実行されるかどうかはわかりませんが、C#で処理する方が簡単だと確信しています。
ブラウザオブジェクト:マネージ拡張でIE / Shellオブジェクトを使用する場合、ほとんどの場合、フレームワークはマネージオブジェクトでこれらのインターフェイスをラップする優れた仕事をしないので、相互運用機能を自分で記述する必要があります。 http://pinvoke.net を参照して、開始方法について少し助けてください。
互換性:同じプロセスで異なるバージョンのランタイムをホストすることには問題があります。最近までそれはまったく不可能でしたが、3.xバージョンではある程度可能になり始めたと思います。結果は、.net 2.0をターゲットにし、他の誰かが既にブラウザ拡張の一部として.net 1.0をロードした場合、あなたは負けとなります。一般に、IEおよびWindowsシェルはマネージ拡張をサポートしていません。この.netアプリのMIMEフィルターは顕著な例外かもしれませんが、潜在的な可能性があることに注意してください
他のヒント
" ActiveXコントロール(.Net言語を使用して作成)"および「.NETアプレット」 「IEでホストされる.NETアセンブリ」の両方のスラングです。
実際、.NETアセンブリはさまざまなアプリケーションでホストできます。参照:
ActiveXコントロールには、.NETアプレットと同じセキュリティ制限がありません。これは、実行する内容によっては利点または欠点になります。 .NETアプレットは一般に開発が容易で、VB6またはC ++で作成したActiveXです。