Component Object Model: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
Recupero di 1 fonte/i e segnalazione di 0 link interrotto/i. #IABot (v1.6.1) |
|||
(11 versioni intermedie di 8 utenti non mostrate) | |||
Riga 1:
Sebbene sia stato [[Portabilità|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]].
==Storia==▼
Da molte di quelle idee nacque il primo [[framework]] ad oggetti di Microsoft, [[Object Linking and Embedding|OLE]] ([[acronimo]] dell'[[Lingua inglese|inglese]] ''Object linking and embedding'', sta per ''Collegamento ed incorporazione di oggetti''). OLE fu costruito partendo dal [[Dynamic Data Exchange|DDE]] e progettato con un occhio di riguardo per i [[Documento composito|documenti compositi]]; fu introdotto per la prima volta con [[Microsoft Word|Word per Windows]] ed [[Microsoft Excel|Excel]] nel [[1991]], e fu successivamente incluso in Windows, a partire dalla versione [[Windows 3.x|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 [[Visual Basic Extension|VBX]] (acronimo di ''Visual Basic extension'', ''Estensione di Visual Basic'') con [[Visual Basic]] 1.0.▼
Nel [[1993]] Microsoft distribuì 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 distribuì [[Distributed Component Object Model|DCOM]] (acronimo di ''Distributed component object model'', inglese per ''Modello ad oggetti per componenti distribuiti'') quale risposta a [[CORBA]].▼
==Struttura e funzionamento di COM==
Line 18 ⟶ 31:
===Conteggio dei riferimenti===
Il conteggio dei riferimenti (''[[reference counting]]'') viene usato dai componenti COM per sapere quando possono terminare e scaricarsi dalla RAM. Un programma client che utilizza il componente non può procedere con la sua eliminazione quando ha terminato di usarlo, perché potrebbe essere ancora in uso da altri programmi client (del resto in ambiente COM è prevista la possibilità che un client, una volta terminata l'interazione con un componente, passi il puntatore all'interfaccia dello stesso componente ad un altro client). Perciò l'eliminazione di un componente viene gestita da
===Ereditarietà, contenimento e aggregazione===
Line 27 ⟶ 40:
[[Windows XP]] ha introdotto una nuova modalità di registrazione locale dei componenti COM, chiamata '''Registration-Free COM''' o RegFree COM per brevità. Con questa tecnica le applicazioni non devono più registrare metadati di attivazione e CLSID nel registro di Windows, ma possono specificarli nel loro '''manifest'''; questo può essere un file [[XML]] che risiede nella directory dell'applicazione stessa oppure essere contenuto nell'header del suo file eseguibile, come sezione in formato binario. Quando Windows caricherà l'applicazione e questa farà riferimento ai suoi oggetti COM, la class factory (l'ente che materialmente crea gli oggetti COM) consulterà il manifest dell'applicazione per cercare i GUID specificati e i metadati associati e caricherà quelli forniti con l'applicazione; solo se il manifest non contiene i GUID richiesti consulterà il registro di Windows e (se ne trova installati) creerà gli equivalenti oggetti COM di sistema.
Il limite di questa tecnologia è che non può essere usata con componenti COM che devono essere visibili in tutto il sistema, quindi non si può usare per server COM OutOfProcess o per implementare parti di sistema operativo ([[MDAC]], [[MSXML]], [[DirectX]] o [[Internet Explorer]]).
▲==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, [[Object Linking and Embedding|OLE]] ([[acronimo]] dell'[[Lingua inglese|inglese]] ''Object linking and embedding'', sta per ''Collegamento ed incorporazione di oggetti''). OLE fu costruito partendo dal [[Dynamic Data Exchange|DDE]] e progettato con un occhio di riguardo per i [[Documento composito|documenti compositi]]; fu introdotto per la prima volta con [[Microsoft Word|Word per Windows]] ed [[Microsoft Excel|Excel]] nel [[1991]], e fu successivamente incluso in Windows, a partire dalla versione [[Windows 3.x|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 [[Visual Basic Extension|VBX]] (acronimo di ''Visual Basic extension'', ''Estensione di Visual Basic'') con [[Visual Basic]] 1.0.
▲Nel [[1993]] Microsoft distribuì 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 distribuì [[Distributed Component Object Model|DCOM]] (acronimo di ''Distributed component object model'', inglese per ''Modello ad oggetti per componenti distribuiti'') quale risposta a [[CORBA]].
==Tecnologie correlate==
Riga 61:
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 [[Microsoft .NET|piattaforma .NET]].
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 (informatica)|virus informatici]], [[trojan (informatica)|trojan]] e [[spyware]]. Questi attacchi di [[malware]] devono soprattutto a ActiveX la loro attivazione e propagazione agli altri computer.
==Critiche==
Riga 73:
===Conteggio dei riferimenti===
Uno scenario in cui il reference counting porta a problemi è quello in cui due oggetti COM
===Inferno delle DLL===
Ogni interfaccia COM è anche un contratto fra chiamante e chiamato: un programma che usa un componente COM deve assumere che i metodi che chiama si comporteranno sempre come previsto e non ha alcun controllo su di essi. Dal momento che la posizione di ogni componente è memorizzata in un luogo di livello sistema (in Windows nel [[registro di sistema]]), solamente una versione dello stesso componente può essere installata nel sistema in un dato momento, tipicamente la versione che l'ultima applicazione installata ha portato con sé; se il nuovo componente ha proprietà anche solo leggermente diverse da quello precedente, le altre applicazioni genereranno improvvisamente errori e comportamenti imprevedibili o casuali, senza alcun motivo apparente. Questo fenomeno è chiamato "[[Dynamic-link library|DLL]] hell" (''"Inferno delle DLL"''), situazione tristemente nota a programmatori e amministratori di sistema. Con la {{Chiarire|RegFree COM}} di Windows XP questo grave inconveniente può essere drasticamente ridotto.
==Note==
Riga 90:
==Collegamenti esterni==
*{{en}} [https://web.archive.org/web/20041011222635/http://msdn.microsoft.com/library/en-us/dnolegen/html/msdn_aboutole.asp What OLE is Really About] by Kraig Brockschmidt. An Overview of COM and OLE.
*{{cita web|http://www.research.microsoft.com/comapps/|Component Application Group at Microsoft Research|lingua=en}}
*{{cita web|1=http://www.iol.ie/~locka/mozilla/mozilla.htm|2=Mozilla ActiveX Project|lingua=en|accesso=2 maggio 2006|urlarchivio=https://web.archive.org/web/20060721123224/http://www.iol.ie/%7Elocka/mozilla/mozilla.htm|dataarchivio=21 luglio 2006|urlmorto=sì}}
*{{en}} [https://web.archive.org/web/20060428072429/http://www.codeproject.com/com/comintro.asp Introduction To Com] - basic introduction on how to use COM-components, CodeProject
*{{en}} [
*{{cita web|1=http://www.codeproject.com/com/CCOMThread.asp|2=Understanding The COM Single-Threaded Apartment Part 1|lingua=en|accesso=2 maggio 2006|urlarchivio=https://web.archive.org/web/20060719003112/http://www.codeproject.com/com/CCOMThread.asp|dataarchivio=19 luglio 2006|urlmorto=sì}}
*{{cita web|1=http://www.codeproject.com/com/CCOMThread2.asp|2=Understanding The COM Single-Threaded Apartment Part 2|lingua=en|accesso=2 maggio 2006|urlarchivio=https://web.archive.org/web/20060614231735/http://www.codeproject.com/com/CCOMThread2.asp|dataarchivio=14 giugno 2006|urlmorto=sì}}
*{{cita web|1=http://www.codeproject.com/useritems/BuildCOMServersInDotNet.asp|2=Building COM Servers in .NET|lingua=en|accesso=2 maggio 2006|urlarchivio=https://web.archive.org/web/20060717235730/http://www.codeproject.com/useritems/BuildCOMServersInDotNet.asp|dataarchivio=17 luglio 2006|urlmorto=sì}}
{{Componenti di Windows}}
{{Controllo di autorità}}
{{portale|informatica|microsoft}}
|