2009-02-05 5 views

risposta

3

COM è OLE evoluto. OLE era un insieme di interfacce e meccanismi di archiviazione dei dati per facilitare la condivisione dei dati tra le applicazioni. COM era la naturale estensione dell'uso delle interfacce non solo per condividere dati, ma funzionalità di runtime - dove i dati erano fronteggiati da meccanismi reali per facilitare l'uso. L'ho sempre immaginato approssimativamente come la differenza tra C e C++, dove con C, puoi condividere file e strutture di intestazione, e con C++ condividi oggetti incapsulati.

Come un po 'di soapbox, mi manca ancora OLE Structured Storage, dal momento che c'è qualcosa di carino nella condivisione dell'opacità di archiviazione dei dati tra sistemi collaborativi. Visto che il drag-and-drop/clipboard dipende ancora da questo, mi chiedo quale sarà la sostituzione .Net?

+4

OLE è ** non ** COM evoluto. Ole 1 pre-data COM. OLE2 è tuttavia costruito su COM. L'archiviazione strutturata OLE esiste ancora e lo sarà sempre, e puoi usarla da .Net se lo desideri. Si noti che molte delle motivazioni progettuali per lo storage strutturato OLE rispetto a qualcosa come ZIP erano consentire la modifica sul posto delle strutture di dati su disco. Ciò è in gran parte andato via con la fine dei floppy disk e dei slow HD. – Ben

+0

"Ole 1 pre-date COM. OLE2 è comunque costruito su COM". Sì ... un po 'come si è evoluto. L'idea di utilizzare le interfacce tra i dati interagenti e quindi il comportamento + dati proveniva da OLE ed era il germe di COM. – codekaizen

+1

@Ben - È stato annullato l'ordine di COM e OLE nella citazione da ciò che la risposta dice in realtà. –

0

La tecnologia OLE precede COM come entità separata per un periodo di tempo significativo. Prima di ciò, OLE è stato implementato come un modo per incorporare e collegare oggetti. L'esempio classico è quello di incorporare un foglio di calcolo all'interno di un documento word. La tecnologia sottostante di COM è stata abilitata in modo che anche altri linguaggi come VB possano interagire con tali oggetti.

Quindi, storicamente, avevamo un sacco di programmatori di tipo server che guardavano a queste cose interessanti come l'indipendenza dal linguaggio, il conteggio dei riferimenti e i modelli di threading con invidia, ma in realtà non si preoccupavano affatto della tecnologia di incorporamento. La cosa logica da fare era dividere le funzionalità del server sottostante come COM - questa era un'API più naturale a basso livello.

Entrambe le tecnologie esistono ancora. OLE è in qualche modo collegato o potrebbe essere lo stesso di ActiveX in questi giorni.

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

OLE: Questo è un metodo di collegare parti di un documento a parti di un altro. Ad esempio, avendo una diapositiva powerpoint con un grafico di Excel incorporato in esso. Quando il foglio di calcolo Excel viene aggiornato, anche il grafico dovrebbe essere aggiornato. Quando riapri Powerpoint, magicamente ce l'ha! (Questo esempio è un oggetto collegato). Gli oggetti incorporati sono gli stessi solo il foglio di calcolo Excel non esiste in un file esterno, i dati per il foglio di calcolo sono contenuti nel file powerpoint.

È possibile incorporare Excel, Word e PowerPoint l'uno nell'altro con oggetti collegati. Altre applicazioni sono state scritte specificamente per supportare l'incorporamento in Word, ad esempio Microsoft Equation Editor.

OLE 1 è stato creato su DDE, che utilizzava i messaggi di Windows per notificare le applicazioni quando i dati di origine venivano modificati e in genere passavano i dati utilizzando gli handle di memoria globale HGLOBAL.

OLE 2 è stato creato su COM.

COM è un modello di componente orientato agli oggetti e orientato agli oggetti e basato su DCE RPC. Come sistema RPC supportava le chiamate remote tra processi sulla stessa macchina e, successivamente, con DCOM, su macchine diverse.Inizialmente COM è stata utilizzata come parte dell'architettura di MAPI (che utilizza il modello di oggetti COM ma non i servizi di registrazione COM) prima di essere lanciata formalmente sul proprio come modello di oggetto generale completo di registrazione e attivazione di oggetti e altri servizi. (Moniker e archiviazione strutturata per esempio).

L'automazione OLE non ha nulla a che fare con OLE: è solo una connessione di branding. L'automazione OLE è un sottoinsieme COM compatibile con la visualizzazione di base che supporta solo tipi di dati di base (ad esempio, numeri interi o strutture senza segno) ma include oggetti (interfacce COM).

I controlli OLE tuttavia sono correlati a OLE. Sono componenti visivi rivolti principalmente agli utenti di Visual Basic da VB 4 in poi, ma gli elementi visivi sono forniti utilizzando le funzionalità di incorporamento di OLE 2. Possono anche essere ospitati (in teoria, se scritti correttamente) da qualsiasi cosa in grado di ospitare un OLE 2 oggetto incorporato e sono stati spesso utilizzati anche in applicazioni C++. In genere utilizzano interfacce compatibili con l'automazione OLE per la programmazione in fase di esecuzione.

Controllo ActiveX è un termine di marketing per gli oggetti COM, dal momento in cui Microsoft stava tentando di diffondere la tecnologia per estendere le applicazioni Web.

+1

Grazie mille. Di gran lunga la migliore panoramica su questo pasticcio di nomi ;-) Immagino che questo argomento non sarà superato in qualunque momento presto ... – Rainer