MTS verwenden
Nach oben zu Die Struktur des Anwendungsservers
Sie können einen Anwendungsserver entwickeln, der die Vorteile der besonderen Dienste für verteilte Anwendungen nutzt, die von COM+ (unter Windows 2000 und höher) oder MTS (unter Vorgängerversionen von Windows 2000) bereitgestellt werden. Hierzu erstellen Sie ein transaktionales Datenmodul anstelle eines gewöhnlichen Remote-Datenmoduls.
Der Einsatz eines transaktionalen Datenmoduls (bzw. MTS-Moduls) erweitert die Funktionalität des Remote-Datenmoduls um folgende besonderen Dienste:
- Sicherheit.
- COM+ (oder MTS) ermöglichen rollenbasierte Sicherheit für den Anwendungsserver. Clients werden Rollen zugewiesen. Diese bestimmen, wie auf die Schnittstelle des MTS-Datenmoduls zugegriffen werden kann. Das MTS-Datenmodul implementiert die Methode IsCallerInRole, mit der Sie die Rolle des aktuell verbundenen Clients ermitteln und in Abhängigkeit von dieser Rolle bestimmte Anwendungsmerkmale bereitstellen können.
- Datenbank-Handle-Verwaltung. Transaktionale Datenmodule verwalten Datenbankverbindungen, die über ADO oder (falls Sie MTS einsetzen und MTS POOLING aktivieren) dbExpress eingerichtet werden, automatisch in einem besonderen Ressourcenpool. Gibt ein Client seine Datenbankverbindung frei, kann diese von einem anderen Client genutzt werden. Der Datenverkehr im Netzwerk wird reduziert, da die Mittelschicht keine Abmeldung und anschließende Neuanmeldung beim Datenbankserver durchführen muss. Wenn die Verwaltung der Datenbank-Handles genutzt wird, sollte die Datenbankkomponente in der Eigenschaft KeepConnection den Wert False enthalten, damit die Anwendung die Freigabe von Verbindungen optimiert. .
- Transaktionen. Wenn Sie ein transaktionales Datenmodul einsetzen, können Sie Transaktionsunterstützung bereitstellen, die über diejenige hinausgeht, die mit einer einzelnen Datenbankverbindung gegeben ist. Transaktionale Datenmodule können an Transaktionen teilnehmen, die sich über mehrere Datenbanken erstrecken oder Funktionen beinhalten, die sich gar nicht auf Datenbanken beziehen. Weitere Informationen zur Transaktionsunterstützung, die von Transaktionsobjekten wie den transaktionalen Datenmodulen bereitgestellt werden, finden Sie unter Transaktionen in mehrschichtigen Anwendungen verwalten.
- Bedarfsaktivierung und schnellstmögliche Deaktivierung. Ermöglicht das Programmieren eines Servers, dessen Instanzen von Remote-Datenmodulen bedarfsgesteuert aktiviert bzw. deaktiviert werden. Beim Einsatz der Bedarfsaktivierung und der schnellstmöglichen Deaktivierung wird das Remote-Datenmodul nur instantiiert, wenn es zur Verarbeitung von Client-Anforderungen benötigt wird. Dieses Vorgehen verhindert das Belegen von Ressourcen wie z.B. Datenbank-Handles, wenn diese nicht benötigt werden.
Die Bedarfsaktivierung und schnellstmögliche Deaktivierung stellt einen Kompromiss zwischen der Vermittlung aller Clients über eine einzige Instanz des Remote-Datenmoduls und dem Erstellen einer separaten Instanz für jede Client-Verbindung dar. Liegt nur eine Instanz des Remote-Datenmoduls vor, muss der Anwendungsserver alle Datenbankaufrufe über eine einzelne Datenbankverbindung durchführen. Dieser Engpass kann die Leistung stark beeinträchtigen, wenn viele Clients auf die Datenbank zugreifen. Liegen dagegen mehrere Instanzen des Remote-Datenmoduls vor, kann jede Instanz eine eigene Datenbankverbindung verwalten. Eine serielle Durchführung der Datenbankzugriffe wird also vermieden. Durch dieses Vorgehen kann es jedoch zu einem Ressourcenmangel kommen, da andere Clients die Datenbankverbindungen nicht nutzen können, solange diese den Remote-Datenmodulen von Clients zugeordnet sind.
Um die Vorteile von Transaktionen, Bedarfsaktivierung und schnellstmöglicher Deaktivierung zu nutzen, dürfen die Instanzen des Remote-Datenmoduls keinen Status besitzen. Es ist aber eine zusätzliche Unterstützung erforderlich, wenn der Client auf Statusinformationen angewiesen ist (beispielsweise muss der Client bei der Durchführung inkrementeller Abrufe Informationen zum aktuellen Datensatz übergeben). Weitere Einzelheiten zu Statusinformationen und Remote-Datenmodulen in mehrschichtigen Anwendungen finden Sie unter Statusinformationen in Remote-Datenmodulen unterstützen.
Alle automatisch generierten Aufrufe eines MTS-Datenmoduls sind transaktionsbezogen (es wird davon ausgegangen, dass das Datenmodul nach dem Ende des Aufrufs deaktiviert werden kann und alle aktuellen Transaktionen eingetragen oder rückgängig gemacht werden können). Sie können ein MTS-Datenmodul schreiben, das vom Vorhandensein von Statusinformationen abhängig ist, indem Sie die Eigenschaft AutoComplete mit False belegen. Die Vorteile von Transaktionen, Bedarfsaktivierung und schnellstmöglicher Deaktivierung können dann aber nicht genutzt werden.
Warnung: Anwendungsserver, die MTS-Datenmodule enthalten, sollten Datenbankverbindungen erst nach Aktivierung des Remote-Datenmoduls öffnen. Stellen Sie bei der Entwicklung der Anwendung sicher, dass vor dem Starten der Anwendung keine Datenmengen aktiv sind und keine Verbindung zur Datenbank besteht. In die Anwendung müssen Sie Quellcode zum Öffnen der Datenbankverbindung beim Aktivieren des Datenmoduls und zum Schließen dieser Verbindung beim Deaktivieren des Datenmoduls einfügen.