ActiveX (AX)

Eintrag zuletzt aktualisiert am: 23.09.2009

ActiveX ist ein Dienst auf Basis von COM und DCOM, der die Dienste von OLE umfasst und ergänzt. Dabei hat Microsoft selbst Abgrenzungsschwierigkeiten zwischen den Begriffen ActiveX und COM.

Microsoft hat den Begriff ActiveX seit 1996 so sehr in den Vordergrund gestellt, dass er schließlich mit COM gleichgesetzt wurde. Erst im Laufe der Jahre 1998 und 1999 fand eine Rückbesinnung statt, die schließlich zur Einschränkung von ActiveX auf einen Dienst von COM führte. Microsoft definiert in einem Beitrag in der Knowledge Base (»Description of ActiveX Technologies«, [Q154544], Stand August 1999) ActiveX über folgende Teiltechnologien:
ActiveX-Steuerelemente (ActiveX Controls)
ActiveX-Dokumente (ActiveX Documents)
ActiveX Scripting

In den letzten Jahren wird ActiveX nur noch für die Einbetten von Objekten in den Browser verwendet, wobei gerade dort ActiveX einen schlechten Ruf wegen seines Sicherheitsmodells hat.

ActiveX ist aufgrund seines Schwarz-Weiß-Sicherheitsmodell nicht geeignet für Internet-Anwendungen, denn bei ActiveX kann man ein Steuerelement entweder nur komplett verbieten oder aber das Steuerelement mit den vollen Rechten des angemeldeten Benutzers (etwas eingeschränkt ab Windows Vista mit aktivierter Benutzerkontensteuerung) ausführen. Eine Sandbox mit selektiver Ausführung wie bei Silverlight und den ".NET Applets" auf Basis von WPF WBA oder Windows Forms, gibt es hier nicht. Im Intranet ist es aber kein Problem, den eigenen ActiveX-Steuerelementen zu vertrauen.

Für Intranet-Anwendungen gilt oft die Anforderung des Zugriffs auf lokale Ressourcen wie Dateisystem, Smart-Card-Reader und Spezialdruckern (z.B. für Etiketten). Solche Hard- und Softwareressourcen kann man weder mit WBA noch mit Windows Forms-basierten Applets ansprechen. Dafür gibt es neben ActiveX allenfalls die Lösung einer XML Brower Application (XBAP) mit Hilfe von WPF.

ActiveX-Steuerelemente mit Hilfe von .NET zu erstellen, ist zwar technisch möglicht, macht aber keinen Sinn. Denn erstens braucht man dann ein .NET Framework auf dem Client und zweites würde dann auch wieder das Sicherheitssystem greifen, das man ja im Fall des Zugriffs auf Ressourcen nicht will. ActiveX programmiert man am besten mit C++ als Unmanaged Code, denn die entstehenden DLLs sind klein und eine Laufzeitumgebung ist nicht erforderlich.