Building Server Services with Visual FoxPro - PowerPoint PPT Presentation

View by Category
About This Presentation
Title:

Building Server Services with Visual FoxPro

Description:

Place in a different class for later change of table format or parameter passing ... MQ / MSTS. Parameter table can be replaced by Message Queue Server. No ... – PowerPoint PPT presentation

Number of Views:136
Avg rating:3.0/5.0
Slides: 35
Provided by: rainer8
Learn more at: http://portal.dfpug.de
Category:

less

Write a Comment
User Comments (0)
Transcript and Presenter's Notes

Title: Building Server Services with Visual FoxPro


1
Building Server Services with Visual FoxPro
  • Session V17

Rainer Becker
dFPUG, Germany
2
Who Am I?
  • German FoxPro User Group
  • http//www.dfpug.de/forum
  • German VFP DevCon
  • FoxX Professional (4x200 pages)
  • Wizards Builders GmbH
  • http//www.wizards-builders.com
  • MVP, MCSD, speaker/writer
  • But I am not bilingual !

3
Defining the problem
  • What is the problem we solve with a remote server
    service ?

4
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)

5
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!

6
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

7
Installing a Service
  • How to define a VFP server service on Windows NT ?

8
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 -gt SRVANY.EXE

9
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

10
Configure SRVANY.EXE
  • Call REGEDIT.EXE
  • Navigate to HKEY_LOCAL_MACHINE
    \SYSTEM\CurrentControlSet\Services\
  • Navigate to your Remote Service
  • Right mouse Option New, Sub-option Key,
    Value Parameters
  • New, Char, Application, Value
    ltDrivegtltpathgt\ltvgremotegt.exe
  • New, Char, AppDirectory, Value
    ltDrivegt\ltpathgt
  • Optional AppParameters, Value NONE

11
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!

12
Unattended Installation
  • INSTSRV.EXE parameters
  • Service name
  • Exe location
  • (-a account name)
  • (-p account password)
  • REMOVE

13
Implementing Remote Server
  • How to implement a remote server application ?

14
Parameter Passing
  • No access via object reference
  • Parameter table instead
  • User, Password (encrypted)
  • Module, Object, Method, Parameter
  • Or
  • Script-Memo (Single/Multi-Line)
  • ErrorRetry

15
Setup Methods
  • Settings
  • SetVars / Properties
  • Set OnShutDown / Shutdown
  • Set OnErrorErrorHandler / ErrorMethod
  • OpenTable
  • Endless Loop / Timer (snp)

16
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)...)

17
Job Execution Methods
  • Scan Job-Table
  • JobLock
  • JobProcess
  • Macro execution
  • Script-compiling
  • COM-Server creation/call (snp)
  • Repositioning
  • JobUnlock

18
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

19
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

20
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

21
Connect the Client
  • How to connect the client to the remote server
    application ?

22
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

23
Client Methods
  • IsServerActive
  • ServerStart
  • JobCreate
  • JobStatusGet
  • JobTimerCreate (Thermometer)

24
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 11-related table for status
    information OR pass THIS for a callback mechanism
  • Use a wrapper object reference

25
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

26
Special Tricks
  • How can we extend the potential power of remote
    server services ?

27
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)

28
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

29
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

30
Additional Material
  • Where to go from here ? Where to find additional
    information ?

31
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

32
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)

33
FoxTeach Web Update Page
  • www.dbcentral.com

This session will NOT have web updates.
34
Thank you!
  • Please remember to fill out your evaluation.
About PowerShow.com