34
FoxTeach 2001 Building Server Services with Visual FoxPro Session V17 Rainer Becker dFPUG, Germany

Building Server Services with Visual FoxPro

  • Upload
    xiang

  • View
    80

  • Download
    3

Embed Size (px)

DESCRIPTION

Building Server Services with Visual FoxPro. Session V17. Rainer Becker. dFPUG, Germany. 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 - PowerPoint PPT Presentation

Citation preview

Page 1: Building Server Services with Visual FoxPro

FoxTeach 2001

Building Server Services with Visual FoxPro

Session V17

Rainer BeckerdFPUG, Germany

Page 2: Building Server Services with Visual FoxPro

FoxTeach 2001

Who Am I?

• German FoxPro User Grouphttp://www.dfpug.de/forum

– German VFP DevCon– FoxX Professional (4x200 pages)

• Wizards & Builders GmbHhttp://www.wizards-builders.com

• MVP, MCSD, speaker/writer– But I am not bilingual !

Page 3: Building Server Services with Visual FoxPro

FoxTeach 2001

Defining the problem

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

Page 4: Building Server Services with Visual FoxPro

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)

Page 5: Building Server Services with Visual FoxPro

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!

Page 6: Building Server Services with Visual FoxPro

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

Page 7: Building Server Services with Visual FoxPro

FoxTeach 2001

Installing a “Service“

How to define a VFP server service on Windows NT ?

Page 8: Building Server Services with Visual FoxPro

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

Page 9: Building Server Services with Visual FoxPro

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

Page 10: Building Server Services with Visual FoxPro

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-option

“Key“, Value “Parameters“ • “New”, “Char”, “Application“, Value “

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

“<Drive>:\<path>“ • Optional “AppParameters“, Value “NONE“

Page 11: Building Server Services with Visual FoxPro

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!

Page 12: Building Server Services with Visual FoxPro

FoxTeach 2001

Unattended Installation

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

Page 13: Building Server Services with Visual FoxPro

FoxTeach 2001

Implementing Remote Server

How to implement a remote server application ?

Page 14: Building Server Services with Visual FoxPro

FoxTeach 2001

Parameter Passing

• No access via object reference

• Parameter table instead– User, Password (encrypted)– Module, Object, Method, Parameter

Or – Script-Memo (Single/Multi-Line)– ErrorRetry

Page 15: Building Server Services with Visual FoxPro

FoxTeach 2001

Setup Methods

• Settings• SetVars / Properties• Set OnShutDown / Shutdown• Set OnError+ErrorHandler /

ErrorMethod• OpenTable• Endless Loop / Timer (snp)

Page 16: Building Server Services with Visual FoxPro

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

Page 17: Building Server Services with Visual FoxPro

FoxTeach 2001

Job Execution Methods

• Scan Job-Table• JobLock• JobProcess

– Macro execution– Script-compiling– COM-Server creation/call (snp)

• Repositioning• JobUnlock

Page 18: Building Server Services with Visual FoxPro

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

Page 19: Building Server Services with Visual FoxPro

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

Page 20: Building Server Services with Visual FoxPro

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

Page 21: Building Server Services with Visual FoxPro

FoxTeach 2001

Connect the Client

How to connect the client to the remote server application ?

Page 22: Building Server Services with Visual FoxPro

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

Page 23: Building Server Services with Visual FoxPro

FoxTeach 2001

Client Methods

• IsServerActive

• ServerStart

• JobCreate

• JobStatusGet

• JobTimerCreate (Thermometer)

Page 24: Building Server Services with Visual FoxPro

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

Page 25: Building Server Services with Visual FoxPro

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

Page 26: Building Server Services with Visual FoxPro

FoxTeach 2001

Special Tricks

How can we extend the potential power of remote server services ?

Page 27: Building Server Services with Visual FoxPro

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)

Page 28: Building Server Services with Visual FoxPro

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

Page 29: Building Server Services with Visual FoxPro

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

Page 30: Building Server Services with Visual FoxPro

FoxTeach 2001

Additional Material

Where to go from here ? Where to find additional information ?

Page 31: Building Server Services with Visual FoxPro

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

Page 32: Building Server Services with Visual FoxPro

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)

Page 33: Building Server Services with Visual FoxPro

FoxTeach 2001

FoxTeach Web Update Page

www.dbcentral.com

This session will NOT have web updates.

Page 34: Building Server Services with Visual FoxPro

FoxTeach 2001

Thank you!

Please remember to fill out your evaluation.