COM, COM+, DCOM, wo anfangen?

Lesezeit: 8 Minuten

Ich bin neugierig auf COM+, DCOM. Ich weiß, dass MSFT Sie nicht dazu ermutigt, diese Tools nativ zu verwenden (dh mit C/C++, tatsächlich ist nicht viel Dokumentation verfügbar), aber ich möchte lernen, diese Technologien zu verwenden, wie das Einbetten von Internet Explorer in ein C-Programm.

Ich dachte, dass ich vielleicht Leute finden könnte, die damit gearbeitet haben oder sich mit dieser Technologie auskennen.

Wo soll man anfangen? Irgendwelche Ideen? Irgendein Beispiel (wie Hello World DCOM)?

  • Übrigens, lassen Sie sich nicht entmutigen von dem Umfang des Lernens, der durch unsere Antworten vorgeschlagen wird. Es hört sich so an, als ob Sie versuchen, einen COM-Client und keine COM-Komponente zu schreiben. COM-Clients sind um Größenordnungen einfacher zu schreiben als COM-Komponenten. Du wirst Spaß haben.

    – Euro Mizellen

    25. Mai 2009 um 14:02 Uhr

Wenn Sie es ernst meinen, COM zu lernen, ist “Essential COM” von Don Box definitiv ein absolutes “Muss”. COM kann verwirrend sein und meiner bescheidenen Meinung nach ist Don Box einer der wenigen Leute, die es tatsächlich “verstanden” haben.

Der Beispielcode in „Essential COM“ ist in C++. Sie werden nicht viele Bücher finden, die COM in C unterstützen. Sie können COM in C schreiben, aber es wird sehr sehr schmerzlich. COM ist für die C++-Entwicklung optimiert.

Dieses Buch ist weder perfekt noch “vollständig”. Es gibt einige (zugegeben, etwas esoterische) Bereiche, die das Buch überfliegt. Zum Beispiel hat das Buch ungefähr 1 1/2 Seiten über “Moniker” (ich habe noch nie eine Behandlung von Monikern gesehen, die mich zufriedenstellt). Ich betrachte dieses Buch als DAS grundlegende Buch.

Zweitens möchten Sie im wirklichen Leben wahrscheinlich eine unterstützende Bibliothek wie ATL verwenden, anstatt den gesamten COM-Kleber direkt zu schreiben. Es gibt zu viele Möglichkeiten, selbst bei der grundlegenden Einrichtung subtile Fehler in COM zu machen. ATL gibt Ihnen gute Muster und implementiert den langweiligen Code für Sie. Beim Lernen sind Sie besser dran, wenn Sie einfaches C++ verwenden.

Es gibt viele Bücher über ATL und einige davon sind ziemlich gut. Ich verstehe, dass sich ATL seit den alten Tagen von VC++6 ziemlich verändert hat, aber ich habe dort keine Kenntnisse aus erster Hand: Leider ist der größte Teil des COM-Codes, mit dem ich arbeite, für immer an den Geschmack von C++ in VC6 gebunden .

Stellen Sie sicher, dass jedes Buch, das Sie erhalten, für die Version von Visual Studio und/oder ATL geschrieben ist, die Sie verwenden möchten.

Einige Hintergrundinformationen zu COM-Büchern:

Beachten Sie, dass es viele Bücher gibt, die COM falsch verstehen oder sich auf die falschen Dinge konzentrieren. Die älteren Bücher sind in dieser Hinsicht schlechter. Einige der ersten Bücher behandelten COM als wenig mehr als ein Installationsdetail, das erforderlich ist, damit OLE funktioniert (“Object Linking and Embedding”, das ermöglicht es Ihnen, einen Tabellenbereich per Drag-and-Drop in ein Word-Dokument zu ziehen). Aus diesem Grund ist viel Material da draußen sehr verwirrend. Es dauerte eine Weile, bis die Leute erkannten, dass OLE nicht so wichtig war und COM wirklich.

Als Don Box „Essential COM“ veröffentlichte, begannen die Risse im Fundament von COM offensichtlich zu werden. Es gibt keine großen Fehler bei COM, aber die Bedürfnisse der Entwicklergemeinschaft hatten sich weiterentwickelt und waren über das hinausgewachsen, was COM ohne ernsthafte Überarbeitung leisten konnte.

.NET wurde aus diesem Bemühen geboren, die Beschränkungen in COM zu beheben, insbesondere im Bereich der “Typinformationen”. Nur wenige Jahre nach der Veröffentlichung von „Effective COM“ verlagerte sich die Aufmerksamkeit der Community weg von .NET. Aus diesem Grund ist gutes COM-Schulungsmaterial jetzt und wird wahrscheinlich für immer begrenzt sein.

COM ist also nicht kaputt und funktioniert hervorragend für die Dinge, für die es verwendet wird (deshalb verwendet Explorer es immer noch). Es ist einfach nicht mehr die beste Lösung für viele der Probleme, die heute gelöst werden müssen.

Zusammenfassend:

Ich empfehle “Essential COM” für die Grundlagen. Dann eines der vielen guten verfügbaren ATL-Bücher (keine starken Präferenzen dort) und dann andere Ressourcen wie MSDN oder – natürlich – Stack Overflow, um Bereiche abzudecken, die für Sie von besonderem Interesse sind.

Wenn Sie es lieber vermeiden möchten, sich auf Ressourcen der Sorte toter Bäume zu verlassen, machen Sie weiter und lernen Sie ATL aus dem Internet. Aber einige Bücher sind es wert, auf altmodische Weise gelesen zu werden – und „Essential COM“ ist eines davon.

Viel Glück.

KOM, COM+ und DCOM sind drei völlig verschiedene Dinge. An diesem Punkt gibt es nur sehr wenig Grund, COM zu lernen, und fast keinen Grund, DCOM zu lernen. Der einzige Grund, der mir einfällt, ist, wenn Sie ältere Komponenten warten oder integrieren müssen. COM+ wird immer noch verwendet, weil es das Out-of-Process-Hosting von Komponenten und nette Dinge wie verteiltes Transaktionsmanagement ermöglicht.

Der beste Weg, um mit dem Schreiben von COM zu beginnen, ist die Verwendung von ATL. In .NET wird COM+ aufgerufen Unternehmensdienste.

Das beste Buch, das ich über COM kenne, ist Essential COM von Don Box, und das COM+-Buch von Tim Ewald ist auch ausgezeichnet.

  • Der neue WinRT-Kern von Windows 8 basiert auf COM. Kommerzielle Programmierer mit einem guten COM-Verständnis sind seit Jahren sehr gefragt und werden es noch viele weitere Jahre sein.

    – Neutrino

    6. März 2012 um 15:59 Uhr

Benutzer-Avatar
Gast128

Ich habe eine Liste von Büchern zusammengestellt, die in dieser Reihenfolge gelesen werden sollten:

  1. „Inside COM“ von Dale Rogerson, das sollte Ihr erstes Buch sein. Es erklärt die Grundlagen der Referenzzählung, Schnittstellen, IUnknown, Komponenten, IDL, IDispatch, Automatisierungstypen und Apartments. Aus diesem Buch werden Sie feststellen, dass einiges an Code erforderlich ist, um Komponenten zu erstellen, und dass Sie ein „Release“ leicht überspringen können, was zu einem Ressourcenleck führt. Auch diesem Buch fehlen einige Details.
  2. ‘ATL Internals’ von Tavares. ATL hilft Ihnen sowohl bei der Verwendung von Clients als auch bei der Erstellung von COM-Komponenten. Mit intelligenten Zeigern (z. B. CComPtr) ist es heutzutage schwierig, die Referenzzählung falsch zu machen. ATL erleichtert auch die Erstellung von Komponenten in C++. Leider verbirgt ATL viele Funktionen in Makros und hat eine kontraintuitive Methode zur Implementierung von IUnknown. Eine Alternative könnte „Inside ATL“ sein.
  3. ‘Essential COM’ von Don Box. Dieses Buch wird häufig erwähnt, aber es ist kein gutes Anfängerbuch. Es verfehlt das Gesamtbild, ist aber großartig in seinen Details (zB der Unterschied zwischen ‘size_is’ und ‘length_is’ in IDL).
  4. „ActiveX und OLE verstehen: Ein Leitfaden für Entwickler und Manager“. Dieses Buch berührt einige der eher esoterischen Schnittstellen wie IPersist, IStorage; IMoniker etc., geht aber nicht sehr ins Detail.

Seien Sie sich bewusst, dass COM eine ziemlich alte Technologie ist, obwohl sie insbesondere für native Entwickler immer noch brauchbar ist.

Benutzer-Avatar
Danny T

COM ist immer noch nützlich, wenn Sie mit verschiedenen Windows-APIs arbeiten oder diese erweitern möchten, z. B. Shell-Erweiterungen, Skripthosts usw.

Essential COM (Box) und ATL Internals (Rector und Sells) sind ausgezeichnete Quellen. Effektives COM (Box, et al) ist auch ok.

Wenn Sie wirklich das vollständige Bild auf COM haben möchten, versuchen Sie, eine Kopie des immensen Inside OLE (Brockschmidt) zu erhalten.

Distributed COM (Eddon, Eddon) ist auf DCOM anständig, ebenso wie Inside COM+ Base Services (Eddon, Eddon) auf COM+.

sogar einige angeblich “reine” C++-Bücher enthalten Bits zu COM. Matthew Wilsons Imperfet C++ enthält einige nützliche Teile, um zu sehen, wie es im Inneren funktioniert, und sein Extended STL-Buch enthält einige Kapitel darüber, wie COM an STL-Sammlungen angepasst werden kann.

Wenn Sie mehr darüber erfahren möchten, wie man COM-Server schreibt, müssen Sie sich wahrscheinlich mit ATL vertraut machen. Die oben erwähnten ATL Internals sind ein Muss. Trotz seines bescheiden klingenden Titels enthält Beginning ATL COM auch einige nützliche Dinge.

Hilfreich für den Lernprozess kann es auch sein, COM mit .NET zu vergleichen. Das .NET- und COM-Interoperabilitätshandbuch ist eine große Schwalbe, enthält aber einige nützliche Dinge. Außerdem würde ich mir Shared Source CLI Essentials ansehen, nur um die beiden Technologien gegenüberzustellen.

HTH

Beginnen Sie mit „Inside COM“, fahren Sie dann mit „Inside DCOM“ fort und lesen Sie dann „Essential COM“. Sie werden COM in den Griff bekommen. Sowohl die Bücher Inside COM als auch Inside DCOM sind Microsoft-Veröffentlichungen. Hervorragende Bücher für diejenigen, die COM/DCOM gründlich kennenlernen möchten.

Benutzer-Avatar
ChrisW

Wesentliches COM dient insbesondere zum Implementieren oder Verwenden von COM-Komponenten aus C++, ohne dass eine IDE, ein Framework oder eine Bibliothek zu Hilfe kommt.

COM ist zum Beispiel trivial von VB oder Delphi zu verwenden, die den COM-spezifischen Glue vor dem Anwendungsprogrammierer verbergen. In C++ würden Sie oft eine Klassenbibliothek verwenden, die versucht, die Details zu abstrahieren … Wesentliches COM wird Ihnen sagen, was diese Details sind (und dabei eine Art eigene Bibliothek/Framework implementieren).

Benutzer-Avatar
Paul Sonier

Wenn Sie mehr über COM erfahren möchten, veröffentlicht Microsoft ein Buch über COM und wie es funktioniert … http://www.amazon.com/Inside-Microsoft-Programming-Dale-Rogerson/dp/1572313498/ref= sr_1_2?ie=UTF8&s=books&qid=1243029018&sr=8-2

  • Ist das Stand der Technik? Es scheint irgendwie alt zu sein.

    – no_ripcord

    22. Mai 2009 um 21:55 Uhr

  • COM ist alt. In den letzten 8 Jahren drehte sich alles bei Microsoft Press um .NET.

    – Käse

    22. Mai 2009 um 22:09 Uhr

  • @Cheeso hat Recht; COM ist eine alte Technologie. Microsoft konzentriert sich bei den meisten seiner Neuentwicklungen auf .NET, aber die COM-Entwicklung ist immer noch vollständig gültig; Es ist nur so, dass die meisten Referenzen, die Sie darauf finden, etwas alt sein werden.

    – Paul Sonier

    22. Mai 2009 um 22:14 Uhr

  • “Inside COM” ist ein großartiges Buch. Ich habe mehrere COM-Bücher gelesen, als COM heiß war, und das war das Buch, das am meisten Sinn machte. “Essential COM” von Don Box wäre gut zweite Buch zu lesen, aber es enthält zu viele Details. “Inside COM” ist einfacher zu beginnen und deckt die wichtigsten Punkte ab. (Ich glaube nicht, dass alles in „essential“ COM essenziell ist!)

    – John D. Koch

    30. Mai 2009 um 2:06 Uhr

1380570cookie-checkCOM, COM+, DCOM, wo anfangen?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy