RDS einsetzen - softwareschule.ch

Transcrição

RDS einsetzen - softwareschule.ch
RDS einsetzen
Einleitung
Vom RPC, Remote Procedure
Call 1985, IPC zum RDS,
Remote Data Service 2003 hin
zur SOA, Service Oriented
Architecture 2006
Max Kleiner, Mai 2006
RDS Agenda
• Kernidee (Funktionsmuster) ist, gesammelte
Daten aus n-Clients mit einer Applikation
oder einem Dienst via SOAP zentral an
einen Server zu senden und auszuwerten.
• Die Umsetzung zeigt mit WebServices ein
Framework zur entfernten Speicherung von
Daten (Storage as Service).
• Warum SOA nur eine Idee und keine
Technik ist!
2
Anforderung
• Ein schweizweites Netz von mobilen
Rechnern (Ausbildungscontrolling) sendet
periodisch Ausbildungsdaten an einen
zentralen Server, der die ausgewerteten
Daten dann per Browser für die Instruktoren
bereithält.
• In der folgenden Fallstudie möchte ich die
Grundzüge dieser Technik näher bringen
und vor allem das entfernte Speichern von
Daten via Funktionen erklären.
3
Rahmenbedingung
Fachliche
Anforderungen
Q-Anforderungen
Technische
Anforderungen
Architekturkonzept
Fachmodell
Funktionsmuster
Use Case, Activity
Referenz
Architektur
Patterns
Framework
Analyse
Packages, IAD
Abbildungsregeln
Layers - Tiers
Design
Spezifikation
Class, Sequence, ERD, GUI
Design ist Implementierung der Architektur
Implement
ierung
Implementierung
Fachcode nutzt Architektur
State Event, Packages, Component
www.miloffice.ch
Integration
4
Architektur MILO 4.X
PISA RE4 /SAP
XML
GUI: Dienstplanung
Replikation / Import / Export
AdA-Verwaltung
ACV
TRW
DTM
MILO
DB
Ausb. Controlling
Trp Rechnungswesen
Diensttagemanagement
PKI
SecureCenter
AVOR
Reporting
PICASSO
LEONARDO
Portfolio/Formulare
XML-RPC / Softwarebus
GAD / FDT
Ausb D / Ei
MILO SOA
WebServices
Compacs, MIL Sport, KADAS
Weitere
Appl.
5
RDS: Worum geht es ?
•
•
•
•
•
VCLScanner.exe als Client (Compilat)
VCLScannerServer.exe als WebService
Apache WebServer
InterBase DB / DBExpress Connector
Die Komponenten des RDS:
- WSDLPublish
- Dispatcher
- Invoker
- DataSetProducer
6
RDS konkret
Client A
InterBase
Client B
MainBase
App/Web Server
Verbinden (HTTP)
Finden (UDDI, WSDL)
Datenformat (XML)
Interagieren (SOAP)
Client C
Administration
7
WebService Technik
• Dienste im Netz, die über StandardProtokolle erreichbar sind
• Datenaustausch basiert auf XML
• Plattform- und unternehmensübergreifende
Transaktionen kombinierbar
• OO-Technik mit Interfaces realisiert
• HTTP-Port 80 in der Regel offen
8
Schlüsseltechnologie
Finden: UDDI
http://FindAService.ch
XML mit Link zur Web Site
Web
Service
Benutzer
Business
Repos.
Realisieren: WSDL
http://adb2.ch/scanner.exe/WSDL
XML mit Servicebeschreibung
Ausführen: SOAP
Web
Service
http://adb2.ch/serverscanner.exe
XML als Prozeduraufruf
9
Webdienst-Katalog
UDDI
•
•
•
•
Universal Description, Discovery und Integration
„Gelbe Seiten“ des Internet für Webdienste
Gremium aus ca. 120 Firmen für die Propagation
von Webdiensten
Bsp.: http://www.xmethods.net and click the
BabelFish Web Service. Also notice the path to
the WSDL file for the service:
http://www.xmethods.net/sd/2001/BabelFishService.wsdl.
10
SOAP Webmodul
• Die Komponente THTTPSoapDispatcher empfängt und
beantwortet hereinkommende SOAP-Nachrichten und
entscheidet, welches Interface man verwendet.
• Das korrekte Objekt, welches das Interface realisiert, wird
an den PascalInvoker weitergeleitet, der die richtig
ausgepackte Methode mit den formatierten Argumenten
einschliesslich Errorcodes in den eigentlichen OP-Aufruf
inklusive Parametern transformiert.
• WSDL ist ein XML-Derivat zur Beschreibung der
Schnittstellen von WebServices. NachrichtenstromFormate und Funktionsaufrufe werden definiert.
• HTMLPublish ist verantwortlich für das Veröffentlichen von
WSDL (WebServiceDescriptionLanguage)
11
Das Web Modul
type
TWebModule1 = class(TWebModule)
WSDLHTMLPublish1: TWSDLHTMLPublish;
HTTPSoapDispatcher1: THTTPSoapDispatcher;
HTTPSoapPascalInvoker1: THTTPSoapPInvoker;
DataSetTableProducer1: TDataSetTableProducer;
12
Das Interface
type
{ Invokable interfaces must derive from IInvokable }
IVCLScanner = interface(IInvokable)
['{8FFBAA56-B4C2-4A32-924D-B3D3DE2C4EFF}']
function PostData(const UserData : WideString; const
CheckSum : DWORD) : Boolean; stdcall;
procedure PostUser(const Email, FirstName,
LastName : WideString); stdcall;
end;
13
Die Implementation des
Interface
TVCLScanner = class (TInvokableClass,
IVCLScanner)
public
function PostData(const UserData : WideString;
const CheckSum : DWORD): Boolean; stdcall;
procedure PostUser(const Email, FirstName,
LastName : WideString); stdcall;
end;
Implementation ...
14
Client Aufruf
var
•
•
WS: IVCLScanner;
WS:= HTTPRIO1 as IVCLScanner;
WS.PostData(reFinalResults.Text,CRC);
HTTPRIO1:URL
http://adb2/scripts/vclscannerserver.exe/soap/IVCLScanner
15
Die sieben Express
Schritte
1.
2.
Connection:= TSQLConnection.Create(NIL);
with Connection do begin ...
3.
4.
5.
DataSet := TSQLDataSet.Create(NIL);
with DataSet do begin ...
SQLConnection:= Connection;
6.
7.
CommandText:=
Format('insert into ACL_LN values("%d","%s", "%s",
"%s","%s")',[10, Email, FName, LName, ACLdate]);
16
Struktur als Class
Diagram
IIn te r face
T In vo k ab le C las s
IIn vo k ab le
T fr m M ain
T W e b M o d u le
attr ib u te s
DFM: TStringList;
DriveSpace: Int64;
IV C L Scan n e r
httpSOA P
Ex cludes: TStringList;
Files: TStringList;
hProcess: THandle;
ProgramFilesDir: s tring;
ResList: TStringList;
T W e b M o d u le 1
attr ib u te s
Results: TStringList;
SerialNumber: DWORD;
Dispatcher/Inv oker
SkippedDirs: TStringList;
SkippedFiles : TStringLis t;
DataSetTableProducer1
HTTPSoapDis patcher1
HTTPSoapPasc alInv oker1
T V C L Scan n e r
WSDLHTMLPublish1
dbPath
o p e r atio n s
getPath
f ilePath
o p e r atio n s
SystemDrive: Char;
PostData(..): Boolean;
PostUs er(..)
WebModule1Def aultHandlerA ctio
WebModule1RunQueryA ction(..)
WebModuleCreate(..)
getFile_DatabasePath
17
Das Sequenzdiagramm
18
RDS Pakete
19
RDS Vorteil gegenüber
Scripts
• OO-Technik mit Klassenbildung
• Direkt aus dem Code instanzierbar
– Auch ohne Browser möglich
– Microsoft selbst betont den Willen zur Einbindung
anderer Hersteller und Plattformen
– Echte typensichere Compilate erlauben eine stabile
Nutzung mehrerer mobiler Plattformen und Sprachen
– Dank des Verzeichnisdienstes immer up-to-date
20
Warum es vorderhand
SOA wenig braucht ?
• Nicht jeder Service oder Prozess muss
verteilt, orchestriert und veröffentlicht
werden.
• Zu viele nachrichtenorientierte Services
erhöhen den Verwaltungsaufwand und
vermindern Performance und Stabilität.
• SOA ist wenig typensicher, will heißen, der
Hund ist zur Laufzeit begraben!
21
F1: Fragen und hoffentlich
Antworten ?
http://max.kleiner.com
22