Chat-Diskussion über COM: Wer hat hier Recht?
-
Hallo zusammen!
Dieser Beitrag ist jetzt etwas ausergewöhnlich, aber ich hab vorhin mit einem Bekannten über das Thema "Windows & COM" gechattet und sind völlig unterschiedlichen Meinungen! Da wir beide davon überzeugt sind im Recht zu sein, hab ich am Ende den Vorschlag gemacht das Protokoll hier zu posten um zu sehen was die Community so darüber denkt?

LG, Sascha
Und hier das Protokoll:
-
COM = scheiße³
-
Hi,
Ich war dieser 2 und meine Meinung ist nun mal wie die von TM2
Wer Com nutzt bitte aber ich halte nicht viel davon
Ich muß zwar zugeben das ich außer mit DirectX nicht viel mit Com gemacht habe aber es mir DirectX auch nicht schmackhafter bzw leichter machte.
Die Idee ist vllt gut aber ich mag sie nicht
-
COM war und ist eine sehr bedeutende Technologie im Windowsbereich und prägt seit vielen Jahren das Bild von Windows-Anwendungen im 2-Tier-Bereich.
Bei Microsoft scheint man aber nunmehr komplett auf den .NET-Zug aufgesprungen zu sein. Deswegen gebe ich hier mal ein "imho" ab, dass die COM-Features durch .NET ersetzt werden. Auch wenn hier http://www.microsoft.com/com/default.mspx noch von "complementary development technologies" gesprochen wird.
Mal sehen was die Zukunft bringt, von COM aber als "unbedeutende Technologie" oder "unwichtige Technologie" zu sprechen ist imho ein grober Fehler.
MfG SideWinder
-
Com ist keine Unwichtige oder bedeutungslose Technologie.
Nein aber ich möchte nur nicht von Com abhängig sein wenn ich eine eigene WinAPI Kapselung zum erstellen einfacher Software schreiben möchte.Aber so wie mir das Sascha erklärte macht es zusehr abhängig
und das ist mir und bestimmt vielen anderen ein Dorn im Auge.
-
Also das Argument verstehe ich nicht. Da entsteht ehrlich gesagt bei mir ein Knoten im Hirn.
Du kapselst die WinAPI? Wo ist das Problem noch COM zu kapseln? Es ist doch nur reine Fleissarbeit. Mit Abhängigkeit hat das nichts mehr zu tun.
-
Wenn man plattformunabhängig drag&drop implementieren will, dann muss man com ja zwangsweise kapseln und unter linux (z.B.) die dortige Art der Implementierung.
Und COM wird in C und in C++ vom Compiler zur Verfügung gestellt und hat seine eigenen Schlüsselwörtert (das Bekannteste dürfte das interface sein), wie das intern implementiert ist, ist also vollkommen uninterressant, was interressiert ist, dass es läuft.
-
Durch den Einsatz von COM erhält ein Programmierer die Möglichkeiten
- sprachunabhängig,
- versionsunabhängig,
- plattformunabhängig,
- objektorientiert,
- ortsunabhängigzu programmieren.
-
Es muss keine "objektorientierte Sprache" verwendet werden. Der von objektorientierten Sprachen generierte Binärcode wird zwar mit geeigneten Compilern gerne dafür verwendet, es kann aber auch jede andere Sprache benutzt werden. Es wäre kein binärer Standard, wenn Objektorientierung benötigt würde. Auch hier Beispiel Assembler. Übrigens ist es soetwas wie ein "glücklicher Zufall" dass das von MS Compilern verwendete v-table layout kompatibel zu den Anforderungen von COM ist; das ist bei anderen Compilern oft nicht so!
-
Da wir beide davon überzeugt sind im Recht zu sein, hab ich am Ende den Vorschlag gemacht das Protokoll hier zu posten um zu sehen was die Community so darüber denkt?

Wobei im recht?
Dass COM auch in C verwendebar ist? Klar, da sieht IUnknown dann halt so aus:
typedef struct IUnknown
{
ULONG ( STDMETHODCALLTYPE *AddRef )(IUnknown * This);
ULONG ( STDMETHODCALLTYPE *Release )(IUnknown * This);
..
} IUnknown;Das man COM zum täglichen leben braucht? Nein.
Das es einem die Arbeit deutlich erleichtern kann, da an definiertes binäres layout der interface hat, es einen ferigen mashaler gibt, man sich nicht um multithreading kümmern muss (einfache in nem SDA laufen lassen): eindeutiges ja.
Das es Leute, die sich nicht intensiv mit dem thema beschäftig haben und die keinen schimmer haben was ein apartment ist, wie der marshaler funktioniert, system- und merged proxy/stubs funktionieren, wozu IDispatch da ist... regelmähis zu verzeiflung bring: eindeutiges ja.
COM ist ein monster. COM is nicht nur von IUnknown ableiten... wenn man weiß was komm alles macht und wie was funktioniert kann es einem das leben sehr viel leichter machen. Weiß man es nicht wird man sehr schnell verzweifeln.
(wobei ihr keinesfalls sagen will, das COM gelungen ist, die Idee war nett, die unsetztung viel zu kompliziert um es einen ottonormalprogrammierer los lassen zu können und dann zu erwarten das was brauchbares raus kommt).
-
CMatt schrieb:
Das man COM zum täglichen leben braucht? Nein.
Das es einem die Arbeit deutlich erleichtern kann, da an definiertes binäres layout der interface hat, es einen ferigen mashaler gibt, man sich nicht um multithreading kümmern muss (einfache in nem SDA laufen lassen): eindeutiges ja.
Das es Leute, die sich nicht intensiv mit dem thema beschäftig haben und die keinen schimmer haben was ein apartment ist, wie der marshaler funktioniert, system- und merged proxy/stubs funktionieren, wozu IDispatch da ist... regelmähis zu verzeiflung bring: eindeutiges ja.
COM ist ein monster. COM is nicht nur von IUnknown ableiten... wenn man weiß was komm alles macht und wie was funktioniert kann es einem das leben sehr viel leichter machen. Weiß man es nicht wird man sehr schnell verzweifeln.
(wobei ihr keinesfalls sagen will, das COM gelungen ist, die Idee war nett, die unsetztung viel zu kompliziert um es einen ottonormalprogrammierer los lassen zu können und dann zu erwarten das was brauchbares raus kommt).

Solange sich .NET nicht flächendeckend auf Windows durchgesetzt hat ist COM
der einzige pratikable Binärstandard für Komponentenentwicklung unter Windows.
Es ist bei weitem nicht perfekt oder einfach, aber da siehts ja bei CORBA als,
einziger nennenswerter (plattformübergreifender !) Alternative, auch nicht
besser aus, im Gegenteil.