Dan Rosanova

Dan Rosanova DanRosanova

Niner since 2010

Microsoft Integration MVP, author, speaker, distributed computing enthusiast. 


  • Data/​Contract Coupling in Messaging

    I think XSD can be really useful, especially on very large scale distributed environments.  That said I rarely see people use them well.  To quote Marshall McLuhan: "The message is the medium".  I think there is a lot of value in the intrinsic understanding of a message based on contract.  Even things like content based routing.  I understand message properties as a KVP concept, but that seems to just introduce another sort of coupling and reminds me too much of JMS. 

    I like XSD because you can make a stand alone message with some portable validation and this can be really useful in distributed (and especially occasionally disconnected scenarios).  A SalesOrder schema that doesn't allow negative quantity and dollar amounts is a good example.  My clients should know (both human and machine) that they cannot break these rules.  Throw this into JSON and how do you enforce these basic rules - especially without introducing the dependency of a live service endpoint.  I think the example about date formatting is a good one. 

    Again, this isn't really a defense of XSD per say.  Most XML/XSD I've seen is little more than angle bracket delimited text files.  I like XSD because I have tools that make it easy to work with, when I remember the old days of XML... I want to forget they ever happened - but as we look to build ever more connected systems and aspire to allow them to auto connect I don't see how you can do this without some sort of schema.  Any sort of semantic web approach will require something the machine can use to infer context and meaning.  I do wish it could be easier though.