44
Einstieg in COM+ Konzepte und Programmierung Michael Willers [email protected] Microsoft GmbH

Einstieg in COM+ Konzepte und Programmierung Michael Willers [email protected] Microsoft GmbH

Embed Size (px)

Citation preview

Page 1: Einstieg in COM+ Konzepte und Programmierung Michael Willers mwillers@microsoft.com Microsoft GmbH

Einstieg in COM+Konzepte und Programmierung

Michael [email protected]

Microsoft GmbH

Page 2: Einstieg in COM+ Konzepte und Programmierung Michael Willers mwillers@microsoft.com Microsoft GmbH

Agenda

Was ist COM+? Warum COM+? Wie funktioniert‘s? Wo gibt es weitere Info‘s?

Page 3: Einstieg in COM+ Konzepte und Programmierung Michael Willers mwillers@microsoft.com Microsoft GmbH

COM+ ist die Weiterentwicklung von COM und integriert Dienste für die Entwicklung verteilter Anwendungen

•attributbasierte Programmierung

•Administrieren statt programmieren

Was ist COM+?

Page 4: Einstieg in COM+ Konzepte und Programmierung Michael Willers mwillers@microsoft.com Microsoft GmbH

IISIIS

Prozessemit Modulenabbilden!

COM+COM+COM+COM+

Application Server Windows 2000

Die wichtigsten Dienste werden zu einer Infrastruktur integriert

Warum COM+?Geschäftsprozesse abbilden

Web Queuing Sicherheit Transaktionen Komponenten

Page 5: Einstieg in COM+ Konzepte und Programmierung Michael Willers mwillers@microsoft.com Microsoft GmbH

Warum COM+?Dienste für verteilte Anwendungen

ohne COM+:• Synchronisation für Threads implementieren

• Logik für Zugriffsrechte implementieren

• Eventservice implementieren

• Ressourcenverwaltung implementieren

• Problemlösung implementieren mit COM+:

• Synchronisation für Threads vorhanden

• Logik für Zugriffsrechte vorhanden

• Eventservice vorhanden

• Ressourcenverwaltung vorhanden

• Problemlösung implementieren

Page 6: Einstieg in COM+ Konzepte und Programmierung Michael Willers mwillers@microsoft.com Microsoft GmbH

Warum COM+?COM+ ist kein „Entweder oder“

Wer sich mit Threading und Security unter COM auskennt, kann auch ohne COM+ entwickeln!

Aber: „Wie erklären Sie Ihrem Chef den zusätzlichen Aufwand?“

Page 7: Einstieg in COM+ Konzepte und Programmierung Michael Willers mwillers@microsoft.com Microsoft GmbH

Vereinfachte Programmierung

• Vergabe von Rechten basiert auf Rollen

• “single user” components

• „Automatische“ Transaktionen Skalierung

• Wiederverwendung von Threads, Objektinstanzen und Datenbankverbindungen

Administration und Installation

• Konfiguration erfolgt grafisch

• Komponenten werden in “Paketen” gruppiert

Warum COM?Die wichtigsten Merkmale

Page 8: Einstieg in COM+ Konzepte und Programmierung Michael Willers mwillers@microsoft.com Microsoft GmbH

Unter COM+ kann ein COM-Objekt über Attribute mitteilen, welche Systemdienste es bei seiner Ausführung benutzen möchte• Administrieren statt programmieren

Beim Aufruf des Objekts wird eine auf dessen Attributen basierende Laufzeitumgebung erstellt, die dem Objekt die angeforderten Systemdienste bereitstellt

Diese Laufzeitumgebung heißt Kontext• Jedes COM-Objekt besitzt einen Kontext

Wie funktioniert‘s?Was ist ein Kontext?

Page 9: Einstieg in COM+ Konzepte und Programmierung Michael Willers mwillers@microsoft.com Microsoft GmbH

Client

Win9xWinNT 4.xWin2000

COM+ Umgebung unter Win2000

Kontext A

Interceptor

ObjectContext

Wie funktioniert‘s?Jedes Objekt besitzt einen Kontext

Objekt 1

Kontext B

Client

Page 10: Einstieg in COM+ Konzepte und Programmierung Michael Willers mwillers@microsoft.com Microsoft GmbH

Wie funktioniert‘s?Rollenbasierte Sicherheit

Page 11: Einstieg in COM+ Konzepte und Programmierung Michael Willers mwillers@microsoft.com Microsoft GmbH

Wie funktioniert‘s?Beispiel für rollenbasierte Sicherheit

Page 12: Einstieg in COM+ Konzepte und Programmierung Michael Willers mwillers@microsoft.com Microsoft GmbH

Administration vereinfachen

• Erstellen Sie Benutzergruppen, die den Rollen entsprechen

Achtung: Standardmäßig ist die Prüfung der Zugriffsrechte für eine COM+ Anwendung ausgeschaltet

Zugriffsrechte können hinunter bis zu einzelnen Methoden festgelegt werden

Innerhalb einer COM+ Anwendung erfolgen keine Sicherheitsüberprüfungen – nur bei Aufrufen von „aussen“ in die Anwendung hinein!

Wie funktioniert‘s?Rollenbasierte Sicherheit, Hinweise

Page 13: Einstieg in COM+ Konzepte und Programmierung Michael Willers mwillers@microsoft.com Microsoft GmbH

Eine Activity sorgt für die Synchronisation gleichzeitiger Zugriffe

Activites werden über das Attribut Concurrency festgelegt

Activities sind Transaktionsgrenzen

Wie funktioniert‘s?Was ist eine Activity?

Page 14: Einstieg in COM+ Konzepte und Programmierung Michael Willers mwillers@microsoft.com Microsoft GmbH

Wie funktioniert‘s?Das Attribut Concurrency

BIHand

Activity X

DIFootIFoot

Activity Y

AIUser

CIFace

Supportedoder Required

Requires NewNot Supported

EIMouth

Supported

Page 15: Einstieg in COM+ Konzepte und Programmierung Michael Willers mwillers@microsoft.com Microsoft GmbH

Interceptor

Object Context

Your Object

m_pActivity

Activity X

Client ruft Methode auf1

1

Interceptor fordert Lock an2

2

Lock erhalten, Aufruf durchführen

3

3

Aufruf beendet, Interceptor gibt Lock frei

4

4

Kontrolle zurück an Client5

5

Wie funktioniert‘s?Activities und Synchronisation

Page 16: Einstieg in COM+ Konzepte und Programmierung Michael Willers mwillers@microsoft.com Microsoft GmbH

Transaktionen werden unter COM+ deklarativ erstellt• Transaktionen erfolgen komponentenbasiert

• Transaktionen werden über das Attribut Transaction festgelegt

• Deadlocks werden per TimeOut verhindert

• Gleichzeitige Zugriffe innerhalb einer Transaktion werden durch Activities vermieden• Activities sind Transaktionsgrenzen!

Wie funktioniert‘s?Transaktionen unter COM+

Page 17: Einstieg in COM+ Konzepte und Programmierung Michael Willers mwillers@microsoft.com Microsoft GmbH

Wie funktioniert‘s?Das Attribut Transaction

Page 18: Einstieg in COM+ Konzepte und Programmierung Michael Willers mwillers@microsoft.com Microsoft GmbH

Prozess NProzess M

Activity YActivity X

Kontext C Kontext DKontext A Kontext B

Transaktion A Transaktion B

Wie funktioniert‘s?Prozess, Kontext, Activity, Transaktion

Page 19: Einstieg in COM+ Konzepte und Programmierung Michael Willers mwillers@microsoft.com Microsoft GmbH

Die Attribute Concurrency und Transaction sind voneinander abhängig• Wenn Sie Anwendungen per Script installieren,

müssen Sie darauf achten

Wie funktioniert‘s?Activities sind Transaktionsgrenzen!

Transaction Concurrency

Requires New Required/Requires New

Required Required

Supported Required

Page 20: Einstieg in COM+ Konzepte und Programmierung Michael Willers mwillers@microsoft.com Microsoft GmbH

Activity

Transaktion

Wie funktioniert‘s?Transaktionen mit einem Objekt

Doomed FALSE

Kontext

Happy TRUE

Done FALSE

ClientWurzelobjekt

Page 21: Einstieg in COM+ Konzepte und Programmierung Michael Willers mwillers@microsoft.com Microsoft GmbH

Es bestimmt den Ausgang einer Transaktion• FALSE: commit

• TRUE: rollback

Es wird zu Beginn einer Transaktion angelegt und hat den Wert FALSE

Es wird überprüft, wenn das Wurzelobjekt deaktiviert wird

Ein direkter Zugriff ist nicht möglich• Setzen erfolgt über das Happy-Flag

Wie funktioniert‘s?Das Doomed-Flag

Page 22: Einstieg in COM+ Konzepte und Programmierung Michael Willers mwillers@microsoft.com Microsoft GmbH

Wie funktioniert‘s?Das Happy-Flag Es bestimmt den Inhalt des Doomed-Flags Es wird beim Erstellen eines Objekts angelegt

und hat den Wert TRUE IContextState::SetMyTransactionVote setzt und

löscht das Flag• TRUE: SetMyTransactionVote TxCommit

• FALSE: SetMyTransactionVote TxAbort Flag wird beim Zerstören oder Deaktivieren

eines Objekts überprüft• Der allerletzte Aufruf vor dem Zerstören oder

Deaktivieren zählt!

• Der negierte Wert des Flags wird dann in das Doomed-Flag übernommen

Page 23: Einstieg in COM+ Konzepte und Programmierung Michael Willers mwillers@microsoft.com Microsoft GmbH

Wie funktioniert‘s?Zerstören/Deaktivieren eines Objekts

Ein Objekt wird zerstört, wenn der Aufrufer seine Verbindung zum Objekt löst • Set ... = Nothing

• Scope einer Routine wird verlassen

Ein Objekt wird deaktivert, wenn das Done-Flag gesetzt ist

Page 24: Einstieg in COM+ Konzepte und Programmierung Michael Willers mwillers@microsoft.com Microsoft GmbH

Wie funktioniert‘s?Das Done-Flag Es bestimmt, ob ein Objekt deaktiviert wird Es wird beim Erstellen eines Objekts angelegt

und hat den Wert FALSE IContextState::SetDeactivateOnReturn setzt

und löscht das Flag• TRUE: SetDeactivateOnReturn TRUE

• FALSE: SetDeactivateOnReturn FALSE

Flag wird erst am Ende eines Methodenaufrufs überprüft• Der letzte Aufruf innerhalb einer Methode zählt

• Das Objekt wird sofort nach dem Ende des Methodenaufrufs deaktiviert

Page 25: Einstieg in COM+ Konzepte und Programmierung Michael Willers mwillers@microsoft.com Microsoft GmbH

When I‘m happy and done Part 1

Page 26: Einstieg in COM+ Konzepte und Programmierung Michael Willers mwillers@microsoft.com Microsoft GmbH

Objekt wird vom rufenden Client entsorgt• Im Objekt gespeicherte Daten bleiben erhalten

• Dauer einer Transaktion verlängert sich

Objekt deaktiviert sich selbst mittels SetDeactivateOnReturn• Objekt wird unmittelbar am Ende eines

Methodenaufrufs deaktiviert

• Im Objekt gespeicherte Daten gehen verloren

• Transaktionen sind so kurz wie möglich

When I‘m happy and doneBestandsaufnahme

Page 27: Einstieg in COM+ Konzepte und Programmierung Michael Willers mwillers@microsoft.com Microsoft GmbH

Zustandsbehaftete Objekte (emissary) :• Saubere Modellierung, da mit „echten Objekten“

gearbeitet wird

• Strukturierung durch ein Objektmodell möglich

• Skalierung im Hinblick auf Transaktionen nicht optimal, da Objekte nicht deaktiviert werden kann

Zustandslose Objekte (executant):• Keine „echten“ Objekte

• Objekte bestehen ausschliesslich aus Methoden, die konkrete Aktionen abbilden (z.B. Aufgeben einer Bestellung)

• Verbesserte Skalierung im Hinblick auf Transaktionen, da Objekte bei Bedarf aktiviert und deaktiviert werden können

When I‘m happy and doneZustand oder kein Zustand?

Page 28: Einstieg in COM+ Konzepte und Programmierung Michael Willers mwillers@microsoft.com Microsoft GmbH

Activity

Transaktion

Wie funktioniert‘s?Transaktionen mit mehreren Objekten

Doomed FALSE

Kontext

Happy TRUE

Done FALSE

ClientWurzelobjekt

Kontext

Happy TRUE

Done FALSE

2ndObjekt

Kontext

Happy TRUE

Done FALSE

2ndObjekt

Page 29: Einstieg in COM+ Konzepte und Programmierung Michael Willers mwillers@microsoft.com Microsoft GmbH

Client3 Server3 Server31 Server32DoSomething1

DoSomething1

TxAbortDeactivate

TxCommitDeactivate

DoSomething5

When I‘m happy and done Sequenz 1

Page 30: Einstieg in COM+ Konzepte und Programmierung Michael Willers mwillers@microsoft.com Microsoft GmbH

Client3 Server3 Server31 Server32

DoSomething2DoSomething1

TxAbortDeactivate

DoSomething2

When I‘m happy and done Sequenz 2

Page 31: Einstieg in COM+ Konzepte und Programmierung Michael Willers mwillers@microsoft.com Microsoft GmbH

Client3 Server3 Server31 Server32

DoSomething3DoSomething1

TxAbortDeactivate

DoSomething1

When I‘m happy and done Sequenz 3

Page 32: Einstieg in COM+ Konzepte und Programmierung Michael Willers mwillers@microsoft.com Microsoft GmbH

Client3 Server3 Server31 Server32

DoSomething4DoSomething1

TxAbortDeactivate

DoSomething5

When I‘m happy and done Sequenz 4

Page 33: Einstieg in COM+ Konzepte und Programmierung Michael Willers mwillers@microsoft.com Microsoft GmbH

When I‘m happy and done Part 2

Page 34: Einstieg in COM+ Konzepte und Programmierung Michael Willers mwillers@microsoft.com Microsoft GmbH

Eine Transaktion wird grundsätzlich beendet, wenn das Wurzelobjekt deaktiviert wird

Wird ein sekundäres Objekt deaktiviert und dessen Happy-Flag ist FALSE, wird...• ...das Doomed-Flag auf TRUE gesetzt

• ...die Kontrolle an das Wurzelobjekt zurückgegeben

In diesem Fall sollte das Wurzelobjekt sofort deaktiviert und somit die Transaktion beendet werden • Unteilbarkeit einer Transaktion

• Weitere Aufrufe liefern Fehler

Wie funktioniert‘s?Transaktionen – Fazit

Page 35: Einstieg in COM+ Konzepte und Programmierung Michael Willers mwillers@microsoft.com Microsoft GmbH

Wie funktioniert‘s?Erkennen einer ungültigen Transaktion

FRAGE: Wie kann man feststellen, ob eine Transaktion ungültig ist, wenn man das Doomed-Flag nicht direkt auslesen kann?

ANTWORT: Fehler sollten stets direkt an den Client bzw. das rufende Objekt durchgereicht werden• Visual Basic : Err.Raise benutzen

• Visual C++ : AtlReportError oder Error benutzen

Page 36: Einstieg in COM+ Konzepte und Programmierung Michael Willers mwillers@microsoft.com Microsoft GmbH

Wie funktioniert‘s? Fallbeispiel Bestellwesen

Abbilden des Geschäftsprozesses „Aufgeben einer Bestellung“ • Sonderfall: Kunde überschreitet Kreditlimit

• Sonderfall: Produkt ist ausverkauft

Verschiedene Clients• Web-Browser

• Windows-Anwendung

Page 37: Einstieg in COM+ Konzepte und Programmierung Michael Willers mwillers@microsoft.com Microsoft GmbH

Wie funktioniert‘s? Fallbeispiel Bestellwesen – Übersicht

Win32

SQL7 / Access

Web

COM+

CBroker

CQuery

CCustomer

CProduct

COrderbus_Order.dll

db_Order.dll

Req TX

No TX

Support TX

Support TX

Support TX

Page 38: Einstieg in COM+ Konzepte und Programmierung Michael Willers mwillers@microsoft.com Microsoft GmbH

Fallbeispiel Bestellwesen

Page 39: Einstieg in COM+ Konzepte und Programmierung Michael Willers mwillers@microsoft.com Microsoft GmbH

Wie funktioniert‘s?Administrieren von COM+ Anwendungen

Anlegen von COM+ Anwendungen sowie Zuordnung von Komponenten und Rollen per UI ist nur bei kleineren Anwendungen praktisch• Wenige COM+ Anwendungen mit wenigen

Komponenten

• Nur ein Rechner auf dem die COM+ Anwendung „läuft“

Die COM+ Dienste sind vollständig über COM-Schnittstellen administrierbar• Aufsetzen einer Anwendung per VB-Script

Page 40: Einstieg in COM+ Konzepte und Programmierung Michael Willers mwillers@microsoft.com Microsoft GmbH

„Halten“ Sie Ihre Objektmodelle nur auf dem Client• Zustandsbehaftete Objekte

„Serverobjekte“ sollten ausschliesslich Aktionen abbilden, um eine optimale Skalierung zu erreichen• z.B. Bestellung aufgeben

Stoßen Sie Aktionen immer nur aus dem Objektmodell heraus an• ein „Serverobjekt“ implementiert im Idealfall

genau eine Schnittstelle mit genau einer Methode

Wie funktioniert’s? Allgemeine Tipps – Part 1

Page 41: Einstieg in COM+ Konzepte und Programmierung Michael Willers mwillers@microsoft.com Microsoft GmbH

Wie funktioniert’s? Allgemeine Tipps – Part 2

Die Dauer einer Transaktion sollte so kurz wie möglich sein• Isolationsstufe ISOLATION_SERIALIZABLE

Access-Datenbanken können nur über ODBC eingebunden werden• Die Schnittstelle ITransactionJoin ist bei den

JET-OLEDB-Providern nicht implementiert

Connectstrings für Datenbanken sollten nicht „fest verdrahtet“ sein• z.B. Constuctstrings von COM+ benutzen

Page 42: Einstieg in COM+ Konzepte und Programmierung Michael Willers mwillers@microsoft.com Microsoft GmbH

Wo gibt es weitere Info’s? msdn online

• http://www.microsoft.com/germany/msdn

TechTalk• www.microsoft.com/germany/msdn/techtalk

Bücher• Programming Distributed Applications...

Ted PattisonISBN 1-57231-961-5

• COM IDL and Interface DesignISBN 1-86100-235-4

Zeitschriften• basicpro 1/99

• Microsoft System Journal 4/98 und 1/2000

Page 43: Einstieg in COM+ Konzepte und Programmierung Michael Willers mwillers@microsoft.com Microsoft GmbH

Uff...

Fragen!?

Page 44: Einstieg in COM+ Konzepte und Programmierung Michael Willers mwillers@microsoft.com Microsoft GmbH