Building server services with visual foxpro
1 / 34

Building Server Services with Visual FoxPro - PowerPoint PPT Presentation

  • Uploaded on
  • Presentation posted in: General

Building Server Services with Visual FoxPro. Session V17. Rainer Becker. dFPUG, Germany. Who Am I?. German FoxPro User Group German VFP DevCon FoxX Professional (4x200 pages) Wizards & Builders GmbH MVP, MCSD, speaker/writer

I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.

Download Presentation

Building Server Services with Visual FoxPro

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.

- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript

Building Server Services with Visual FoxPro

Session V17

Rainer Becker

dFPUG, Germany

FoxTeach 2001

Who Am I?

  • German FoxPro User Group

    • German VFP DevCon

    • FoxX Professional (4x200 pages)

  • Wizards & Builders GmbH

  • MVP, MCSD, speaker/writer

    • 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


    • only local registration with /REGSERVER or REGSRV32.EXE


    • 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


    • Only for DOS Command

  • AUTOSTART folder

    • Only for active user


    • Configuration problem


    • 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


  • 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 “ “<Drive>:<path>\<vgremote>.exe“

  • “New”, “Char”, “AppDirectory“, Value “<Drive>:\<path>“

  • 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

Unattended Installation

  • INSTSRV.EXE parameters

    • Service name

    • Exe location

    • (-a account name)

    • (-p account password)

    • REMOVE

FoxTeach 2001

Implementing Remote Server

How to implement a remote server application ?

FoxTeach 2001

Parameter Passing

  • No access via object reference

  • Parameter table instead

    • User, Password (encrypted)

    • Module, Object, Method, Parameter


    • Script-Memo (Single/Multi-Line)

    • ErrorRetry

FoxTeach 2001

Setup Methods

  • Settings

  • SetVars / Properties

  • Set OnShutDown / Shutdown

  • Set OnError+ErrorHandler / ErrorMethod

  • OpenTable

  • Endless Loop / Timer(snp)

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

Job Execution Methods

  • Scan Job-Table

  • JobLock

  • JobProcess

    • Macro execution

    • Script-compiling

    • COM-Server creation/call(snp)

  • Repositioning

  • JobUnlock

FoxTeach 2001

Call COM Servers


    • Call an .EXE instead of .DLL to survive execution failure


    • 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

Client Methods

  • IsServerActive

  • ServerStart

  • JobCreate

  • JobStatusGet

  • JobTimerCreate (Thermometer)

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 that‘s 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


  • 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

This session will NOT have web updates.

FoxTeach 2001

Thank you!

Please remember to fill out your evaluation.

FoxTeach 2001

  • Login