FoxTeach 2001 Building Server Services with Visual FoxPro Session V17 Rainer Becker dFPUG, Germany
FoxTeach 2001 Who Am I? German FoxPro User Group http://www.dfpug.de/forum –G–German VFP DevCon –F–FoxX Professional (4x200 pages) Wizards & Builders GmbH http://www.wizards-builders.com MVP, MCSD, speaker/writer –B–But I am not bilingual !
FoxTeach 2001 Defining the problem What is the problem we solve with a remote server service ?
FoxTeach 2001 Services on a Server Multiply performance by direct table access instead of network traffic for (examples): –Database reorg/reindex –Structure modification/update –Data synchronization –Data import (host)/export –Complex queries/reports –Long-running process (e.g. re-booking)
FoxTeach 2001 How to call a Server App CREATEOBJECT –only local registration with /REGSERVER or REGSRV32.EXE CREATEOBJECTX –remote registration with CLIREG32.EXE –But still no asynchronous connection... But: Server Application must run independent from Client App!
FoxTeach 2001 Automatic Start on a Server AUTOEXEC.BAT –Only for DOS Command AUTOSTART folder –Only for active user SCHEDULER –Configuration problem SERVICE –Currently the most suitable solution
FoxTeach 2001 Installing a Service How to define a VFP server service on Windows NT ?
FoxTeach 2001 Installation of a Service Configuration / System Management / Services –Only allows changing of existing services (e.g. execution type, used account) –Allow Interactive Relation to Desktop Wizard SRVINSTW.EXE allows interactive installation of a service Interface for a service cannot be supplied with VFP -> SRVANY.EXE
FoxTeach 2001 Using the Install Wizard P1: [x] Install a service P2: [x] Local Machine P3: Service Name Remote Server P4: Executable File SRVANY.EXE P5: [x] Service is its own process P6: [x] System account – [x] Allow Service to interact with Desktop P7: [x] Automatic P8: Finish
FoxTeach 2001 Configure SRVANY.EXE Call REGEDIT.EXE Navigate to HKEY_LOCAL_MACHINE \SYSTEM\CurrentControlSet\Services\ Navigate to your Remote Service Right mouse: Option New, Sub-optionKey, Value Parameters New, Char, Application, Value : \.exe New, Char, AppDirectory, Value :\ Optional AppParameters, Value NONE
FoxTeach 2001 How to start a Service Various Options to start/stop: –Interactive with system configuration –NET START/STOP service name –SC START via SC commandline utility of Windows NT Problem: Applet does not see VFP- status but only SRVANY-status (even QUIT still allows to start/stop/restart the service) – confusing for admins!
FoxTeach 2001 Problems with Endless Loops Normally you get an endless loop by accident with no work at all, but –A typical endless loop produces 100% workload in the Task Manager –Additionally, it creates a GUI error with SYS(2335,0) (unattended servermode) Solution: Use READ EVENTS with a timer which fires CLEAR EVENTS –(still you get problems with sys(2335,0)...)
FoxTeach 2001 Call COM Servers CREATEOBJECT –Call an.EXE instead of.DLL to survive execution failure LOGIN –encryption for security Method-Call –COMRETURNERROR if exclusive access is needed but not available Return Value
FoxTeach 2001 Configuration with Constants Name, Title, Caption Table, Path Retry on Error Timer: Break between jobs Master-User / -Password Exclusive Access ComReturnError For Discussion of constants see session V18 Dynamic Constants
FoxTeach 2001 Logfile / Activity Low-Level Text File for Job-Log –Datetime start/end, result/failure NT Eventlog not implemented yet –WinAPI-problems occured Monitor activity from Client(snp) Restart via Starter Application –CreateObjectX for Starter not Server
FoxTeach 2001 Connect the Client How to connect the client to the remote server application ?
FoxTeach 2001 Client Implementation Implementation as a service class –Reusability needed Data access to job-table needed –Place in a different class for later change of table format or parameter passing type Read/Write Job-Table –Read status information (see below) –Timer for status information Call once or Call many jobs
FoxTeach 2001 Thermometer Update Status information is wanted for long-running remote jobs, but –Server application cannot update Job-Table as it is locked by the remote server service Solution: 1:1-related table for status information OR pass THIS for a callback mechanism –Use a wrapper object reference
FoxTeach 2001 The exclusive client Problem Some useful server jobs need exclusive database access (e.g. reorg, reindex, pack, backup) Client application can insert a job into job-table, but thats it –Server application will terminate again and again as long as user is logged into app Depends on your implementation of semaphores and locking
FoxTeach 2001 Special Tricks How can we extend the potential power of remote server services ?
FoxTeach 2001 Multiple Server Services Even on a single processor server, more than one instance might be useful to shorten processing time –See example in VFPSP3.CHM –Just place a RUN-Task in job-table... Memory consumption problems might be reduced by Multi- Threaded VFP-Runtime (see SP3)
FoxTeach 2001 MQ / MSTS Parameter table can be replaced by Message Queue Server –No current experience Instantiation time might be reduced by use of MS Transaction Server –No current experience
FoxTeach 2001 Service as WebService Remote Server Service built as COM Server convertable to Web service –with Toolkit in Visual Studio 6.0 or VFP 7.0 Build a table-interface-Webservice –Send Job-Table entry as XML-record –Implement Client functions for COM-server See Session V19 Creating and Using SOAP Web Services with Visual FoxPro by Rick Strahl
FoxTeach 2001 Additional Material Where to go from here ? Where to find additional information ?
FoxTeach 2001 Visit other Sessions V14 Building World-Class Visual FoxPro COM Servers –Kevin McNeish V19 Creating and Using SOAP Web Services with Visual FoxPro –Rick Strahl
FoxTeach 2001 Tools/Docs on Companion CD SRVINSTW.EXE (install wizard) INSTSRV.EXE (install tool) SRVANY.EXE (service interface) SRVANY.WRI (documentation) W2RKTOOL.CHM (NT Resource Kit)
FoxTeach 2001 FoxTeach Web Update Page www.dbcentral.com This session will NOT have web updates.
FoxTeach 2001 Thank you! Please remember to fill out your evaluation.