Entwicklung für Windows DNA – Überblick über die - dFPUG

Werbung
Entwicklung für Windows DNA – Überblick
über die Werkzeuge
Yair Alan Griver
Übersetzt von Mathias Gronau
Dabei befassen wir uns mit den folgenden
Werkzeugen:
Einführung
Dieser Artikel behandelt die unterschiedlichen Werkzeuge und Technologien, die
beim Entwickeln einer verteilten Anwendung für Microsofts Windows Distributed
interNet Application (DNA) zum Einsatz
kommen. Grundsätzlich mischt Windows
DNA eine Anzahl unterschiedlicher Werkzeuge und Dienste des Betriebssystems, um
eine effiziente, skalierbare und modifizierbare Lösung für die bei der Entwicklung einer
verteilten Anwendung auftretenden Probleme zu bieten.
Bevor wir uns mit den unterschiedlichen
Technologien befassen, wollen wir zunächst
einige Worte zur DNA verlieren. DNA ist
Microsofts Weg für die Erstellung einer serverbasierten Infrastruktur für die Entwicklung und Verteilung verteilter Anwendungen. Microsoft geht davon aus, dass die Unternehmen die Serverprodukte von Microsoft einsetzen, um die nächste Anwendungsgeneration zu erreichen. Diese Anwendungen basieren auf Komponenten, die
mit unterschiedlichen Diensten zusammenarbeiten, um eine flexible stabile und skalierbare Architektur für unterschiedliche Benutzeroberflächen zu bilden. Mit dieser Lösung
ist es den Unternehmen möglich, statt immer größere Server einzusetzen (die UnixLösung) auf immer mehr preiswerte Server
zu skalieren, die miteinander arbeiten. Betrachten Sie dieses Vorgehen als die Serverversion von RAID.
Wir werden die folgenden Technologien behandeln:
 SQL Server
 Transaction Server (MTS)
 Message Queue Server (MSMQ)
 Internet Information Server
Abschließend werden wir uns damit beschäftigen, wo sich die unterschiedlichen
Werkzeuge und Technologien befinden und
welche Hard- und Software erforderlich
sind, um diese Dienste einzusetzen.
Eine kurze Bemerkung zu XML
Obwohl XML kein von Microsoft bereitgestellter Dienst ist spielt es in Windows
DNA-Anwendungen doch eine Schlüsselrolle.
XML
ist
die
StandardVerständigungsmethode innerhalb von
DNA. Wenn Informationen zwischen den
Schichten einer mehrschichtigen Anwendung übergeben werden geschieht dies als
XML. Zusätzlich gewinnt ein anderer Standard, SOAP (Simple Object Access Protocol), für eine XML-basierte Lösung an Bedeutung, wenn via http auf Methoden zugegriffen werden soll. Weitere Informationen
zu
SOAP
finden
Sie
unter
http://msdn.microsoft.com/xml/general/s
oap_faq.asp.
 Universal Data Access
 COM und DCOM
12-02 Entwicklung für Windows DNA
FoxX-Professional
Seite 1
Universal Data Access
Im Grunde ist Universal Data Access
(UDA) genau das was der Name aussagt:
Die Möglichkeit, auf jegliche Daten jeglicher
Art von jeglichem Ort aus zuzugreifen.
UDA besteht hauptsächlich aus zwei Komponenten: OLE/DB, dessen Mechanismus
eine Oberfläche für die Daten bereitstellt
und ActiveX Data Objects (ADO), einem
standardisierten programmierbaren Frontend auf OLE/DB. Zusätzlich ermöglicht
Remote Data Services dem Entwickler,
ADO-Daten via HTTP vom Server auf den
Client zu übertragen.
len und überall verfügbaren Zugriff auf relationale Datenquellen ermöglichte, bietet
OLE/DB einen sehr schnellen und überall
verfügbaren Zugriff auf jede Datenquelle, ob
relational oder nicht. OLE/DB wird mit einem Standardprovider für ODBC ausgeliefert, durch den es einen unmittelbaren Zugriff auf alle ODBC-Quellen hat, für die Sie
über einen Treiber verfügen.
ADO
ADO ist eine standardisierte COM-basierte
Programmierschnittstelle für OLE/DB. Es
ermöglicht den Zugriff auf jede OLE/DBDatenquelle aus jeder COM-basierten Programmiersprache heraus. ADO ist ein Nachfolger für die ganzen Zugriffsmechanismen,
die Microsoft im Laufe der Jahre ausgeliefert
hat (RDO, Jet). Es ist für den schnellen Zugriff auf jeglichen Datentyp entworfen und
ist nicht für ein bestimmtes Backend optimiert. Aus diesem Blickwinkel heraus entspricht ADO Visual FoxPros Modell der
Ansichten und Cursor, bei dem die Entwicklung der Darstellung der Daten den ersten
Platz einräumt, während VFP den Zugriff
für Sie optimiert.
Microsoft hat hier aus den anderen COMbasierten Zugriffsmechanismen gelernt und
hat ADO mit einer flachen Hierarchie entwickelt. Es ist nicht mehr notwendig, auf ein
bestimmtes Objekt über eine Liste anderer
Objekte zuzugreifen. Das Objektmodell von
ADO enthält 7 Objekte:
Abbildung 1: ADO und OLE/DB
OLE/DB
OLE/DB ist Microsofts Nachfolger von
ODBC. Während ODBC einen sehr schnel-
Objekt
Beschreibung
Command
Dieses Objekt ermöglicht dem Entwickler einen Befehl an die Datenquelle zu
senden. Bei diesem Befehl handelt es sich in der Regel um eine SQL-Anweisung
oder den Aufruf einer gespeicherten Prozedur. Es kann sich aber um jeden Befehl
handeln, den die Datenquelle verarbeiten kann.
Connection
Dieses Objekt bildet die Oberfläche der Datenquelle. Auf die Fehler-Collection
wird über die Verbindung zugegriffen.
12-02 Entwicklung für Windows DNA
FoxX-Professional
Seite 2
Error
Das Objekt Error enthält die Informationen über alle Fehler, die während der
Arbeit mit dieser Datenquelle aufgetreten sind.
Field
Dieses Feldobjekt unterstützt die Anzeige eines Feldes der Datenquelle.
Parameter
Das Objekt Parameter unterstützt die Übergabe von Parametern, die innerhalb
einer SQL-Anweisung oder in einer gespeicherten Prozedur benötigt werden.
Property
Dieses Objekt ermöglicht es einer Datenquelle, jede eindeutige Information anzuzeigen, die nicht in einem Feld standardisiert angezeigt werden kann.
Recordset
Das Objekt Recordset zeigt einen tabellenartigen Blick auf die von einer Datenquelle empfangenen Daten.
Remote Data Services (RDS)
Die Remote Data Services stellen einen Mechanismus zur Verfügung, um einen Recordset der ADO auf eine getrennte nur teilweise verbundene Maschine zu verschieben
(z.B. HTTP über das Internet). Dieser
Dienst wird in der Regel für einen limitierten
Datenverkehr innerhalb eines Netzwerks
verwendet. RDS wird zusammen mit dem
Internet Information Server und dem Internet Explorer 4 und höher installiert und ermöglicht dem Entwickler die Kontrolle, wo
sich die Daten während einer Änderung befinden.
COM und DCOM
Microsofts Component Object Model
(COM) ist ein Programmierstandard für die
Entwicklung verteilter Anwendungen auf einem einzelnen Windowsrechner. DCOM
fügt dem noch eine vom Protokoll unabhängige transparente Netzwerkkommunikation hinzu. Bei Verwendung von DCOM
ruft der Entwickler einfach ein COM-Objekt
auf und greift so auf das Objekt unabhängig
von dessen Platzierung im Netzwerk zu.
Arten der COM-Objekte
COM-Komponenten können in zwei Arten
vorliegen: als DLLs und als EXEs.
12-02 Entwicklung für Windows DNA
COM-DLLs
Eine COM-DLL wird innerhalb eines Prozesses ausgeführt. Durch die Ausführung
der DLL innerhalb der aufrufenden EXE
bieten die DLLs einen schnellen Zugriff auf
ihre Funktionalitäten. Dies hat aber einen
Nachteil: stürzt die DLL ab zieht sie auch
den aufrufenden Prozess mit sich. Eine
COM-DLL muss sich auf dem gleichen
Rechner wie der aufrufende Prozess befinden.
COM-EXEs
COM-EXEs werden außerhalb des aufrufenden Prozesses ausgeführt. Stürzt eine
COM-EXE ab kann der aufrufende Prozess
weiterarbeiten (wenn er diesen Fehler abfangen kann). Auf jeden Fall ist der Aufruf einer COM-EXE aber langsamer als der einer
COM-DLL, da es sich hier um einen Local
Remote Procedure Call (wenn sich die EXE
auf der gleichen Maschine befindet wie der
aufrufende Prozess) oder um einen Remote
Procedure Call (wenn sich die EXE auf einer anderen Maschine im Netzwerk befindet
als der aufrufende Prozess) handelt. COMEXEs können sich auf jeder beliebigen Maschine im Netzwerk befinden.
COM-Registrierung
COM-Komponenten werden durch den
Aufruf von CREATEOBJECT() beim
Durchsuchen der Registrierungs-Datenbank
gefunden. In der Regel findet der Rechner
FoxX-Professional
Seite 3
die Komponente durch deren ProgID (einen
für den Anwender verständlichen Namen
wie z.B. Excel.Application), die in die ClassID (eine für die Maschine verständliche hexadezimale Identifikationsnummer, bei der
es sich um eine global einmalige Identifikation handelt) übersetzt wird. In der Registry
sind der Speicherort und der Name der
EXE oder DLL gespeichert.
DCOM
DCOMCFG ist ein Programm, das mit
Windows zusammen ausgeliefert wird. Wird
es ausgeführt, kann der Entwickler eine bestimmte COM-EXE zusammen mit dem
Namen der Maschine, den Sicherheitsinformationen und dem Speicherort der EXE angeben, damit diese EXE auf einer entfernten
Maschine ausgeführt werden kann. Diese
Angaben werden dann in der RegistrierungsDatenbank des Clientrechners gespeichert.
Wird
anschließend
mit
einem
CREATEOBJECT() ein COM-Objekt auf
einem entfernten Rechner aufgerufen, wird
dieser Aufruf in einen Remote Procedure
Call (RPC) übersetzt, der an den Server gesendet wird. Auf dem Server wird dieser
RPC in einen COM-Aufruf übersetzt, der
dem Objekt gesendet wird. Anschließend
wird jeder Rückgabewert in einen RPC zurückübersetzt, an den Client gesendet, zu
COM übersetzt und der aufrufenden Anwendung geliefert.
Bessere Skalierbarkeit
Um eine bessere Skalierbarkeit zu gewährleisten hat Microsoft die folgenden Schlüsselfunktionalitäten neu eingeführt:
 Unterstützung größerer Server mit
mehr Prozessoren
 Unterstützung von Clustern für hohe Verfügbarkeit
 Unterstützung
chers
zusätzlichen
Spei-
 Integrierung in das Sicherheitssystem
von NT.
Einfachere Bedienbarkeit
Um eine einfachere Bedienbarkeit zu gewährleisten hat Microsoft die folgenden
Schlüsselfunktionalitäten neu eingeführt:
 Abfragen in natürlicher Sprache
 Assistenten für die automatische
Verwaltung vieler Aufgaben des
Administrators
 Native Fähigkeiten für das DataWarehousing
Microsoft Transaction Server
SQL Server
Der SQL Server ist Microsofts Plattform für
die Entwicklung verteilter Anwendungen
und deren bevorzugte Plattform für die relationale Speicherung der Daten. Als relationaler Datenbank-Server führt er sämtliche Optimierungen der Abfragen auf dem Server
aus und unterstützt SQL 92, gespeicherte
Prozeduren, serverbasierte Sicherheitsüberprüfungen und Online-Backup.
Für die Version 7 wurde der SQL Server in
weiten Teilen neu geschrieben. In jedem Teil
des Produkts finden sich Neuerungen, von
der Verwaltung über das Tuning bis hin zu
den Anforderungen an den Speicher. Damit
unterstützt der SQL Server Microsofts Stra12-02 Entwicklung für Windows DNA
tegie, die Produkte höher zu skalieren und
dabei die Bedienung einfacher zu gestalten.
Der Microsoft Transaction Server (MTS)
verbindet die Eigenschaften eines Object
Request Brokers und eines Transaktionsmonitors. Anders ausgedrückt: der MTS bedient
nicht ausschließlich die Clients mit serverbasierten Objekten, er sichert auch komplette
Transaktionen jeglicher Datenbankänderungen, die während eines Aufrufs dieser Objekte auftreten. Letztendlich enthält er sein
eigenes Programmiermodell für diejenigen
Objekte, die den vollständigen Nutzen aus
seinen Fähigkeiten ziehen wollen.
FoxX-Professional
Seite 4
Der MTS als Object Request Broker
Als Object Request Broker (ORB) behandelt
der MTS alle Referenzen auf COM-Objekte
in seiner Domäne und stellt diese wenn
notwendig den aufrufenden Clients zur Verfügung. MTS-Komponenten müssen COMDLLs sein und um die größtmögliche Geschwindigkeit zu erreichen, müssen sie innerhalb des MTS-Prozesses laufen.
Zur Zeit unterstützt der MTS das RuntimeCaching und kann daher die Komponenten
sehr schnell instanziieren. Außerdem unterstützt er die Just-In-Time-Aktivierung und
ermöglicht es damit den Komponenten im
Arbeitsspeicher zu verbleiben, auch wenn
der Code des Client die Referenz freigibt.
Eine wichtige Eigenschaft des MTS ist das
Object Pooling. Zur Zeit ist es aber nur für
Server unter Windows 2000 verfügbar, die
eine optionale Schnittstelle implementiert
haben. Unglücklicherweise werden dadurch
VB- und VFP-basierte Komponenten ausgeschlossen. Ist das Pooling aktiviert und ein
Objekt ist unter dem MTS instanziiert, wird
die Referenz in einem Pool gehalten, so dass
sie jedem Client übergeben werden kann.
Auf diese Weise wird die Zeit für die Instanziierung gespart.
Außerdem sollten die MTS-Objekte statuslos sein, sie sollten also in ihren Eigenschaften keine Werte halten, die für einen weiteren Methodenaufruf gespeichert werden
müssen. Auf diese Weise kann der MTS die
Objekte den Clients auf die effizienteste
Weise zur Verfügung stellen, da eine Instanz
mehrere Clients bedienen kann. Andernfalls
wäre für jeden Client eine eigene Instanz jedes Objekts erforderlich.
Die Objekte des MTS existieren innerhalb
von MTS-Packages (das sind umbenannte
COM-Anwendungen), deren Aufgabe es ist,
die Anwendung vor dem Abstürzen eines
einzelnen COM-Objekts zu schützen. Alle
Objekte eines bestimmten MTS-Packages
werden innerhalb eines Prozesses gestartet,
aber außerhalb des Prozesses des Client. Ein
Objekt in einem Package wird nie ein Objekt
in einem anderen Package stören.
Abbildung 2 zeigt Ihnen in einem Beispiel
zwei Clients, die auf den MTS zugreifen. Beachten Sie bitte, dass die Clients auf die
MTS-Komponenten außerhalb des eigenen
Prozesses zugreifen, während die Komponenten im gleichen Package sich im gleichen
Prozess befinden.
Abbildung 2: MTS-Aufrufe innerhalb und außerhalb des eigenen Prozesses
12-02 Entwicklung für Windows DNA
FoxX-Professional
Seite 5
Der MTS als Transaktionsmonitor
Zusätzlich zu seinen ORB-Fähigkeiten verfolgt der MTS die Datenbankaktivitäten der
Objekte und stellt sicher, dass die Transaktionen korrekt gesetzt sind – auch über die
Grenzen der einzelnen Datenbank hinaus.
Er kann Transaktionen in allen Datenbanken absichern, die entweder den COM/TXoder den XA-Standard unterstützen. Dazu
gehören die allgemein gebräuchlichen Datenbanken wie Microsoft SQL Server,
Oracle und DB2 von IBM. DesktopDatenbanken wie Visual FoxPro oder Access unterstützen diese Standards nicht und
können daher nicht innerhalb einer Transaktion des MTS abgesichert werden.
Das Programmiermodell des MTS
Der MTS bietet den Zugriff auf seine Transaktionssicherung und die Sicherheitsinformationen mittels eines Objekts, das ObjectContext genannt wird. Jedes Objekt innerhalb des MTS kann auf seinen eigenen ObjectContext zugreifen und dort Informationen abfragen.
Dieses Kontextobjekt wird jedes Mal benötigt, wenn Sie von innerhalb einer Komponente auf die äußere Umgebung zugreifen
müssen. Beispielsweise benutzen Sie das
Kontextobjekt um dem MTS mitzuteilen, ob
eine Komponente ihre Aufgabe erfolgreich
abgeschlossen hat oder nicht. Diese Aufrufe
(SetComplete und SetAbort) greifen in die
Ausführung von Transaktionen des MTS ein
und bestimmen, ob die Änderung der Datenbank erfolgreich war oder zurückgenommen werden soll.
Zusätzlich können Sie die Funktion IsCallerInRole nutzen um festzustellen, ob der
Anwender, der ein Objekt aufruft, Mitglied
einer Rolle ist, die das Recht dazu hat. Anders ausgedrückt: Sie können jedem NTAnwender oder und jeder Gruppe eine Rolle
zuweisen, die innerhalb Ihres MTS-Packages
definiert ist. Ihr Code kann prüfen, ob der
Anwender, der eine Komponente aufruft,
Mitglied einer Rolle ist, der die Anwendung
der Komponente erlaubt ist. Beispielsweise
verteilt der folgende Code unterschiedlichen
12-02 Entwicklung für Windows DNA
Gruppen von Anwendern unterschiedliche
Rechte für eine Kreditlinie.
DO CASE
CASE
oContext.IsCallerInRole("Manager")
lySigningAuthority = $10000
CASE
oContext.IsCallerInRole("Clerk")
lySigningAuthority = $1000
ENDCASE
Microsoft Message Queue Server
Der Microsoft Message Queue Server stellt
die asynchrone Kommunikation zwischen
Servern bereit. Dies umfasst das Routing, die
prioritätsorientierte Kommunikation, die garantierte Zustellung und die Unterstützung
der Transaktionen durch den MTS.
Anders als bei synchroner Kommunikation,
die eine unmittelbare Reaktion erwartet (beispielsweise einen Funktionsaufruf), wird bei
asynchroner Kommunikation die Nachricht
erst ausgeliefert, wenn der Empfänger sie
explizit anfordert. Sie können sich den Unterschied ähnlich vorstellen wie bei einem
Telefonanruf, bei dem Sie den Angerufenen
einmal direkt erreichen und ein anderes Mal
auf den Anrufbeantworter sprechen. In einem Fall müssen auf beiden Seiten Menschen anwesend sein, im anderen Fall nur
auf der anrufenden Seite.
Die asynchrone Kommunikation kann in
vielen Fällen gegenüber der synchronen
Kommunikation die bessere Wahl sein.
Nimmt beispielsweise eine Airline eine Reservierung für einen Flug entgegen, kann sie
dem Catering-Service eine asynchrone
Nachricht senden, in dem sie über spezielle
Wünsche für die Bordverpflegung informiert. Es gibt keinen Grund, weshalb eine
ständige Verbindung zwischen Airline und
Catering bestehen sollte. Die Nachricht kann
den Lieferanten auch erreichen, wenn er seine Nachrichten turnusmäßig abholt. Die
asynchrone Kommunikation wird noch
wichtiger, wenn Geräte erreicht werden sollen, die nicht ständig im Netz präsent sind,
beispielsweise Laptops oder Handhelds. Eine solche Verbindung kann jederzeit unterbrochen werden, so dass es wichtig ist, die
Anwendung so asynchron wie möglich zu
FoxX-Professional
Seite 6
erstellen, damit die Übertragung wieder aufgenommen werden kann, wenn die Verbindung erneut steht.
Internet Information Server
Der Internet Information Server (IIS) ist
Microsofts Webserver. Er vereint das World
Wide Web, das File Transfer Protocol, den
Index Server und den Secure Sockets Layer
in einem Produkt. Zusätzlich integriert er
durch den MTS Transaktionen in Webanwendungen.
Mit Hilfe der ISAPI-Schnittstelle hat Microsoft die Active Server Pages entwickelt, deren Aufgabe es ist, das Erstellen von interaktiven Webanwendungen mit dynamischen
Inhalten zu ermöglichen. ASPs können mit
dem MTS in Transaktionen eingebunden
werden und nehmen in webbasierten mehrschichtigen Systemen eine Schlüsselrolle ein.
Vereinfacht gesagt führt der Anwender im
Browser eine Aktion durch, ASP erkennt
diese Aktion, ruft die entsprechenden COMKomponenten auf und gibt die passenden
Seiten an den Browser zurück.
Wo finden Sie diese Werkzeuge?
Nun haben wir einige grundlegende Informationen über die Werkzeuge behandelt.
Lassen Sie uns jetzt sehen, wo Sie die Werkzeuge finden. Um es einfacher zu machen
teile ich die Werkzeuge auf in solche, die als
separates Produkt erhältlich sind, solche, die
Sie mit dem NT 4 Option Pack erhalten und
12-02 Entwicklung für Windows DNA
in solche, die mit Windows 2000 installiert
werden.
Als separate Produkte erhältlich
Der SQL Server wird als einzelnes Produkt
vermarktet. In der Enterprise Edition des
Visual Studio ist bereits eine Entwicklerversion enthalten.
Universal Data Access können Sie unter
dem Namen MDAC downloaden. Außerdem wird er auch mit dem Visual Studio
Professional Edition und höher installiert.
Den Download finden Sie unter
http://www.microsoft.com/data.
COM und DCOM wird mit Windows NT
und Windows 98 ausgeliefert. DCOM für
Windows 95 ist als Download verfügbar
(Versionen vor SR 3 enthalten es nicht).
Windows NT 4
MTS, MSMQ und IIS finden Sie auf der
Windows NT Option Pack CD. Beachten
Sie, dass MSMQ und IIS nur auf dem
Windows NT Server installiert werden können. Der IIS kann auf der Windows NT
Workstation und auf Windows 9x durch den
Personal Web Server ersetzt werden. Außerdem installiert die Option „Alles installieren“ MSMQ nicht. MSMQ muss separat installiert werden.
Windows 2000
MTS, MSMQ und IIS werden mit Windows
2000 installiert. MTS und MSMQ sind jetzt
Komponenten von Windows 2000.
FoxX-Professional
Seite 7
Herunterladen