2009-05-01 2 views
3

Ich bin auf einige Artikel im Web über .Net Applets gestoßen und ich frage mich, wie es sich von einem ActiveX-Steuerelement (erstellt mit einer .Net-Sprache) unterscheidet ? (Zu klären, ist dies im Hinblick auf die Applets, die in einem Web-Browser ausgeführt)Was ist der Unterschied zwischen einem .NET Applet und ActiveX Steuerelement eingebettet in IE

(Ist der Unterschied: ActiveX-Steuerelemente in einer .NET-Sprache geschrieben sind .Net Applets genannt?)

Gibt es irgendwelche Vorteile in der Verwendung von einem über den anderen?

Worauf verweist Microsoft auch auf diese Technologie? (Eine Suche auf MSDN bringt nichts herauf, nannte .Net Applets!)

ps: von dem, was ich sehen kann, müssen ActiveX Steuerelemente COM registriert sein, während .Net Applets nicht. Auf der Webseite werden ActiveX-Steuerelemente mit ihrer CLSID referenziert, während auf die .NET-Applets ein vollständiger Name (Pfad, DLL-Name, Namespace und Klasse) verweist.

Antwort

6

ActiveX-Steuerelemente sind einfach COM-Objekte, die, auf ein Minimum, IUnknown implementieren. In neueren IE-Versionen wird nun auch das Objekt zur Implementierung von IObjectSafety benötigt. Um etwas Nützliches zu tun, muss das Objekt auch einige andere Ole-Schnittstellen wie IDispatch, IOleObject usw. implementieren. Das Objekt muss über CoCreateInstance() erstellt werden können, was bedeutet, dass Sie es in irgendeiner Weise mit der Registrierung register müssen . Sie müssen keine GUID im Tag verwenden, Sie können auch AppId verwenden, wenn Sie einen registrieren.

Sie können auch etwas verwalteten Code schreiben und bekommen, dass innerhalb IE läuft. Die Art und Weise, wie CLR funktioniert, registriert eine MIME filter, wenn es installiert ist. Wenn der IE dann sieht, dass Sie etwas vom richtigen Mime-Typ gesendet haben, übergibt er den Code an die CLR, um sie zu verarbeiten. Die CLR macht den Code in dem Maße sandboxing, in dem nur Internetberechtigungen erteilt werden, sodass nicht alles ausgeführt werden kann, was das Framework bereitstellt. Sie müssen die spezifische Dokumentation überprüfen, was in dieser Sicherheitszone ausgeführt werden kann und was nicht.

Einige Kompromisse:

Einfache Installation: ActiveX-Steuerelemente benötigen Sie alles mit einer INI-Datei in eine CAB-Datei zu packen, die die Installationsanforderungen in einer ziemlich kryptische Weise beschreibt. Wenn Sie zusätzliche Abhängigkeiten mit Ihren Modulen installieren müssen (wie ATL/MFC DLLs oder andere Module von Drittanbietern), wird es ziemlich schwierig. Mit dem .net-Modul senden Sie es einfach mit dem richtigen MIME-Typ herunter, aber Sie müssen sicherstellen, dass Ihre Benutzer die richtige Version des Frameworks haben (die Sie über den User-Agent-String auf Ihrer Website überprüfen können).

Sicherheit: ActiveX-Steuerelemente sind nur systemeigener Code, der auf dem Benutzersystem ausgeführt wird, also können sie theoretisch tun, was sie wollen. In der Praxis begrenzt LoRIE es in vielen Fällen und Sie müssen eine Reihe von speziellen Gehäuse von Dingen wie Registry und Dateisystem Zugriff (siehe).

Threading: Da ActiveX-Steuerelemente im Browser-UI-Thread ausgeführt werden, müssen Sie sicherstellen, dass Sie keine langen Blockierungsvorgänge für diesen Thread ausführen. Daher müssen Sie das Threading selbst durchführen. Wenn Ihre lange blockierende Operation das DOM manipuliert, müssen Sie die IHTMLxxx-Schnittstellen selbst marshalieren, entweder the GIT oder COM Marshalling functions. Ich bin mir nicht sicher, ob die .net-Applets auf dem Browser-UI-Thread laufen oder nicht, aber in C# ist es einfacher zu handhaben, da bin ich mir sicher.

Browser-Objekte: Wenn Sie IE/Shell-Objekte in Ihrer verwalteten Erweiterung verwenden möchten, müssen Sie das Interop meist selbst schreiben, da das Framework diese Schnittstellen in verwalteten Objekten nicht gut verpackt. Siehe http://pinvoke.net, um ein wenig Hilfe beim Einstieg zu bekommen.

Kompatibilität: Es gibt Probleme beim Hosten verschiedener Versionen der Laufzeit im selben Prozess. Bis vor kurzem war es überhaupt nicht möglich, aber ich denke, mit den 3.x-Versionen ist es in gewissem Maße möglich geworden. Das Ergebnis ist, wenn Sie .net 2.0 und jemand anderes bereits geladen .net 1.0 als Teil ihrer Browser-Erweiterung, verlieren Sie. Im Allgemeinen unterstützen der IE und die Windows Shell keine verwalteten Erweiterungen. Diese MIME-Filter-App für .net-Apps kann eine beachtenswerte Ausnahme sein, aber beachten Sie, dass möglicherweise Probleme auftreten.

+0

Wofür steht LoRIE? –

+0

Niedrige Rechte IE. Es ist das Zeug in IE7 +, das IE in Low-Integrity-Prozessen anstelle des Standard-Integritätslevels ausführt. Auch bekannt als "Protected Mode IE". Siehe http://msdn.microsoft.com/en-us/library/bb250462.aspx –

0

ActiveX-Steuerelemente verfügen nicht über die gleiche Sicherheitseinschränkungen wie .NET-Applets, was je nach dem, was Sie tun möchten, ein Vor- oder Nachteil sein kann. .NET-Applets sind im Allgemeinen leichter zu entwickeln, ActiveX, das Sie mit VB6 oder C++ erstellen.

Verwandte Themen