View
109
Download
1
Category
Tags:
Preview:
Citation preview
Enterprise Services und Enterprise Services und COM+ 1.5 COM+ 1.5
Die Applikationsserver-Die Applikationsserver-InfrastrukturInfrastruktur
in Windows Server 2003in Windows Server 2003
Enterprise Services und Enterprise Services und COM+ 1.5COM+ 1.5Die Applikationsserver-Infrastruktur in Windows Die Applikationsserver-Infrastruktur in Windows Server 2003Server 2003
Clemens VastersClemens VastersTechnischer VorstandTechnischer Vorstandnewtelligence AGnewtelligence AGclemensv@newtelligence.comclemensv@newtelligence.com
Dieser Vortrag …Dieser Vortrag …
COM+ 1.5 / Enterprise ServicesCOM+ 1.5 / Enterprise Services Windows Server 2003Windows Server 2003
Das neue ProzessmodellDas neue Prozessmodell ““Dienste ohne Komponenten”Dienste ohne Komponenten” Web ServicesWeb Services
System.EnterpriseServicesSystem.EnterpriseServices Ein neues Programmiermodell für Ein neues Programmiermodell für
ServicesServices Mythen und FaktenMythen und Fakten Anwendungsfälle für Enterprise ServicesAnwendungsfälle für Enterprise Services
COM+ 1.5COM+ 1.5Enterprise ServicesEnterprise Services
Applikationsservertechnologie in Applikationsservertechnologie in Windows Server 2003Windows Server 2003
COM+ 1.5COM+ 1.5 ““Moment mal, das ist doch Moment mal, das ist doch
Technologie aus dem letzten Technologie aus dem letzten Jahrhundert! Don Box hat gesagt, Jahrhundert! Don Box hat gesagt, COM ist tot?!”COM ist tot?!”
a)a) COM+ ist kein “besseres COM”. COM+ ist kein “besseres COM”. COM+ ist ein Satz von Diensten für COM+ ist ein Satz von Diensten für skalierbare, robuste und sichere skalierbare, robuste und sichere Anwendungen.Anwendungen.
b)b) COM+ ist eine allgemeine COM+ ist eine allgemeine Infrastruktur für Infrastruktur für komponentenbasierte komponentenbasierte ServeranwendungenServeranwendungen
c)c) COM+ ist der Kern der Applikations-COM+ ist der Kern der Applikations-serverdienste der Windows Server serverdienste der Windows Server 2003 Plattform. 2003 Plattform.
COM+ 1.5 / Enterprise COM+ 1.5 / Enterprise ServicesServices ““COM+ 1.5” COM+ 1.5”
Name für das COM ProgrammiermodellName für das COM Programmiermodell ““System.EnterpriseServices”System.EnterpriseServices”
Name für das Framework Name für das Framework ProgrammiermodellProgrammiermodell
Zwei Programmiermodelle; ein Zwei Programmiermodelle; ein integrierter Satz von integrierter Satz von BetriebssystemdienstenBetriebssystemdiensten
““Windows Enterprise Services”Windows Enterprise Services”
Server ApplikationServer ApplikationServer ApplikationServer Applikation
Das Prozessmodell: Das Prozessmodell: PoolingPooling
Applikations-Applikations-InstanzInstanz
Applikations-Applikations-InstanzInstanz
Applikations-Applikations-InstanzInstanz
Applikations-Applikations-InstanzInstanz
ClientClientClientClient
Applikations-Applikations-InstanzInstanz
Applikations-Applikations-InstanzInstanz
ProxProxyy
Pooling:Pooling:Eine Applikation, mehrerer Eine Applikation, mehrerer
InstanzenInstanzen• Erhöhung der FehlertoleranzErhöhung der Fehlertoleranz
• Automatische VerteilungAutomatische Verteilung
Applikations-Applikations-InstanzInstanz
Server ApplikationServer ApplikationServer ApplikationServer Applikation
Das Prozessmodell: Das Prozessmodell: PausierenPausieren
ClientClientClientClient
ProxProxyy
Pausieren:Pausieren:Temporäres Anhalten von InstanzenTemporäres Anhalten von Instanzen
• Wartung, kurze KonfigurationsänderungenWartung, kurze Konfigurationsänderungen• Unterbindet neue AktivierungenUnterbindet neue Aktivierungen
• Aktive Objekte werden weiterhin bedientAktive Objekte werden weiterhin bedient
Applikations-Applikations-InstanzInstanz
Server ApplikationServer ApplikationServer ApplikationServer Applikation
Das Prozessmodell: Das Prozessmodell: DeaktivierenDeaktivieren
Applikations-Applikations-InstanzInstanz
Applikations-Applikations-InstanzInstanz
ClientClientClientClient
ProxProxyy
Deaktivieren:Deaktivieren:Permanentes Anhalten von ApplikationenPermanentes Anhalten von Applikationen
• Längere WartungsarbeitenLängere Wartungsarbeiten• Gültig auch nach SystemneustartGültig auch nach Systemneustart
• Applikation bedient restliche aktive ObjekteApplikation bedient restliche aktive Objekte
Server ApplikationServer ApplikationServer ApplikationServer Applikation
Das Prozessmodell: Das Prozessmodell: RecyclingRecycling
Applikations-Applikations-InstanzInstanz
Applikations-Applikations-InstanzInstanz
ClientClientClientClient
ProxProxyy
Recycling:Recycling:Automatischer Neustart/Ersatz von InstanzenAutomatischer Neustart/Ersatz von Instanzen
• Erhöhung der Fehlertoleranz, StabilitätErhöhung der Fehlertoleranz, Stabilität• Kriterien: Zeit, Speicherverbrauch, Kriterien: Zeit, Speicherverbrauch,
Aktivierungen, AufrufeAktivierungen, Aufrufe
Applikations-Applikations-InstanzInstanz
Mehr Prozessmodell …Mehr Prozessmodell …
Dynamischer Threadpool für “MTA”Dynamischer Threadpool für “MTA” Free/Both Threaded C++ KomponentenFree/Both Threaded C++ Komponenten Alle Windows .NET Framework Alle Windows .NET Framework
KomponentenKomponenten Threadpool für STAThreadpool für STA
7-10 Threads/Prozessor für STA 7-10 Threads/Prozessor für STA KomponentenKomponenten
Visual Basic 6 oder Single Threaded C+Visual Basic 6 oder Single Threaded C+++
Neu dokumentiertes API für HostingNeu dokumentiertes API für Hosting CoRegisterSurrogateEx()CoRegisterSurrogateEx()
Memory Activation GatesMemory Activation Gates Reduziert Risiko für “Out of memory”Reduziert Risiko für “Out of memory”
Noch mehr Prozessmodell Noch mehr Prozessmodell …… Neue KatalogfunktionenNeue Katalogfunktionen
Starten/Anhalten von InstanzenStarten/Anhalten von Instanzen Pausieren/Deaktivieren von Pausieren/Deaktivieren von
ApplikationenApplikationen NT ServicesNT Services
Ausführen von Applikationen als ServiceAusführen von Applikationen als Service ““LocalSystem” Identität möglichLocalSystem” Identität möglich Automatischer Spin-Up bei SystemstartAutomatischer Spin-Up bei Systemstart
Fazit:Fazit: Robusteres, flexibleres Prozessmodell Robusteres, flexibleres Prozessmodell
Der Wert des Der Wert des ProzessmodellsProzessmodells ASP.NET: “Kontrollierte Panik”ASP.NET: “Kontrollierte Panik”
Priorität Nr. 1: “Responsiveness” Priorität Nr. 1: “Responsiveness” Threads, AppDomains, Prozesse werden Threads, AppDomains, Prozesse werden
“spontan” recycled, wenn notwendig“spontan” recycled, wenn notwendig Exzellente Strategie für HTTPExzellente Strategie für HTTP Nicht so gut für Caching, Nicht so gut für Caching,
HintergrundthreadsHintergrundthreads Enterprise Services: “Stabilität”Enterprise Services: “Stabilität”
Priorität Nr. 1: VerfügbarkeitPriorität Nr. 1: Verfügbarkeit Prozesse werden kontrolliert recylcledProzesse werden kontrolliert recylcled Langlebige ProzesseLanglebige Prozesse
Prozessgrenzen sind Prozessgrenzen sind sicherersicherer BrowserBrowserBrowserBrowser
ASP.NETASP.NETASP.NETASP.NET
Enterprise Services ApplikationEnterprise Services ApplikationEnterprise Services ApplikationEnterprise Services Applikation
SQL ServerSQL ServerSQL ServerSQL Server
AnonyAnonymm
NetwoNetwork-rk-ServicServicee
ServiceServiceKontoKonto
RFC2617 RFC2617 AuthAuth
RFC2617 RFC2617 AuthAuth
Windows Windows SSPISSPI
Windows Windows SSPISSPI
Windows Windows SSPISSPI
Windows Windows SSPISSPI
ADO.NETADO.NET
ComponentComponentComponentComponentComponentComponentComponentComponent
ComponentComponentComponentComponent ComponentComponentComponentComponentComponentComponentComponentComponent
ComponentComponentComponentComponent
ServicedServicedComponentComponent
ServicedServicedComponentComponent
ServicedServicedComponentComponent
ServicedServicedComponentComponent
Identität:Identität:DOMAENE/KontoDOMAENE/Konto
Identität:Identität:DOMAENE/KontoDOMAENE/Konto
ACLACL PrincipalPermissionPrincipalPermission
RollenRollen
RollenRollenGruppenGruppen
““Integrated Integrated Security=SSPI”Security=SSPI”
““Integrated Integrated Security=SSPI”Security=SSPI”
Dienste ohne Dienste ohne KomponentenKomponenten ““Service Domains”Service Domains” Erzeugen von Kontexten “inline”Erzeugen von Kontexten “inline”
Einfach innerhalb eines CodeblocksEinfach innerhalb eines Codeblocks Keine KomponentenregistrierungKeine Komponentenregistrierung Am Nützlichsten für TransaktionenAm Nützlichsten für Transaktionen
Dim ServiceConfig Cfg As New ServiceConfigDim ServiceConfig Cfg As New ServiceConfigCfg.Transaction = TransactionOption.RequiredCfg.Transaction = TransactionOption.RequiredServiceDomain.Enter(Cfg)ServiceDomain.Enter(Cfg)
‘ ‘ System.Messaging – Daten aus MSMQ holenSystem.Messaging – Daten aus MSMQ holen‘ System.Data.SqlClient – in SQL speichern‘ System.Data.SqlClient – in SQL speichern
ServiceDomain.Leave(Cfg)ServiceDomain.Leave(Cfg)
Dim ServiceConfig Cfg As New ServiceConfigDim ServiceConfig Cfg As New ServiceConfigCfg.Transaction = TransactionOption.RequiredCfg.Transaction = TransactionOption.RequiredServiceDomain.Enter(Cfg)ServiceDomain.Enter(Cfg)
‘ ‘ System.Messaging – Daten aus MSMQ holenSystem.Messaging – Daten aus MSMQ holen‘ System.Data.SqlClient – in SQL speichern‘ System.Data.SqlClient – in SQL speichern
ServiceDomain.Leave(Cfg)ServiceDomain.Leave(Cfg)
Web Services: Web Services: Checkbox Checkbox SOAPSOAP Einfachster Weg, ES Einfachster Weg, ES
Anwendungen als Anwendungen als Web Services Web Services bereitzustellenbereitzustellen
Via NETFX/RemotingVia NETFX/Remoting Erfordert HTTPS in Erfordert HTTPS in
StandardwebsiteStandardwebsite Pro:Pro:
Sehr einfach zu nutzenSehr einfach zu nutzen ““Administrator Administrator
Feature”Feature” Integration ohne CodeIntegration ohne Code
Contra:Contra: Kein WS-SecurityKein WS-Security Nicht erweiterbarNicht erweiterbar Nur SOAP RPC Nur SOAP RPC
EncodingEncoding
Enterprise ServicesEnterprise Services
System.EnterpriseServicesSystem.EnterpriseServices
System.EnterpriseServicesSystem.EnterpriseServices
Neues Programmiermodell für Neues Programmiermodell für ServicesServices Nicht nur ein Wrapper für COM Prog. Nicht nur ein Wrapper für COM Prog.
ModellModell Optimierungen besonders bei TransportOptimierungen besonders bei Transport
Integraler Bestandteil des Integraler Bestandteil des FrameworksFrameworks
Die Zukunft:Die Zukunft: COM+ COM+ XML Enterprise Services (GXA) XML Enterprise Services (GXA) Ziel: Programmiermodell bleibt stabilZiel: Programmiermodell bleibt stabil
Mythen und FaktenMythen und Fakten
““EnterpriseServices benötigt EnterpriseServices benötigt COM/Interop”COM/Interop” So nicht richtig.So nicht richtig. EnterpriseServices EnterpriseServices
marshallt Aufrufe durch binäres marshallt Aufrufe durch binäres Remoting via DCOM Tunnel.Remoting via DCOM Tunnel.
Ausnahmen:Ausnahmen: Fkt.-Signaturen mit isomorphen TypenFkt.-Signaturen mit isomorphen Typen
Interop ist hier Interop ist hier deutlichdeutlich schneller schneller Aufrufe von Queued ComponentsAufrufe von Queued Components
““Das COM+ Modell ist überholt”Das COM+ Modell ist überholt” … … sagen Sie das mal IBM, BEA oder Sun sagen Sie das mal IBM, BEA oder Sun
AktivierungAktivierung
Server ApplikationServer ApplikationServer ApplikationServer ApplikationClientClientClientClient
ProxProxyy
Dim comp As New SampleCompDim comp As New SampleCompcomp.MakeCall()comp.MakeCall()Dim comp As New SampleCompDim comp As New SampleCompcomp.MakeCall()comp.MakeCall()
Erstellen von Proxy, Erstellen von Proxy, Client-Kontext, RPC Client-Kontext, RPC
Channel, Server-Channel, Server-Kontext, ObjektKontext, Objekt
MethodenaufrufMethodenaufruf
[JustInTimeActivation][JustInTimeActivation]
Server ApplikationServer ApplikationServer ApplikationServer ApplikationClientClientClientClient
ProxProxyy
Dim comp As New SampleCompDim comp As New SampleCompcomp.MakeCall()comp.MakeCall()comp.MakeCall()comp.MakeCall()
Dim comp As New SampleCompDim comp As New SampleCompcomp.MakeCall()comp.MakeCall()comp.MakeCall()comp.MakeCall()
Erstellen von Proxy, Erstellen von Proxy, Client-Kontext, RPC Client-Kontext, RPC
Channel, Server-Channel, Server-Kontext, ObjektKontext, Objekt
MethodenaufrufMethodenaufruf[AutoComplete][AutoComplete]
Activate()Activate()
Deactivate()Deactivate()
AnwendungsszenarienAnwendungsszenarien Transaktionen (autom. verwendet)Transaktionen (autom. verwendet)
Sicherstellung von Isolation (ACID)Sicherstellung von Isolation (ACID) Deterministische Freigabe von Deterministische Freigabe von
RessourcenRessourcen Reduzierung des Reduzierung des
AktivierungsaufwandsAktivierungsaufwands
AnwendungsszenarienAnwendungsszenarien Transaktionen (autom. verwendet)Transaktionen (autom. verwendet)
Sicherstellung von Isolation (ACID)Sicherstellung von Isolation (ACID) Deterministische Freigabe von Deterministische Freigabe von
RessourcenRessourcen Reduzierung des Reduzierung des
AktivierungsaufwandsAktivierungsaufwands
Server ApplikationServer ApplikationServer ApplikationServer Applikation
[ObjectPooling][ObjectPooling]
ClientClientClientClient
ProxProxyy
Dim comp As New SampleCompDim comp As New SampleCompcomp.MakeCall()comp.MakeCall()comp.MakeCall()comp.MakeCall()
Dim comp As New SampleCompDim comp As New SampleCompcomp.MakeCall()comp.MakeCall()comp.MakeCall()comp.MakeCall()
Erstellen von Proxy, Erstellen von Proxy, Client-Kontext, RPC Client-Kontext, RPC
Channel, Server-Channel, Server-Kontext, ObjektKontext, Objekt
MethodenaufrufMethodenaufruf[AutoComplete][AutoComplete]
Activate()Activate()
Deactivate()Deactivate()
AnwendungsszenarienAnwendungsszenarien Optimierung für “teure” Optimierung für “teure”
AktivierungenAktivierungen Caches, externe RessourcenCaches, externe Ressourcen
Optimierung zusammen mit JITAOptimierung zusammen mit JITA Limitierung für beschränkte Limitierung für beschränkte
RessourcenRessourcen Obergrenzen erlauben Serialisierung von Obergrenzen erlauben Serialisierung von
ZugriffenZugriffen
AnwendungsszenarienAnwendungsszenarien Optimierung für “teure” Optimierung für “teure”
AktivierungenAktivierungen Caches, externe RessourcenCaches, externe Ressourcen
Optimierung zusammen mit JITAOptimierung zusammen mit JITA Limitierung für beschränkte Limitierung für beschränkte
RessourcenRessourcen Obergrenzen erlauben Serialisierung von Obergrenzen erlauben Serialisierung von
ZugriffenZugriffen
CanBePooled()CanBePooled()
[InterfaceQueuing][InterfaceQueuing]
Server ApplikationServer ApplikationServer ApplikationServer ApplikationClientClientClientClient
ProxProxyy
Dim comp As SampleCompDim comp As SampleCompcomp = Marshal.BindToMoniker(“queue:new:progid”)comp = Marshal.BindToMoniker(“queue:new:progid”)comp.MakeCall()comp.MakeCall()
Dim comp As SampleCompDim comp As SampleCompcomp = Marshal.BindToMoniker(“queue:new:progid”)comp = Marshal.BindToMoniker(“queue:new:progid”)comp.MakeCall()comp.MakeCall()
RPCRPCMsgMsg
RPCRPCMsgMsg
RPCRPCMsgMsg
RPCRPCMsgMsg
RPCRPCMsgMsg
AnwendungsszenarienAnwendungsszenarien Asynchrone Asynchrone
EntkopplungEntkopplung Skalierbarkeit!Skalierbarkeit! Skalierbarkeit!!Skalierbarkeit!! Skalierbarkeit!!!Skalierbarkeit!!!EinschränkungenEinschränkungen Keine RückgabewerteKeine Rückgabewerte Keine AusgabewerteKeine Ausgabewerte
AnwendungsszenarienAnwendungsszenarien Asynchrone Asynchrone
EntkopplungEntkopplung Skalierbarkeit!Skalierbarkeit! Skalierbarkeit!!Skalierbarkeit!! Skalierbarkeit!!!Skalierbarkeit!!!EinschränkungenEinschränkungen Keine RückgabewerteKeine Rückgabewerte Keine AusgabewerteKeine Ausgabewerte
[EventClass][EventClass]
Server ApplikationServer ApplikationServer ApplikationServer ApplikationClientClientClientClient
ProxProxyy
Dim comp As New SampleCompDim comp As New SampleCompcomp.MakeCall()comp.MakeCall()Dim comp As New SampleCompDim comp As New SampleCompcomp.MakeCall()comp.MakeCall()
ApplikationApplikationApplikationApplikation
““Publisher”Publisher”
ApplikationApplikationApplikationApplikation
AnwendungsszenarienAnwendungsszenarien BenachrichtigungenBenachrichtigungen ErweiterungspunkteErweiterungspunkte SubsystemkopplungSubsystemkopplungKombinationsmöglichkeiKombinationsmöglichkei
tenten TransaktionenTransaktionen QueuingQueuing
AnwendungsszenarienAnwendungsszenarien BenachrichtigungenBenachrichtigungen ErweiterungspunkteErweiterungspunkte SubsystemkopplungSubsystemkopplungKombinationsmöglichkeiKombinationsmöglichkei
tenten TransaktionenTransaktionen QueuingQueuing
““Subscriber”Subscriber”
[Transaction][Transaction]
Server ApplikationServer ApplikationServer ApplikationServer ApplikationClientClientClientClient
ProxProxyy
Dim comp As New SampleCompDim comp As New SampleCompcomp.MakeCall()comp.MakeCall()Dim comp As New SampleCompDim comp As New SampleCompcomp.MakeCall()comp.MakeCall()
ApplikationApplikationApplikationApplikation
SQLSQL
MQMQ
DB2DB2
DTCDTCDTCDTC
““Enlist” Enlist” bei DTCbei DTC
Data Providers Data Providers entnehmen Tx entnehmen Tx aus Kontextaus Kontext
Tx-Kontext Tx-Kontext wird wird
propagiertpropagiert
AnwendungsszenarioAnwendungsszenario Verteiltes FehlermanagementVerteiltes Fehlermanagement
AnwendungsszenarioAnwendungsszenario Verteiltes FehlermanagementVerteiltes Fehlermanagement
ZusammenfassungZusammenfassung
Enterprise ServicesEnterprise Services Dienste zur Implementierung häufig Dienste zur Implementierung häufig
benötigter Lösungspatterns in benötigter Lösungspatterns in SoftwaresystemenSoftwaresystemen
Dienste zur Optimierung des Dienste zur Optimierung des Laufzeitverhaltens und zur Erhöhung Laufzeitverhaltens und zur Erhöhung der Skalierbarkeitder Skalierbarkeit
Ein eigenständiges Prozessmodell für Ein eigenständiges Prozessmodell für KomponentenKomponenten
Kein “altes Eisen”, sondern ein Kein “altes Eisen”, sondern ein strategisches Programmiermodell für strategisches Programmiermodell für Dienste in der Windows PlattformDienste in der Windows Plattform
Fragen und AntwortenFragen und Antworten
Weitere InformationenWeitere Informationen TimEwald, „TimEwald, „Transactional COM+“, Addison Wesley, ISBN Transactional COM+“, Addison Wesley, ISBN
02016159400201615940 Philip A. Bernstein, Eric Newcomer, “Principles of Transaction Philip A. Bernstein, Eric Newcomer, “Principles of Transaction
Processing”, Morgan Kaufman, ISBN Processing”, Morgan Kaufman, ISBN 1558604154 1558604154 Clemens Vasters, “.NET Enterprise Services”, Hanser, ISBN Clemens Vasters, “.NET Enterprise Services”, Hanser, ISBN
3446221530 3446221530 Don Box, Chris Sells, “Essential .NET”, Addison Wesley, ISBN Don Box, Chris Sells, “Essential .NET”, Addison Wesley, ISBN
0201734117 0201734117 Juval Löwy, “COM and .NET Component Services”, O’Reilly, Juval Löwy, “COM and .NET Component Services”, O’Reilly,
ISBN ISBN 0596001037 0596001037
Ihr Potenzial. Unser Antrieb.
Recommended