Errant Architectures, in which Martin Fowler explores some of the problems with distributed architectures: namely, there’s a huge overhead to distributed objects. One solution he discusses is the Remote Façade, in which course-grained objects are used at the distribution boundaries to provide an interface to finer-grained objects. The benefit is that you can reduce network traffic overhead by making as few remote method invocations as possible. His preferred solution, though, is not to distribute objects in the first place.
By happenstance, I read this article a couple days before coming across the Remote Façade (aka Session Façade) in Rod Johnson’s wonderful Expert One-on-One J2EE Design and Development. He derides the idea as not so much a design pattern as a workaround to problems introduced by distributed architecture. I really like the tone and practical stance taken in this book. I’m learning much even though I don’t do anything with J2EE. Yet.
In a sidebar to his article, Fowler writes:
In this discussion, I’ve assumed a synchronous, RPC-based interface. However, although that’s what I’ve described, I actually don’t think it’s always the best way of handling a distributed system. Increasingly, my preference is for a message-based approach that’s inherently asynchronous. In particular, I think they’re the best use of Web services, even though most of the examples published so far are synchronous.
He then points us to Enterprise Integration Patterns. Good stuff. Lots to take in. In particular, I’m suddenly very intrigued by asynchronous messaging. Quite different from how I usually think about things, although at first glance it seems that I may have already given it some thought through my dealings with Jabber.
So much to learn. So much fun to be had.