(This message has been automatically imported from the retired mailing list)
Here is another conceptual question about how best to apply Zato.
Suppose I’m writing a new backend application from scratch - for the
sake of argument, let’s say it’s customer management. So I start by
designing and implementing new APIs for “create customer”, “retrieve
customer”, “update customer” etc. And I’ve decided I want to write it in
Having seen Zato, my natural inclination is to write the code directly
within the corresponding Zato handlers. I can open a database connection
within a handler^1, so I can implement all the application logic there
(validation, database queries etc). I could abstract this a bit by
putting the code in a ‘libcrm’ python package, and have the Zato
handlers call this; then libcrm is testable separately from Zato.
My question is: is this a sensible use of Zato? Or should I be deploying
a completely separate CRM application in its own server process?
In the former case, I get a bunch of Zato features for free like
hot-deploy, HA load balancing and query statistics; Zato becomes an
application server. Potentially multiple apps can be deployed on it. In
the latter case I have to handle the application deployment myself, and
if I front it with Zato, Zato is little more than a proxy.
Is there a ‘best practice’ in this area?
says " The service is invoked in the same operating system’s process and
thread the current service is in", so presumably it’s a direct method call.
This is as opposed to AnyServiceInvoker which uses HTTP.