On 8/11/07, Benjamin Franksen <[EMAIL PROTECTED]> wrote: > A certain amount > of dynamism wrt the message content (high level protocol) is necessary for > systems for which Erlang was designed, namely large distributed control > systems with minimum down-times. For large distributed installations it is > a matter of practicality to be able to upgrade one component w/o needing to > recompile (and then re-start) all the other components that it communicates > with -- for systems with expected down-times of 3 Minutes per year it is a > matter of being able to meet the specifications. You'll have a hard time > finding high-availability or large control systems which use an IDL > approach for communication.
Hmmm, that's interesting. I'd never considered lack of typing to be a good thing for system robustness before! Question: to what extent does interface versioning get around this problem? I assume the issue we're trying to address is to be able to upgrade clients/servers/peers independently, without losing connectivity with unupgraded systems? So, using versioned interfaces: Initially we have: client1 marketinterface1 server marketinterface1 client2 marketinterface1 Then, we upgrade the server with a new interface, marketinterface2. Significantly, we keep the old interface. So now we have: client1 marketinterface1 server marketinterface1, marketinterface2 client2 marketinterface1 The whole system continues to work: client1 and client2 continue to chat with server on marketinterface1. Now we upgrade client1: client1 marketinterface2 server marketinterface1, marketinterface2 client2 marketinterface1 ... and client2: client1 marketinterface2 server marketinterface1, marketinterface2 client2 marketinterface2 Finally, we deprecate/remove marketinterface1 from the server: client1 marketinterface2 server marketinterface2 client2 marketinterface2 _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe