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