On Mar 2, 2013, at 5:46 AM, Phil Mayers <p.may...@imperial.ac.uk> wrote:

> You seemed curious why someone wouldn't use AMP. Personally I have two 
> common use-cases:
> 
>  1. Communicating between two trusted Twisted processes, for which PB 
> is good enough.

There are two reasons that someone might want to consider AMP in this case.  I 
am not necessarily saying you would want to consider AMP here - you seem to be 
pretty happy with your decision and I'm not saying it's wrong.  I even gave 
some reasons why PB would be a better idea sometimes.

One is that it makes it a bit easier to replace one end of the wire with 
something that isn't Twisted - or at least, preserve the plausible deniability 
that you might, which can make it more politically palatable to deploy Twisted 
in the first place :).  Granted, "use PyPy" is increasingly a better argument 
for the sorts of people who would want this assurance - performance nuts - than 
"you could re-implement in another language later".  Still, if there are other 
reasons, or you are in an environment where another language is popular, while 
PB implementations for other languages do exist, and I have deployed polyglot 
PB clusters, it adds a surprising dimension of additional complexity.  
Deploying a polyglot AMP system is a breeze, even if you have to implement AMP 
from scratch for the other language in order to do it ;).

Another reason is that it makes versioning the protocol easier.  With PB, it's 
very easy to build a protocol that mirrors your application's internal state, 
and expose implementation details accidentally, which then have to be 
painstakingly emulated when you roll out a new version.  This isn't much of a 
concern if your protocol is pretty stable, and/or your application upgrades are 
synchronized.

Like you said though: writing up all those message format declarations is not 
zero-cost.  It's certainly much quicker to get a basic PB cluster up and 
running since you can just toss a couple of remote_ declarations in and be off 
to the races.

There is a good reason Twisted still ships both and we have no plans to ever 
get rid of PB :).

>  2. Communicating with a semi-trusted third party process, for which a 
> RESTful interface or XML/JSON RPCs are *available* and sufficiently 
> secure and capable for my needs.

For this one, obviously, XML or JSON-RPC is the right choice.  I mean, heck, 
90% of Twisted is implementations of messy, arguably bad protocols (IMAP?  POP? 
 **FTP?**) which you probably shouldn't use, except you have to because you 
want to talk to a system that uses them :).

> Obviously other people will have radically different needs, but for me, 
> AMP adds little.

Sure.  It might not be for everybody.

-glyph
_______________________________________________
Twisted-Python mailing list
Twisted-Python@twistedmatrix.com
http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python

Reply via email to