What document-oriented means to me

I'm WAY behind on my blog reading (and writing) ... so, in an attempt to recify that, I'm going back and reading a bunch of old posts. Way back in January, Tim was postulating on what document-oriented really means. And since I have a viewpoint about this ...

To me, document-oriented (also called message-oriented or message-centric) is less about programming models or on-the-wire representations and more about the developer's mindset. I recommend all Web service developers try to change the way they think about distributed solutions ... especially if they've come from a DCOM, Remoting, etc. background. When you're not thinking in terms of messages, certain inappropriate concepts can seep into your service. For example, object-oriented concepts like inheritence and polymorphism don't belong in a service interface. Don't get me wrong, there are ways to acheive the benefits these concepts provide, but it's done differently. Developers with an RPC mindset also think in terms of object instances which don't really apply to the messaging mindset. Lastly, RPC is largely dependent on the request-response exchange pattern. Messages can be one-way, pub-sub, solicit response, or request-response. Okay, one more thing to distinguish these mindsets ... messaging scenarios are better equiped to handle async, store and forward, and queuing scenarios.

Those are the differences I see between the 2 differing mindsets. If you're a Web service developer, think in terms of messages - not methods - it will open your mind and you won't loose anything in the transition.