During the design phase for a color accuracy management system, mycompany decided to go with a client-server model rather than individual
workstations that are more or less independent. The central server would
be responsible for recording readings from the clients and doing various
calculations on the data. We wanted most of the calculation to happen
server-side in order to keep the clients very simple, and ease of
communication from client to server was a point of emphasis.
Rather than develop a server product from scratch, we chose Django
due to familiarity and being cross-platform/database-independent. On the
client side, the GUI toolkit of choice was wxWidgets, as it runs well
on a number of platforms and has unrestrictive licensing. It also helps
that I had developed a few other applications using it.
With the underlying technologies for the client and server chosen, we
needed a means for communication between the two. A number of XML and
other serialized formats were looked at, but eventually JSON won out.
Django includes simplejson, a Python JSON encoder/decoder. On the
client side, the excellent wxJSON library fit into the mix very well.
A few weeks later, the decisions made thus far have more than paid off.
I’ve developed a standard JSON message class that is implemented on both
the client and server, mirroring one another. This “protocol” is used to
quickly send data back and forth, and makes the source code on both
sides very readable and compact.
Using Django to power the server product means that the whole system is
easily managed from just about any browser, and the JSON message
protocol I’ve developed may be used by customers to interact with the
server from their own applications.
A lot of this is obvious stuff, but I figured I’d throw it out there for
those that might be interested in a really great combination of technologies.