Components for a client/server architecture

Samuel newsgroups at debain.org
Sun May 20 17:27:37 EDT 2007


Hi,

I am looking for some recommendations for client/server technologies and 
for the communication involved.

I am currently planning to port a Perl application that has grown out of 
proportion to another language and architecture. For this purpose, I am 
investigating technologies that best fit the requirements.

The current plan for the architecture of the ported software includes:

- A client/server model, where the server provides a service for
  configuring network devices and the client provides a user interface
  that runs on Unix.

- Java (and possibly Jython) or Mono/C# (or possibly IronPython) on the
  server. Requirements are: A strong and fair threading model. This is
  actually what drove me away from Perl and what essentially prevents
  using a normal Python interpreter on the server. I don't know whether
  the GIL and starvation issues also apply to IronPython or Jython.
  Sharing non thread-aware objects of arbitrary type between threads
  without any restriction is absolutely necessary (this is not possible
  in Perl).

- Perl or Python on the client side. Clients have to provide a UI (a
  web application is not an option).

Unfortunately, I have very little experience with client/server 
architectures and the protocols involved, so I would like to collect your 
recommendations as a starting point for further research:

- Are there any standard protocols that make it easy to share objects
  between Java/Jython/IronPython and Python or Perl over the network? I
  am thinking of a portable, language independent object 
  (de-)serialization, if such a thing exists.
  Having a defined protocol/interface between the client and the server
  that makes it easy to switch technologies on either side of the
  architecture is a strong requirement.

- How does bi-directional communication in such a protocol work? I am
  assuming that the client should not poll the server for callbacks,
  OTOH, leaving a TCP connection open also does not seem right.

- What is the security model of that protocol?

If my description of the project is inaccurate or too incomplete I 
apologize; the problem is that I still find it hard to tell which 
requirements actually matter.

If you have any pointers that might be of interest for such an 
architecture, please let me know.

-Samuel



More information about the Python-list mailing list