Client/Server Application Basic Features
The necessary functionality for all client server applications
by Mark Henri

GUI Persistance With Registry
The application should remember where it was on the screen and what state (min,max)

new_handler
Make sure that your application doesn't present the user with a memory violation error with this redefinition of the new handler. Used in combination with a try/catch block in the main() routine, there's no excuse for seeing OS errors if the application crashes. You can then give the user your own meaningful error message.

Version Logging
Keep track of the latest version in the database. Flag if a version is absolutely required by database patches so an outdated client can't run.

Automated Version Updating
The program checks for upgrade every day or at startup.

Auto Shutdown
All client applications should poll the server every 10-20 seconds for system status messages. If the server determines that the program needs to be logged off, the program needs to have the ability to close itself from whatever state it's in.

Server Side Processing
Billing rolls, period end closes, data validation etc. should all be done through automated, scheduled batch jobs running on the server. In the desktop world, these are accomplished with services running at the server. On databases such as Oracle, the scripts can be scheduled in the database itself.

try catch (...) in main()

local logging and db logging

global class functions

running server communication entrance

reference to web page documentation
Use the internet/intranet for documentation if possible. Otherwise, write all help documentation in HTML and use the local browser to view it. If necessary, use the QHTML customer control to create HTML help scripts for interactive help. See www.gipsysoft.com for details.

tooltips in all dialogs

wizard style entry dialogs where appropriate
The use of pictures to establish personality and a lighter feeling in wizards is part of the modern client server application.

user login
Authentication is crucial now days.

help chat
A chat server that the application can tie into so that users can communicate with each other regarding the use of the product or the issues that they are facing. Things like ticker could be especially beneficial to corporations.

user error log
Local as well as server side error logs are crucial for debugging.

question log with reward system
Allow the customers to pose a question in the application quickly and submit them to the database. Log the user name, timestamp and everything so that they can be used to identify areas in the application that are unclear.

help search engine

auto log out and database close
Enable the program to expire after so many minutes of idle time. Don't shut the program down though, just ask for the password again.