Confusion COM / OLE / ActiveX / IDispatch
Question
Je ne peux pas comprendre les différences entre ces termes.
Les synonymes COM et ActiveX sont-ils synonymes?
L'objet ActiveX est-il juste un objet COM qui expose IDispatch?
Beaucoup d'anciennes pages MSDN mentionnent IDispatch sans contexte COM. A-t-il une histoire distincte et a-t-il été introduit sous le parapluie COM plus tard dans son cycle de vie?
Où se situe OLE? Sa présence (considérable) dans les noms MFC et MSDN en général est-elle simplement héritée?
Wikipedia donne un aperçu, mais pas beaucoup. Je n'ai pas trouvé de référence plus détaillée.
La solution
Vous avez trouvé des citations dans Programmation COM par exemple :
Une autre chose que vous trouverez rapidement avec COM est que le marketing avait une excursion jour avec la terminologie. Plutôt que aider à promouvoir la compréhension, vous trouverez dans la plupart des cas, il favorise mystère. ... OLE, ActiveX, Remotable Objets - ce qui signifie ce que cela la semaine? ...
COM a évolué de la solution à un problème spécifique - comment autoriser un mot processeur pour modifier la feuille de calcul dans un lettre sans que l'utilisateur ait à sortir le traitement de texte pour le faire. Ce la solution s'appelait OLE. ... Toutefois, avec la deuxième version de OLE (OLE2), ses créateurs ont modifié OLE32.DLL pour exposer plus de la fonctionnalité de base de OLE afin que son API puisse être utilisée pour permettre à toute application d'accéder au fonctionnalité d'un autre. Cette API, qui n'a pas beaucoup changé depuis 1993, est ce qui est considéré comme le COM API. ...
Une fois que l'API COM a été exposée, Microsoft l'a utilisé pour créer ce qui était puis appelé contrôles OLE pour permettre commandes sophistiquées (par exemple, boutons cette spirale, liste des cases qui jouent musique) écrite en Visual C ++ pour être accessible à Visual Basic applications. Finalement ce même la technologie a été utilisée pour permettre un contrôle être téléchargé et utilisé par votre site web navigateur. À ce stade, le nom changé pour les contrôles ActiveX ou tout simplement ActiveX pur pour le marketing les raisons. Bien que vous puissiez emballer fonctionnalité dans un contrôle ActiveX, ses requrirements ont été spécialisé pour supporter un utilisateur contrôle de l'interface.
Je suis toujours curieux de connaître la toute dernière phrase: un objet COM doit-il satisfaire à certaines exigences supplémentaires pour être qualifié de contrôle ActiveX? - mais ça suffit pour le laisser partir.
Merci pour vos réponses!
Autres conseils
ActiveX est une stratégie marketing pour COM, bien que ActiveX soit généralement utilisé dans le contexte de "Contrôles ActiveX". qui sont des objets GUI.
IDispatch est une interface implémentée par des objets COM afin que les programmes clients puissent appeler ses méthodes de manière dynamique au moment de l'exécution (liaison tardive), par opposition à au moment de la compilation, où toutes les méthodes et tous les types d'argument doivent être connus à l'avance. .
OLE est la version antérieure de COM.
En ce qui concerne OLE: COM a ses racines dans OLE. Mais aujourd'hui, OLE peut être considéré comme étant construit sur le dessus de COM et est principalement utilisé pour ce que son nom suggère: la liaison et l'intégration de documents. Alors que COM ne définit lui-même que quelques interfaces (IUnknown, IClassFactory, IMalloc, etc.), OLE ajoute toute une série d'interfaces supplémentaires telles qu'IMoniker, IOleItemComtainer, etc.
En résumé: COM est la base, ActiveX et OLE sont des couches situées au-dessus de COM.