Web - Amazon

We provide Linux to the World


We support WINRAR [What is this] - [Download .exe file(s) for Windows]

CLASSICISTRANIERI HOME PAGE - YOUTUBE CHANNEL
SITEMAP
Audiobooks by Valerio Di Stefano: Single Download - Complete Download [TAR] [WIM] [ZIP] [RAR] - Alphabetical Download  [TAR] [WIM] [ZIP] [RAR] - Download Instructions

Make a donation: IBAN: IT36M0708677020000000008016 - BIC/SWIFT:  ICRAITRRU60 - VALERIO DI STEFANO or
Privacy Policy Cookie Policy Terms and Conditions
Component Object Model - Wikipedia

Component Object Model

Da Wikipedia, l'enciclopedia libera.

Traduci questa pagina Questa voce riguardante un argomento di informatica non è ancora stata tradotta completamente dalla lingua inglese. Se puoi, terminala o riscrivila tu, eliminando il testo in lingua straniera quando hai finito.
Traduzione iniziata in maggio 2006 Vedi le altre voci da tradurre dalla stessa lingua e dello stesso argomento.

Nota: se non vedi il testo da tradurre, potrebbe essere nascosto: fai clic su modifica per visualizzarlo. Prima di salvare la pagina, non dimenticare di eliminare o spostare i segni <!-- e --> che delimitano il testo da nascondere.

Niente traduzioni automatiche! - No Babelfish please!
Non usare
traduttori
automatici!

Il Component Object Model (noto con l'acronimo COM, inglese per Modello ad oggetti per componenti) è una piattaforma di Microsoft per componenti software introdotta da Microsoft nel 1993. COM permette la comunicazione tra processi e creazione dinamica di oggetti con qualsiasi linguaggio di programmazione che supporta questa tecnologia. Il termine COM è spesso usato nel mondo dello sviluppo software con più significati: OLE, OLE Automation, ActiveX, COM+ e DCOM. Nonostante l'introduzione di COM risalga al 1993, Microsoft ha iniziato ad utilizzare con enfasi questo nome solamente nel 1997.

Sebbene sia stato portato anche su altre piattaforme, COM è utilizzato principalmente con Microsoft Windows. Si prevede una progressiva sostituzione almeno parziale di COM da parte del framework Microsoft .NET.

Indice

[modifica] Storia

Anthony Williams, una delle principali menti coinvolte nella creazione dell'architettura COM, distribuì un paio di documenti Microsoft interni che trattavano il concetto di componenti software; "Object architecture: dealing with the unknown - or - Type safety in a dynamically extensible class" ("Architettura di un oggetto: trattare l'ignoto - o - Sicurezza dei tipi in una classe dinamicamente estensibile") nel 1988 e "On inheritance: what it means and how to use it" ("Sull'ereditarietà: cosa significa e come si usa") nel 1990. Questi gettarono le basi per molte, se non tutte, delle idee dietro ai fondamenti di COM.

Da molte di quelle idee nacque il primo framework ad oggetti di Microsoft, OLE (acronimo dell'inglese Object linking and embedding, sta per Collegamento ed incorporazione di oggetti). OLE fu costruito partendo dal DDE e progettato con un occhio di riguardo per i documenti compositi; fu introdotto per la prima volta con Word per Windows ed Excel nel 1991, e fu successivamente incluso in Windows, a partire dalla versione 3.1 del 1992. Un esempio di documento composito può essere un foglio di Excel in un documento di Word; quando il foglio di calcolo viene modificato, i cambiamenti compaiono automaticamente all'interno del documento di Word.

Nel 1991 Microsoft introdusse la tecnologia VBX (acronimo di Visual Basic extension, Estensione di Visual Basic) con Visual Basic 1.0.

Nel 1993 Microsoft rilasciò OLE 2, avente COM come modello a oggetti sottostante. Mentre OLE 1 era focalizzata sui documenti compositi, COM ed OLE 2 avevano un indirizzo più generico. Nel 1994 furono introdotti i controlli OLE (OCX, OLE control extension, cioè Estensione controllo OLE) quali naturali successori dei controlli VBX; al tempo stesso, Microsoft annunciò che OLE 2 sarebbe stato chiamato semplicemente "OLE", e che questo non sarebbe più stato un acronimo, ma un vero e proprio nome con cui la compagnia avrebbe indicato le proprie tecnologie ad oggetti.

Successivamente, nell'inizio del 1996, Microsoft cambiò nome ad alcune parti di OLE relative ad Internet in ActiveX, iniziando così quel processo che l'ha portata a rinominare negli anni tutte le tecnologie OLE in ActiveX, con la sola eccezione della tecnologia di documenti compositi impiegata in Microsoft Office. Più tardi, in quell'anno, Microsoft rilasciò DCOM (acronimo di Distributed component object model, inglese per Modello ad oggetti per componenti distribuiti) quale risposta a CORBA.

[modifica] Tecnologie correlate

COM è stata la principale piattaforma di sviluppo software per Windows e, in quanto tale, ha influenzato lo sviluppo di una serie di tecnologie a supporto.

[modifica] COM+

Con Windows 2000, furono introdotte un numero significativo di estensioni COM chiamate COM+. Nello stesso periodo Microsoft de-enfatizzò DCOM come entità separata.

[modifica] DCOM

Per approfondire, vedi la voce Distributed Component Object Model.

[modifica] .NET

Per approfondire, vedi la voce Microsoft .NET.

La piattaforma COM è stata ampiamente sorpassata da Microsoft .NET, ed il marketing di Microsoft è del tutto incentrato su .NET; in un certo senso, COM adesso è addirittura deprecato a favore di .NET. Nonostante ciò, COM rimane una tecnologia importante per via della sua massiccia base software – per esempio, l'SDK DirectX è basato su COM; inoltre, un componente COM è teoricamente sempre più prestante di un corrispondente componente gestito .NET. Al momento della redazione di questa voce, Microsoft non ha annunciato di aver intenzione di di ritirare né interrompere il supporto a COM.

Alcuni servizi che fornisce COM+, come le transazioni e code di componenti, sono ancora importanti per le applicazioni enterprise di .NET.

C'è un limite alla retrocompatibilità. Un oggetto COM può essere usato in .NET implementando un runtime callable wrapper (RCW).

[modifica] Sicurezza su Internet

L'idea della Microsoft di incapsulare il contenuto attivo nelle pagine web sotto forma di componenti COM/ActiveX (anziché, ad esempio, applet Java) ha creato una serie di problemi nel browser Internet Explorer, che ha portato a un'esplosione di infezioni da virus informatici, trojan e spyware. Questi attacchi di malware devono soprattutto a ActiveX la loro attivazione e propagazione agli altri computer. La Microsoft ha riconosciuto il problema di ActiveX già nel 1996, quando Charles Fitzgerald, direttore della squadra Java della Microsoft, ha detto "Se si vuole la sicurezza nella Rete, si scolleghi il computer. (...) Non abbiamo mai sostenuto che ActiveX sia intrinsecamente sicuro."

Poiché le componenti COM e ActiveX sono eseguite come codice nativo sulla macchina dell'utente, ci sono poche restrizioni su ciò che il loro codice può fare. Molti di questi problemi sono stati affrontati dalla relativa deprecazione di COM nelle piattaforme sviluppate da allora, come la piattaforma Java, e in seguito anche la piattaforma .NET.

[modifica] Dettagli tecnici

[modifica] Interfacce

Tutte le componenti COM devono come minimo implementare l'interfaccia standard IUnknown. Infatti, tutte le interfacce COM sono derivate dall'interfaccia IUnknown. Essa consiste in tre metodi: AddRef() e Release(), che implementano il conteggio dei riferimenti (reference counting) e controllano il ciclo di vita delle interfacce; e QueryInterface(), che specificando un IID permette al chiamante di ottenere riferimenti alle varie interfacce fornite dal componente. L'effetto di QueryInterface() è simile a quello di dynamic_cast<> in C++ o della conversione di tipo in D, Java e C#.

Le interfacce di una componente COM devono godere delle proprietà riflessiva, simmetrica e transitiva. La proprietà riflessiva si riferisce alla capacità di una chiamata a QueryInterface() su una certa interfaccia, con l'ID di quell'interfaccia, di restituire la stessa istanza dell'oggetto. La proprietà simmetrica prevede che quando l'interfaccia B è prelevata dall'interfaccia A tramite QueryInterface(), l'interfaccia A possa essere altrettanto prelevata da B. La proprietà transitiva è simile alla simmetrica, ma prevede che se A può ottenere B e B può ottenere C, allora A deve poter ottenere C.

Un'interfaccia consiste in un puntatore a una tabella di funzioni virtuali che contiene una lista di puntatori alle funzioni che implementano i metodi dichiarati nell'interfaccia, nello stesso ordine con cui sono dichiarati. Questa tecnica di passare liste di puntatori a funzione è molto simile a quella usata da OLE 1.0 per comunicare con le sue librerie di sistema.

COM specifica molte altre interfacce standard usate per la comunicazione tra componenti. Per esempio, una di queste interfacce è IStream, che è fornita dalle componenti che hanno semantica di flussi di dati (es. la componente FileStream usata per leggere e scrivere i file). Essa fornisce i metodi Read e Write per effettuare letture e scritture di flussi. Un'altra interfaccia standard è IOleObject, fornita dai componenti che prevedono di essere collegati o incapsulati dentro un contenitore. IOleObject contiene metodi che permettono ai chiamanti di determinare il rettangolo perimetrale della componente, determinare se la componente supporta operazioni come Apri, Salva, e così via.

[modifica] Classi

Una classe in COM è chiamata coclasse. Una coclasse è il modo di COM, indipendente dal linguaggio, di definire una classe (nel senso della programmazione a oggetti).

Una coclasse fornisce implementazioni concrete di una o più interfacce. In COM, queste implementazioni possono essere scritte in qualunque linguaggio che supporti lo sviluppo di componenti COM, come C++, Visual Basic, ecc.

Uno dei maggiori contributi di COM al mondo dello sviluppo per Windows è la consapevolezza del concetto di separazione dell'interfaccia dall'implementazione. Questa consapevolezza ha indubbiamente influenzato il modo in cui i programmatori creano i sistemi al giorno d'oggi. Un'estensione di questo concetto fondamentale è la nozione di una interfaccia, tante implementazioni. Con questo si intende che, durante l'esecuzione, un'applicazione può scegliere quale interfaccia istanziare tra molte implementazioni concrete disponibili.

[modifica] Linguaggio di definizioe di interfacce e librerie di tipi

[modifica] COM: un framework per oggetti

[modifica] Registro di sistema

In Windows, le classi COM, le interfacce e le librerie di tipi sono elencate per i rispettivi GUID nel registro di sistema; quando un'applicazione richiede il caricamento di una libreria, COM usa il registro per localizzarla, sia che si tratti di una libreria locale, sia che si tratti dell'indirizzo di rete di un servizio remoto.

[modifica] Conteggio dei riferimenti

[modifica] Instanziamento

[modifica] Riflessione

[modifica] Programmazione

[modifica] Applicazioni e trasparenza della rete

[modifica] Thread in COM

[modifica] Critiche

Dal momento che COM è piuttosto complesso da implementare, i programmatori corrono il rischio di essere distratti da altre attività laterali.

[modifica] Inizializzazione dell'ambiente

Per ogni thread che necessita delle funzionalità di COM, il programmatore deve aggiungere chiamate esplicite alle funzioni CoInitialize[Ex] e CoUninitialize; inoltre, il codice utilizzante gli appunti o il drag & drop OLE deve chiamare OleInitialize e OleUninitialize. Dato che alcuni thread nel sistema possono essere stati creati da librerie che non usano COM, il programmatore deve prestare attenzione nell'usare qualsiasi funzione di COM in un thread che non è stato creato all'interno del programma stesso.

[modifica] Smistamento dei messaggi

[modifica] Conteggio dei riferimenti

[modifica] Inferno delle DLL

Dal momento che la posizione di ogni componente è memorizzata in un luogo di livello sistema (il registro di sistema), solamente una versione dello stesso componente può essere installata in un dato momento; a causa di ciò, COM risente pesantemente del "DLL hell" ("Inferno delle DLL"), situazione in cui due o più applicazioni richiedono versioni differenti dello stesso componente.

[modifica] Riferimenti

[modifica] Voci correlate

[modifica] Collegamenti esterni

Our "Network":

Project Gutenberg
https://gutenberg.classicistranieri.com

Encyclopaedia Britannica 1911
https://encyclopaediabritannica.classicistranieri.com

Librivox Audiobooks
https://librivox.classicistranieri.com

Linux Distributions
https://old.classicistranieri.com

Magnatune (MP3 Music)
https://magnatune.classicistranieri.com

Static Wikipedia (June 2008)
https://wikipedia.classicistranieri.com

Static Wikipedia (March 2008)
https://wikipedia2007.classicistranieri.com/mar2008/

Static Wikipedia (2007)
https://wikipedia2007.classicistranieri.com

Static Wikipedia (2006)
https://wikipedia2006.classicistranieri.com

Liber Liber
https://liberliber.classicistranieri.com

ZIM Files for Kiwix
https://zim.classicistranieri.com


Other Websites:

Bach - Goldberg Variations
https://www.goldbergvariations.org

Lazarillo de Tormes
https://www.lazarillodetormes.org

Madame Bovary
https://www.madamebovary.org

Il Fu Mattia Pascal
https://www.mattiapascal.it

The Voice in the Desert
https://www.thevoiceinthedesert.org

Confessione d'un amore fascista
https://www.amorefascista.it

Malinverno
https://www.malinverno.org

Debito formativo
https://www.debitoformativo.it

Adina Spire
https://www.adinaspire.com