PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : COM+ 1.5


grakaman
2003-08-29, 16:03:46
Eigentlich kenne ich mich mit COM nicht aus. Wozu brauche ich das im .NET Framework? Es muss wohl etwas mit transaktionssicheren Applicationen zu tun haben. Aber wozu brauche ich da COM+, um das zu realisieren?

MfG

Exxtreme
2003-08-29, 16:21:40
COM dient dazu einheitliche und aufwärtskompatible Schnittstellen zu realisieren.

Es ist eine Art Lowlevel-PlugIn-Technik, sprich, man kann Features aus anderen Programmen nutzen. Man könnte z.B. den Renderer des IE per COM für sich nutzbar machen.

Bei den Details muss ich leider passen, da mir diese Programmiertechnik nicht liegt.

Demirug
2003-08-29, 16:46:29
COM+ ist wie das plus schon sagt eine erweiterung von COM um funktionen welche das Implementieren von Bussines Multi-Tier Anwendungen vereinfachen.

Mit dem .Net Framework hat das aber nur am Rande zu tun. Es gibt im Framework aus kompatibilitätsgründen Klassen um auf COM+ Anwendungen zuzugreifen und umgekehrt COM+ Awendungen den Zugriff auf .Net Apps zu ermöglichen.

Wenn man also kein Interop Problem hat lässt man besser die Finger davon.

Exxtreme, COM ist die logische Fortsetzung von OOP über DLL und Sprachgrenzen hinweg. .Net ist dabei aber um Welten komfortabler und besser.

Exxtreme
2003-08-29, 16:49:55
Original geschrieben von Demirug
Exxtreme, COM ist die logische Fortsetzung von OOP über DLL und Sprachgrenzen hinweg. .Net ist dabei aber um Welten komfortabler und besser.
OK, sprachunabhängig hätte ich noch hinschreiben müssen.

Das Problem an COM ist der irrwitzige Initialisierungsaufwand.

Zweites Problem hat man wenn ein "Distributor" die Schnittstellen ändert was man normalerweise tunlichst unterlassen sollte.

Demirug
2003-08-29, 16:54:54
Original geschrieben von Exxtreme
OK, sprachunabhängig hätte ich noch hinschreiben müssen.

Das Problem an COM ist der irrwitzige Initialisierungsaufwand.

???

Also ich brauche dafür nur eine Funktion am Start des Programms und eine am Ende zusätzliche aufzurufen. Ansonsten ändert sich nicht viel man benutzt eben einen CreateInstance und kein new mehr und zum "Löschen" wird ein Release und kein delete benutzt.

Zweites Problem hat man wenn ein "Distributor" die Schnittstellen ändert was man normalerweise tunlichst unterlassen sollte.

Nach den Regeln ist das nachträgliche ändern von Interfaces ja auch verboten aber man kann ja leicht neue hinzufügen.

ScottManDeath
2003-08-29, 17:00:44
aber irgendwie hat man dann nach einigen iterationen so lustige namen wie IDirect3DVertexDeclaration9, das sieht IMO nicht schön aus im code ;)

ich habe damit nur mal am rande zu tuen gehabt (DirectShow-Plugin), war schon stress genug nur das SDK sample anzupassen

und irgendwie bin ich mit dem ganzen release counting überfordert....naja vielleicht sollte ich mal das ganz von hand programmieren um zu sehen wie es geht.....

Demirug
2003-08-29, 17:07:39
Original geschrieben von ScottManDeath
aber irgendwie hat man dann nach einigen iterationen so lustige namen wie IDirect3DVertexDeclaration9, das sieht IMO nicht schön aus im code ;)

Also ich finde die Nummern am Ende durchaus praktisch.

ich habe damit nur mal am rande zu tuen gehabt (DirectShow-Plugin), war schon stress genug nur das SDK sample anzupassen

Da hast du dir auch ausgerechnet eines der schlimmsten Beispiele für COM ausgesucht.

und irgendwie bin ich mit dem ganzen release counting überfordert....naja vielleicht sollte ich mal das ganz von hand programmieren um zu sehen wie es geht.....

Du meinst referenz counting?

ScottManDeath
2003-08-29, 17:50:35
jepp das war richtig PITA ;) hat aber geklappt, hab solange im code rumgewühlt bis ich die methode gefunden habe die das bild auf den DC blittet und dann ganz frech die daten genommen und auf den parallelport geschickt ;D (daran angeschlossen ist eine 128x64x7bit LED-Matrix)


ähmm ja ich meinte referenz counting, mit der release() methode.... freud'scher versprecher halt ;)

Xmas
2003-08-29, 20:54:29
Original geschrieben von ScottManDeath
ähmm ja ich meinte referenz counting, mit der release() methode.... freud'scher versprecher halt ;)
Dafür gibts doch Smart Pointer, kleine Klassen die sich wie Pointer behandeln lassen und im Zuweisungsoperator und Destruktor selbständig Release() aufrufen.
COM fand ich nach etwas Einarbeitungszeit gar nicht mal so schlecht, aber .NET ist netter ;)

grakaman
2003-09-01, 08:36:26
Hallo

Ich arbeite mich jezt eigentlich in das Thema .NET Remoting/WebServices ein. Normalerweise dachte ich, damit könne man verteilte Anwendungen realisieren. Nun habe ich aber schon ein paar mal gelesen, dass man das nur mit COM+ richtig machen könne, was mich etwas verwirrt. Die entsprechendne Proxy Klassen wären im Namespace system.enterpriseservices, den ich aber bis jetzt noch nicht finden konnte.

MfG

grakaman
2003-09-02, 11:26:27
Gut, ich habe jetzt herausbekommen, dass für mich COM+ keinen weiteren Sinn hat, ausser verteilte Transaktionen zu realisieren.

MfG