2009-02-05 11 views

Antwort

3

COM ist OLE entwickelt. OLE bestand aus einer Reihe von Schnittstellen und Datenspeichermechanismen, um den Datenaustausch zwischen Anwendungen zu erleichtern. COM war die natürliche Erweiterung der Verwendung von Schnittstellen nicht nur für die gemeinsame Nutzung von Daten, sondern auch für die Laufzeitfunktionalität - wobei die Daten durch tatsächliche Mechanismen abgedeckt wurden, um die Verwendung zu erleichtern. Ich habe es immer grob als den Unterschied zwischen C und C++, wo mit C, können Sie Header-Dateien und Strukturen teilen, und mit C++ teilen Sie gekapselte Objekte.

Als ein bisschen eine Seifenkiste vermisse ich immer noch OLE Structured Storage, da es etwas Schönes ist, opaken Datenspeicher zwischen kollaborierenden Systemen zu teilen. Da Drag and Drop/Clipboard immer noch davon abhängt, frage ich mich, was der .Net-Ersatz sein wird?

+4

OLE ist ** nicht ** COM entwickelt. Ole 1 vor dem COM. OLE2 baut jedoch auf COM auf. OLE-strukturierter Speicher ist immer noch vorhanden und wird immer und Sie können es von .Net verwenden, wenn Sie möchten. Beachten Sie, dass ein Großteil der Entwurfsmotivation für OLE-strukturierten Speicher im Vergleich zu etwas wie ZIP die direkte Änderung von Datenstrukturen auf der Festplatte ermöglichte. Das ist mit dem Ende von Disketten und langsamen HDs weitgehend weg. – Ben

+0

"Ole 1 vor Daten COM. OLE2 baut auf COM jedoch auf." Ja ... so wie es sich entwickelt hat. Die Idee, Schnittstellen zwischen interagierenden Daten und dann Daten + Verhalten zu verwenden, kam von OLE und war der Keim von COM. – codekaizen

+1

@Ben - Sie haben die Reihenfolge von COM und OLE in Ihrem Zitat umgekehrt, was die Antwort tatsächlich sagt. –

0

Die OLE-Technologie hat COM als eine separate Entität um einen erheblichen Zeitraum voraus. Zuvor wurde OLE als eine Methode zum Einbetten und Verknüpfen von Objekten implementiert. Das klassische Beispiel ist das Einbetten einer Tabelle in ein Word-Dokument. Die zugrundeliegende Technologie von COM wurde aktiviert, sodass auch andere Sprachen wie VB mit diesen Objekten interagieren können.

Dann hatten wir in der Vergangenheit eine Menge Server-Programmierer, die auf diese coolen Dinge wie Sprachunabhängigkeit, Referenzzählung und Threading-Modelle mit Neid schauten, aber die Einbettungstechnologie überhaupt nicht interessierte. Die logische Sache zu tun war, die zugrunde liegende Serverfunktionalität als COM zu trennen - das war eine natürlichere Low-Level-API.

Beide Technologien existieren noch. OLE ist heutzutage irgendwie mit ActiveX verbunden oder kann dasselbe sein wie ActiveX.

46
  • OLE = Object Linking and Embedding
  • DDE = Dynamic Data Exchange
  • COM = Component Object Model

OLE: Dies ist ein Verfahren von Teilen eines Dokuments Teile verbindet eines anderen. Zum Beispiel mit einer PowerPoint-Folie, in die ein Excel-Diagramm eingebettet ist. Wenn das Excel-Arbeitsblatt aktualisiert wird, sollte das Diagramm ebenfalls aktualisiert werden. Wenn du Powerpoint wieder öffnest, hat es magisch! (Dieses Beispiel ist ein verknüpftes Objekt). Eingebettete Objekte sind gleich, nur die Excel-Tabelle existiert nicht in einer externen Datei, die Daten für die Tabelle sind in der Powerpoint-Datei enthalten.

Sie können Excel, Word und Powerpoint mit verknüpften Objekten ineinander einbetten. Andere Anwendungen wurden speziell geschrieben, um die Einbettung in Word zu unterstützen, z. B. Microsoft Equation Editor.

OLE 1 wurde auf DDE erstellt, das Windows-Meldungen verwendete, um Anwendungen zu benachrichtigen, wenn Quelldaten geändert wurden, und normalerweise Daten mit globalen HGLOBAL-Speicherpunkten übergeben.

OLE 2 wurde auf COM gebaut.

COM ist ein sprachneutrales, objektorientiertes Komponentenmodell und ABI basierend auf DCE RPC. Als RPC-System unterstützte es Remote-Aufrufe zwischen Prozessen auf demselben Computer und später mit DCOM auf verschiedenen Computern.Anfänglich wurde COM als Teil der Architektur von MAPI verwendet (die das COM-Objektmodell, aber nicht die COM-Registrierungsdienste verwendet), bevor es offiziell als allgemeines Objektmodell mit Registrierung und Objektaktivierung und anderen Diensten gestartet wurde. (Moniker und strukturierte Speicher zum Beispiel).

OLE-Automatisierung hat nichts mit OLE zu tun - es ist nur eine Branding-Verbindung. Die OLE-Automatisierung ist eine Visual Basic-kompatible Teilmenge von COM, die nur grundlegende Datentypen unterstützt (z. B. keine vorzeichenlosen Ganzzahlen oder Strukturen), aber Objekte (COM-Schnittstellen) enthält.

OLE-Steuerungen sind jedoch mit OLE verwandt. Sie sind visuelle Komponenten, die in erster Linie für Visual Basic-Benutzer ab VB 4 gedacht sind. Die visuellen Elemente werden jedoch mithilfe der Einbettungsfunktionen von OLE 2 bereitgestellt. Sie können auch (sofern sie ordnungsgemäß geschrieben wurden) von beliebigen Hosts gehostet werden, die OLE 2 hosten können eingebettetes Objekt, und wurden oft auch in C++ - Anwendungen verwendet. Sie verwenden normalerweise OLE Automation-kompatible Schnittstellen zum Programmieren zur Laufzeit.

ActiveX-Steuerelement ist ein Marketingbegriff für COM-Objekte aus der Zeit, als Microsoft versuchte, die Technologie für die Erweiterung von Webanwendungen zu popularisieren.

+1

Vielen Dank. Bei weitem der beste Überblick über dieses Namensverderben ;-) Ich denke, dieses Thema wird nicht in Kürze veraltet sein ... – Rainer