Übernahme der Visual FoxPro Geschäftslogik Venelina Jordanova Uwe Habermann [email protected] [email protected] VFP COM Server * In jeder Silverlight Anwendung verfügbar * Browser * auf der Server Seite * OOB mit erhöhter Vertrauensstellung * auf der Server Seite * auf der Client Seite * Silverlight Client führt Methode in VFP COM Server aus VFP COM Server * Ausführung aus FXP * Ausführung aus APP * Vorteile: * COM Server muss nicht neu registriert werden * IIS muss nicht neu gestartet werden VFP COM Server * Datenzugriff * Cursoradapter * VFP Datenbank * SQL Datenbank * Alle ODBC Datenquellen * * * * MySQL Oracle DB2 … * Verwendete Datenbank konfigurierbar VFP COM Server * Geschäftslogik * Alles, was nicht visuell ist VFP COM Server * DEFINE CLASS COMTastrade AS SESSION OLEPUBLIC * Erstellen als „Multi-Thread COM Server (DLL)“ * VFP9.exe muss explizit mit Administratorrechten ausgeführt werden! VFP COM Server DEFINE CLASS COMTastrade AS SESSION OLEPUBLIC PROCEDURE GetCustomers() USE Customer IN 0 SHARED CURSORTOXML("Customer", "lcXML", 1, 2, 0, "1") USE IN Customer RETURN lcXML VFP COM Server auf der Server Seite verwenden * „early binding“ in Visual Studio * COM Server muss zur Entwicklungszeit funktionsfähig sein * Verweis auf COM Server muss dem Server Projekt hinzugefügt werden Aufruf einer VFP Funktion private void xpgfPageFramePage1cmdProper_Click( object sender, RoutedEventArgs e) { VfxSystemDomainContext context = new VfxSystemDomainContext(); EventHandler handler = new EventHandler(ExecuteVFPCommand_Completed); var ExecuteVFPCommand = context.ExecuteCommandService("proper", xpgfPageFramePage1txtCustomername.Text.ToString(), VfxAppObject.CurrentConnectionInfo.ClientName); ExecuteVFPCommand.Completed += handler; } Aufruf einer VFP Funktion void ExecuteVFPCommand_Completed( object sender, EventArgs e) { var result = sender as InvokeOperation<string>; VfxCommandServiceResultBase ValueResult = (VfxCommandServiceResultBase)VfxSerializer. DeserializeObject<VfxCommandServiceResultBase> (result.Value); lblResult.Text = ValueResult.CommandServiceInfo.result; } Action Button * Progammatischer Aufruf von COM Server Methode, Prozedur oder neue Objektinstanz von der Clientseite * Aufruf auch aus Button möglich * Demo Action Button * Übergabe mehrerer Parameter möglich * Übergabe von Daten als Parameter möglich Fragen? Vielen Dank und viel Spaß mit Silverlight wünschen Venelina & Uwe