Sorry if I am asking a trivial question but I have been searching for a while without any luck. I need to design a system and I am looking for advice on the technology that should be used.

The layout is very simple: it is a sales application with a centralized database and multiple clients. Each salesperson has GUI app installed on his/her laptop that should be able to connect to the database to retrieve data and upload data (i.e. register new orders).

My question is the following: how should the communication between the client and the server be implemented? I doubt that connecting directly to the RDBMS is a good idea... Should I use web-services? XML-RPC? How to implement authentication and encode the data?

Thanks for your advice!

  • Are these remote clients (across the internet) or all in a single LAN? – GrandmasterB Nov 6 '13 at 19:07
  • remote clients: access through internet – magom001 Nov 6 '13 at 19:13
  • Why not create a web application and have your users connect via a browser? That way you wouldn't have to support the GUI app. – Dan Pichelman Nov 6 '13 at 19:28
  • Not an option. Besides the desktop GUI should be capable of storing the input on a local database while offline and synching it with the central DB when connected. – magom001 Nov 6 '13 at 19:39
  • 1
    Will the clients need access from outside the network? Are they all using the same platform (client and server)? How important is throughput, latency, capacity per server? These are just some of the questions that need to be answered before selecting an approach. – Michael Brown Nov 6 '13 at 19:41

Based on what you are describing, a simple REST style interface should be more than sufficient. You'd compile the orders up into a chunk of XML, and post it to your server to add them. You can also respond to gets, puts, and deletes. Most desktop langauges/tools should have the necessary client libraries available for this.

Any of the more common server side languages would be suitable for the corresponding server piece. To secure the connection, set up SSL on the web server. For authorization purposes (in app rights), there's a couple options. You may want to look into how OAuth2 works. Or pass the credentials on as part of the HTTP request.


If security is an issue then you should consider the whole WS* web services SOA stack.

The specification is pretty daunting, and the , WSDL xml is frankly scary, however the complexity arises from the number of scenarios covered (different transports, different authentication methods, anti tampering, non-repudation etc. etc. ).

The good news is you mostly do not have to deal with this complexity most development environments have extensive and mature tooling and library support.

So a fairly simple WS service would more than cover your current requirements and any future requirements.


I believe these are the options to consider:

  1. Java applications (SWING or SWT). Plenty of libraries like Spring and Hibernate for building multi-tiered architectures, excellent database connectivity.
  2. Qt. Crossplatform, can work with data.
  3. Web application with offline support.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.