290 likes | 433 Views
Enterprise Services und COM+ 1.5 Die Applikationsserver-Infrastruktur in Windows Server 2003. Enterprise Services und COM+ 1.5 Die Applikationsserver-Infrastruktur in Windows Server 2003. Clemens Vasters Technischer Vorstand newtelligence AG clemensv@newtelligence.com. Dieser Vortrag ….
E N D
Enterprise Services und COM+ 1.5 Die Applikationsserver-Infrastrukturin Windows Server 2003
Enterprise Services und COM+ 1.5Die Applikationsserver-Infrastruktur in Windows Server 2003 Clemens Vasters Technischer Vorstand newtelligence AG clemensv@newtelligence.com
Dieser Vortrag … • COM+ 1.5 / Enterprise Services • Windows Server 2003 • Das neue Prozessmodell • “Dienste ohne Komponenten” • Web Services • System.EnterpriseServices • Ein neues Programmiermodell für Services • Mythen und Fakten • Anwendungsfälle für Enterprise Services
COM+ 1.5Enterprise Services Applikationsservertechnologie in Windows Server 2003
COM+ 1.5 • “Moment mal, das ist doch Technologie aus dem letzten Jahrhundert! Don Box hat gesagt, COM ist tot?!” • COM+ ist kein “besseres COM”. COM+ ist ein Satz von Diensten für skalierbare, robuste und sichere Anwendungen. • COM+ ist eine allgemeine Infrastruktur für komponentenbasierte Serveranwendungen • COM+ ist der Kern der Applikations-serverdienste der Windows Server 2003 Plattform.
COM+ 1.5 / Enterprise Services • “COM+ 1.5” • Name für das COM Programmiermodell • “System.EnterpriseServices” • Name für das Framework Programmiermodell • Zwei Programmiermodelle; ein integrierter Satz von Betriebssystemdiensten • “Windows Enterprise Services”
Das Prozessmodell: Pooling Server Applikation Client Applikations-Instanz Applikations-Instanz Applikations-Instanz Applikations-Instanz Proxy • Pooling:Eine Applikation, mehrerer Instanzen • Erhöhung der Fehlertoleranz • Automatische Verteilung
Das Prozessmodell: Pausieren Server Applikation Client Applikations-Instanz Proxy • Pausieren:Temporäres Anhalten von Instanzen • Wartung, kurze Konfigurationsänderungen • Unterbindet neue Aktivierungen • Aktive Objekte werden weiterhin bedient
Das Prozessmodell: Deaktivieren Server Applikation Client Applikations-Instanz Proxy • Deaktivieren:Permanentes Anhalten von Applikationen • Längere Wartungsarbeiten • Gültig auch nach Systemneustart • Applikation bedient restliche aktive Objekte
Das Prozessmodell: Recycling Server Applikation Client Applikations-Instanz Applikations-Instanz Proxy • Recycling:Automatischer Neustart/Ersatz von Instanzen • Erhöhung der Fehlertoleranz, Stabilität • Kriterien: Zeit, Speicherverbrauch, Aktivierungen, Aufrufe
Mehr Prozessmodell … • Dynamischer Threadpool für “MTA” • Free/Both Threaded C++ Komponenten • Alle Windows .NET Framework Komponenten • Threadpool für STA • 7-10 Threads/Prozessor für STA Komponenten • Visual Basic 6 oder Single Threaded C++ • Neu dokumentiertes API für Hosting • CoRegisterSurrogateEx() • Memory Activation Gates • Reduziert Risiko für “Out of memory”
Noch mehr Prozessmodell … • Neue Katalogfunktionen • Starten/Anhalten von Instanzen • Pausieren/Deaktivieren von Applikationen • NT Services • Ausführen von Applikationen als Service • “LocalSystem” Identität möglich • Automatischer Spin-Up bei Systemstart • Fazit: • Robusteres, flexibleres Prozessmodell
Der Wert des Prozessmodells • ASP.NET: “Kontrollierte Panik” • Priorität Nr. 1: “Responsiveness” • Threads, AppDomains, Prozesse werden “spontan” recycled, wenn notwendig • Exzellente Strategie für HTTP • Nicht so gut für Caching, Hintergrundthreads • Enterprise Services: “Stabilität” • Priorität Nr. 1: Verfügbarkeit • Prozesse werden kontrolliert recylcled • Langlebige Prozesse
Anonym Network-Service ServiceKonto Prozessgrenzen sind sicherer Browser RFC2617 Auth ACL PrincipalPermission ASP.NET Windows SSPI Rollen Enterprise Services Applikation Identität:DOMAENE/Konto ServicedComponent ServicedComponent Component Component Component Component Component Component ADO.NET “Integrated Security=SSPI” Windows SSPI Rollen Gruppen SQL Server
Dienste ohne Komponenten • “Service Domains” • Erzeugen von Kontexten “inline” • Einfach innerhalb eines Codeblocks • Keine Komponentenregistrierung • Am Nützlichsten für Transaktionen Dim ServiceConfig Cfg As New ServiceConfig Cfg.Transaction = TransactionOption.Required ServiceDomain.Enter(Cfg) ‘ System.Messaging – Daten aus MSMQ holen‘ System.Data.SqlClient – in SQL speichern ServiceDomain.Leave(Cfg)
Web Services: Checkbox SOAP • Einfachster Weg, ES Anwendungen als Web Services bereitzustellen • Via NETFX/Remoting • Erfordert HTTPS in Standardwebsite • Pro: • Sehr einfach zu nutzen • “Administrator Feature” • Integration ohne Code • Contra: • Kein WS-Security • Nicht erweiterbar • Nur SOAP RPC Encoding
Enterprise Services System.EnterpriseServices
System.EnterpriseServices • Neues Programmiermodell für Services • Nicht nur ein Wrapper für COM Prog. Modell • Optimierungen besonders bei Transport • Integraler Bestandteil des Frameworks • Die Zukunft: • COM+ XML Enterprise Services (GXA) • Ziel: Programmiermodell bleibt stabil
Mythen und Fakten • “EnterpriseServices benötigt COM/Interop” • So nicht richtig. EnterpriseServices marshallt Aufrufe durch binäres Remoting via DCOM Tunnel. • Ausnahmen: • Fkt.-Signaturen mit isomorphen Typen • Interop ist hier deutlich schneller • Aufrufe von Queued Components • “Das COM+ Modell ist überholt” • … sagen Sie das mal IBM, BEA oder Sun
Aktivierung Erstellen von Proxy, Client-Kontext, RPC Channel, Server-Kontext, Objekt Methodenaufruf Client Server Applikation Proxy Dim comp As New SampleComp comp.MakeCall()
[JustInTimeActivation] Erstellen von Proxy, Client-Kontext, RPC Channel, Server-Kontext, Objekt Methodenaufruf[AutoComplete] Anwendungsszenarien • Transaktionen (autom. verwendet) • Sicherstellung von Isolation (ACID) • Deterministische Freigabe von Ressourcen • Reduzierung des Aktivierungsaufwands Client Server Applikation Activate() Proxy Deactivate() Dim comp As New SampleComp comp.MakeCall() comp.MakeCall()
[ObjectPooling] Erstellen von Proxy, Client-Kontext, RPC Channel, Server-Kontext, Objekt Methodenaufruf[AutoComplete] Anwendungsszenarien • Optimierung für “teure” Aktivierungen • Caches, externe Ressourcen • Optimierung zusammen mit JITA • Limitierung für beschränkte Ressourcen • Obergrenzen erlauben Serialisierung von Zugriffen Client Server Applikation Activate() Proxy Deactivate() CanBePooled() Dim comp As New SampleComp comp.MakeCall() comp.MakeCall()
[InterfaceQueuing] Anwendungsszenarien • Asynchrone Entkopplung • Skalierbarkeit! • Skalierbarkeit!! • Skalierbarkeit!!! Einschränkungen • Keine Rückgabewerte • Keine Ausgabewerte Server Applikation Client Proxy RPCMsg RPCMsg RPCMsg RPCMsg RPCMsg Dim comp As SampleComp comp = Marshal.BindToMoniker(“queue:new:progid”) comp.MakeCall()
[EventClass] “Publisher” Anwendungsszenarien • Benachrichtigungen • Erweiterungspunkte • Subsystemkopplung Kombinationsmöglichkeiten • Transaktionen • Queuing Client Server Applikation “Subscriber” Proxy Applikation Applikation Dim comp As New SampleComp comp.MakeCall()
Data Providers entnehmen Tx aus Kontext [Transaction] SQL Anwendungsszenario • Verteiltes Fehlermanagement Client Server Applikation MQ Proxy “Enlist” bei DTC Applikation DTC Tx-Kontext wird propagiert Dim comp As New SampleComp comp.MakeCall() DB2
Zusammenfassung • Enterprise Services • Dienste zur Implementierung häufig benötigter Lösungspatterns in Softwaresystemen • Dienste zur Optimierung des Laufzeitverhaltens und zur Erhöhung der Skalierbarkeit • Ein eigenständiges Prozessmodell für Komponenten • Kein “altes Eisen”, sondern ein strategisches Programmiermodell für Dienste in der Windows Plattform
Weitere Informationen • TimEwald, „Transactional COM+“, Addison Wesley, ISBN 0201615940 • Philip A. Bernstein, Eric Newcomer, “Principles of Transaction Processing”, Morgan Kaufman, ISBN 1558604154 • Clemens Vasters, “.NET Enterprise Services”, Hanser, ISBN 3446221530 • Don Box, Chris Sells, “Essential .NET”, Addison Wesley, ISBN 0201734117 • Juval Löwy, “COM and .NET Component Services”, O’Reilly, ISBN 0596001037