Hello,
I am a developer of a desktop application formerly written in Cl*pper now maintained and enhanced in Xb*se++. The program uses DBF/NTX files opened in SHARED mode from a Samba or Windows shared folder. This type of database access became slower and more cumbersome with almost every Win OS release. Also, the need to access the database remotely (from outside the LAN) can now only be fulfilled with the help of Win (or other) terminal services.
I'm thinking of converting the application into a server and a rich client component. The client part would remain the Xb*se++ application with the GUI already familiar with the users, and the server part with most business logic could be a Harbour program run on Linux/Windows/other OS.
My goal/expectation with this setup is:
- to have a database (first the same DBF files, later maybe sqlite or something else if needed) close/local to the program containing business logic, this way speed up data processing.
- to have a single running process (the server part) that has access to a local database, eliminating file access through SMB, thus to have a more robust solution that is more error prone to network intermissions.
- to enable the clients to connect also remotely (from outside the LAN) without the use of terminal solutions.
- to have the option to choose from various operating systems the server component can run on.
- to have a reliable solution.
My questions are:
- Are the above goals valid?
- Have you experience in setting up a similar client/server solution in Harbour?
- What kind of communication would you recommend between the server and client processes?
- Should the server be multi-threaded?
- Which (contrib) modules of Harbour should one consider to use?
- What disadvantages does such a set up have?
Thank you for any help, idea, advice.
Best Regards,
Otto