Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Einstieg in COM+ Konzepte und Programmierung Michael Willers Microsoft GmbH.

Ähnliche Präsentationen


Präsentation zum Thema: "Einstieg in COM+ Konzepte und Programmierung Michael Willers Microsoft GmbH."—  Präsentation transkript:

1 Einstieg in COM+ Konzepte und Programmierung Michael Willers Microsoft GmbH

2 Agenda Was ist COM+? Warum COM+? Wie funktionierts? Wo gibt es weitere Infos?

3 COM+ ist die Weiterentwicklung von COM und integriert Dienste für die Entwicklung verteilter Anwendungen attributbasierte Programmierung Administrieren statt programmieren Was ist COM+?

4 IIS Prozesse mit Modulen abbilden! COM+ COM+ Application Server Windows 2000 Die wichtigsten Dienste werden zu einer Infrastruktur integriert Warum COM+? Geschäftsprozesse abbilden Web Queuing Sicherheit Transaktionen Komponenten

5 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

6 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?

7 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

8 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 funktionierts? Was ist ein Kontext?

9 Client Win9x WinNT 4.x Win2000 COM+ Umgebung unter Win2000 Kontext A Interceptor Object Context Wie funktionierts? Jedes Objekt besitzt einen Kontext Objekt 1 Kontext B Client

10 Wie funktionierts? Rollenbasierte Sicherheit

11 Wie funktionierts? Beispiel für rollenbasierte Sicherheit

12 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 funktionierts? Rollenbasierte Sicherheit, Hinweise

13 Eine Activity sorgt für die Synchronisation gleichzeitiger Zugriffe Activites werden über das Attribut Concurrency festgelegt Activities sind Transaktionsgrenzen Wie funktionierts? Was ist eine Activity?

14 Wie funktionierts? Das Attribut Concurrency B IHand Activity X D IFoot Activity Y A IUser C IFace Supported oder Required Requires New Not Supported E IMouth Supported

15 Interceptor Object Context Your Object m_pActivity Activity X Client ruft Methode auf 1 1 Interceptor fordert Lock an 2 2 Lock erhalten, Aufruf durchführen 3 3 Aufruf beendet, Interceptor gibt Lock frei 4 4 Kontrolle zurück an Client 5 5 Wie funktionierts? Activities und Synchronisation

16 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 funktionierts? Transaktionen unter COM+

17 Wie funktionierts? Das Attribut Transaction

18 Prozess NProzess M Activity YActivity X Kontext CKontext DKontext AKontext B Transaktion A Transaktion B Wie funktionierts? Prozess, Kontext, Activity, Transaktion

19 Die Attribute Concurrency und Transaction sind voneinander abhängig Wenn Sie Anwendungen per Script installieren, müssen Sie darauf achten Wie funktionierts? Activities sind Transaktionsgrenzen! Transaction Concurrency Requires New Required/ Requires New Required Supported Required

20 Activity Transaktion Wie funktionierts? Transaktionen mit einem Objekt DoomedFALSE Kontext HappyTRUE DoneFALSE Client Wurzel objekt

21 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 funktionierts? Das Doomed-Flag

22 Wie funktionierts? 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

23 Wie funktionierts? 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

24 Wie funktionierts? 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

25 When Im happy and done Part 1

26 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 Im happy and done Bestandsaufnahme

27 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 Im happy and done Zustand oder kein Zustand?

28 Activity Transaktion Wie funktionierts? Transaktionen mit mehreren Objekten DoomedFALSE Kontext HappyTRUE DoneFALSE Client Wurzel objekt Kontext HappyTRUE DoneFALSE 2nd Objekt Kontext HappyTRUE DoneFALSE 2nd Objekt

29 Client3 Server3 Server31 Server32 DoSomething1 TxAbort Deactivate TxCommit Deactivate DoSomething5 When Im happy and done Sequenz 1

30 Client3 Server3 Server31 Server32 DoSomething2 DoSomething1 TxAbort Deactivate DoSomething2 When Im happy and done Sequenz 2

31 Client3 Server3 Server31 Server32 DoSomething3 DoSomething1 TxAbort Deactivate DoSomething1 When Im happy and done Sequenz 3

32 Client3 Server3 Server31 Server32 DoSomething4 DoSomething1 TxAbort Deactivate DoSomething5 When Im happy and done Sequenz 4

33 When Im happy and done Part 2

34 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 funktionierts? Transaktionen – Fazit

35 Wie funktionierts? 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

36 Wie funktionierts? Fallbeispiel Bestellwesen Abbilden des Geschäftsprozesses Aufgeben einer Bestellung Sonderfall: Kunde überschreitet Kreditlimit Sonderfall: Produkt ist ausverkauft Verschiedene Clients Web-Browser Windows-Anwendung

37 Wie funktionierts? Fallbeispiel Bestellwesen – Übersicht Win32 SQL7 / Access Web COM+ CBroker CQuery CCustomer CProduct COrderbus_Order.dll db_Order.dll Req TX No TX Support TX

38 Fallbeispiel Bestellwesen

39 Wie funktionierts? 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

40 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 funktionierts? Allgemeine Tipps – Part 1

41 Wie funktionierts? 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

42 Wo gibt es weitere Infos? msdn online TechTalk Bücher Programming Distributed Applications... Ted Pattison ISBN COM IDL and Interface Design ISBN Zeitschriften basicpro 1/99 Microsoft System Journal 4/98 und 1/2000

43 Uff... Fragen!?

44


Herunterladen ppt "Einstieg in COM+ Konzepte und Programmierung Michael Willers Microsoft GmbH."

Ähnliche Präsentationen


Google-Anzeigen