Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Konzepte und Programmierung

Ähnliche Präsentationen


Präsentation zum Thema: "Konzepte und Programmierung"—  Präsentation transkript:

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

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

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

4 Warum COM+? Geschäftsprozesse abbilden
Application Server Windows 2000 Die wichtigsten Dienste werden zu einer Infrastruktur integriert IIS Prozesse mit Modulen abbilden! COM+ Web Queuing Sicherheit Transaktionen Komponenten Object-oriented, 3-tier development Build great services into Windows Transactions Load balancing Component management Support all languages Simplify our APIs for developers Offline client support is critical

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

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 Warum COM? Die wichtigsten Merkmale
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

8 Wie funktioniert‘s? Was ist ein Kontext?
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 The shared features in Visual Studio 6.0 support each of the areas in the development lifecycle. Design: Visual Studio supports design in both the physical and logical state with the Visual Modeler and the Database Designer. Develop: Rapid application development support is included in all of the Visual Studio 6.0 development tools. The tools share a common look and feel, allowing developers to easily capitalize on their knowledge base from tool to tool. Analyze: The Visual Studio Analyzer allows developers to visualize distributed solutions: understand their structure, locate problems, and isolate performance bottlenecks. Deploy: Visual Studio 6.0 includes enhance build, package and deploy functionality for web based solutions. Manage: The Visual Component Manager manages components written in any language in the suite. Each tool is also integrated with Visual Source Safe for complete version control.

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

10 Wie funktioniert‘s? Rollenbasierte Sicherheit

11 Wie funktioniert‘s? Beispiel für rollenbasierte Sicherheit

12 Wie funktioniert‘s? Rollenbasierte Sicherheit, Hinweise
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!

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

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

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

16 Wie funktioniert‘s? Transaktionen unter COM+
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! The shared features in Visual Studio 6.0 support each of the areas in the development lifecycle. Design: Visual Studio supports design in both the physical and logical state with the Visual Modeler and the Database Designer. Develop: Rapid application development support is included in all of the Visual Studio 6.0 development tools. The tools share a common look and feel, allowing developers to easily capitalize on their knowledge base from tool to tool. Analyze: The Visual Studio Analyzer allows developers to visualize distributed solutions: understand their structure, locate problems, and isolate performance bottlenecks. Deploy: Visual Studio 6.0 includes enhance build, package and deploy functionality for web based solutions. Manage: The Visual Component Manager manages components written in any language in the suite. Each tool is also integrated with Visual Source Safe for complete version control.

17 Wie funktioniert‘s? Das Attribut Transaction

18 Wie funktioniert‘s? Prozess, Kontext, Activity, Transaktion
Prozess M Prozess N Activity X Activity Y Kontext A Kontext B Kontext C Kontext D Transaktion A Transaktion B

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

20 Wie funktioniert‘s? Transaktionen mit einem Objekt
Activity Transaktion Doomed FALSE Kontext Wurzel objekt Client Happy TRUE Done FALSE

21 Wie funktioniert‘s? Das Doomed-Flag
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

22 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

23 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

24 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

25 When I‘m happy and done Part 1

26 When I‘m happy and done Bestandsaufnahme
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

27 When I‘m happy and done Zustand oder kein Zustand?
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

28 Wie funktioniert‘s? Transaktionen mit mehreren Objekten
Activity Transaktion Doomed FALSE Kontext 2nd Objekt Kontext Happy TRUE Done FALSE Wurzel objekt Client Kontext Happy TRUE Done FALSE 2nd Objekt Happy TRUE Done FALSE

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

30 When I‘m happy and done Sequenz 2
Client3 Server3 Server31 Server32 DoSomething2 DoSomething1 TxAbort Deactivate DoSomething2

31 When I‘m happy and done Sequenz 3
Client3 Server3 Server31 Server32 DoSomething3 DoSomething1 TxAbort Deactivate DoSomething1

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

33 When I‘m happy and done Part 2

34 Wie funktioniert‘s? Transaktionen – Fazit
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

35 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

36 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

37 Wie funktioniert‘s? Fallbeispiel Bestellwesen – Übersicht
Win32 Web COM+ db_Order.dll Support TX CCustomer CProduct COrder bus_Order.dll Req TX No TX CBroker CQuery SQL7 / Access

38 Fallbeispiel Bestellwesen

39 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

40 Wie funktioniert’s? Allgemeine Tipps – Part 1
„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

41 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

42 Wo gibt es weitere Info’s?
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 Fragen!? Uff...

44


Herunterladen ppt "Konzepte und Programmierung"

Ähnliche Präsentationen


Google-Anzeigen