On 04/06/07, Tomas Restrepo <[EMAIL PROTECTED]> wrote:
I can't really comment on this, but I do have an opinion regarding it. I've become very familiar with the Java client code (as well as the .NET client code) over the past few months, and in my very humble opinion, a lot of the code is a mess. Not only is it complex, it is also hard to test and it has a number of poor practices that make it even more complex: Classes too big (just look at the connection or channel/session classes), very tight coupling between classes at different layers and an arcane threading model (i.e. MINA in the Java code, and unfortunately the original .NET code got stuck with the same model, even though it doesn't have the MINA restrictions). This not only means the code is harder to maintain (again, imho), it is also more fragile and inefficient (and the multitude of threads it creates here and there to work around the base threading model makes it "steal" valuable resources from the application/service using the client).
Yup, its a mess. It has grown to be a bit of a mess as solutions to various problems have crept in. What I'm saying is that it is important to understand what those problems are, because a clean implementation may well forget about them, only to have to re-implement them some other way. There's some tricky stuff going on that is not well documented, and I think it is worth perservering with it, to get a cleaner solution out of it. I'd just prefer to put a cleaner structure back into whats already there, rather than throw a lot of work out and start again. Rupert
