Sponsored Link •
Let's take an old idea, like RPC, and wrap it with some new hype and nomenclature, and then mediate it with a completely orthogonal protocol! Yeah, lets!
I was just idly thinking today about Web Services. You know, the big hype item that some folks hoped would break through the IT economic doldrums after dotbomb and 9/11. There were articles, magazines, conferences, and the normal hoopla, all boiling around this old concept wrapped in new clothes.
The old concept, of course, is RPC -- Remote Procedure Call. A concept, by the way, that never really succeeded in a huge way. Apparently the industry decided that we needed to take this questionably successful technique and promote it to the whole web at large.
Of course it couldn't be just remote procedure call. It had to be remote object invocation! We can't just have functions and procedures, we've got to have objects. Functions are just to passe. Objects are where it's at.
OK, so if we are going to implement remote method invocation (RMI) in a generic way, how do we do that? Clearly we don't want to invent our own protocol for that, do we. No, no, it would be much better to piggy back on some completely orthogonal protocol that evolved for utterly different reasons. But which one? Should it be SMTP, or NNTP, or CMIP?
Well.... Lots of enterprises have created a very nice security hole around HTTP. Yeah! If we use HTTP then we can sneak over the same security hole and enterprises won't have to do anything special to allow remote method calls to come in. Right?
So, yeah, lets take a protocol that evolved for the transport of HTML documents between servers and web browsers, and hijack it for transporting method invcocations complete with arguments, return values, and object serialization. Yeah! Can you spell "coupling"? I knew you could!
Ah, but there aren't enough TLAs in our scheme yet. We need more TLAs. (Three Letter Aconyms). Another popular TLA is, XML. Yeah! XML! Lets encode all the procedure invocations, method arguments, return values, object serializations, headers, footers, and all that other logistical stuff into XML documents and then tranport them over HTTP! Yeah! Can you spell "big, messy, and slow"?
OK, I'm ranting (or hand't you noticed). But really folks, if you want to provide a service on the internet, there is already a facility for that. Write a little process that sits on the back side of a socket. If the industry really needs some kind of platform independent remote method invocation (something that I seriously doubt) I think we could do better than to hijack HTTP and XML.
|Robert C. Martin (Uncle Bob) has been a software professional since 1970 and an international software consultant since 1990. He is founder and president of Object Mentor Inc., a team of experienced consultants who mentor their clients worldwide in the fields of C++, Java, OO, Patterns, UML, Agile Methodologies, and Extreme Programming. In 1995 Robert authored the best-selling book: Designing Object Oriented C++ Applications using the Booch Method, published by Prentice Hall. From 1996 to 1999 he was the editor-in-chief of the C++ Report. In 1997 he was chief editor of the book: Pattern Languages of Program Design 3, published by Addison Wesley. In 1999 he was the editor of "More C++ Gems" published by Cambridge Press. He is co-author, with James Newkirk, of "XP in Practice", Addision Wesley, 2001. In 2002 he wrote the long awaited "Agile Software Development: Principles, Patterns, and Practices", Prentice Hall, 2002. He has published many dozens of articles in various trade journals, and is a regular speaker at international conferences and trade shows.|