Login  

Blog Stats

                

                   E-mail | Twitter

Web 2.0 University Week in Las Vegas in October, 2009

New: Subscribe via e-mail

Enter your email address:

Delivered by FeedBurner

Follow Dion Hinchcliffe on Twitter

follow dhinchcliffe at http://twitter.com

Dion's Speaking Calendar:

Dion Hinchcliffe Speaking at NKU on Web 2.0 and Mobility

Dion Hinchcliffe Speaking at CeBIT 2009 on the Future Enterprise Workplace

Dion Hinchcliffe Speaking at QCon London 2009 on Web Architecture

Dion Hinchcliffe Speaking at Web 2.0 Expo San Francisco 2009

Dion Hinchcliffe Instructor at Web 2.0 University Week in Las Vegas in October, 2009

Dion Hinchcliffe Presents the IMI 2009 Webinar Series on Web 2.0, Cloud Computing, Enterprise Social Networking, and Mobile Web 2.0

Sponsored Advertising


Your Ad Here

Post Categories

Archives

Blogs Read By Me

Building Blocks of Great Systems

Consulting

Contact

Tech News Read By Me


Web 2.0 Architectures Book by Duane Nickull, Dion Hinchcliffe, and James Governor

Web 2.0 Architectures

by Duane Nickull, Dion Hinchcliffe, and James Governor

Listed on BlogShares

Dion Hinchcliffe's Blog - Musings and Ruminations on Building Great Systems

Agile Methods, Enterprise Architecture, 2.0 Services, and Web Development

OK, I will admit it: XML is data exchange nirvana. It's the data format swiss-army knife that we've always wanted and finally got: It lets us represent virtually any type of data in a simple, structured way that others can easily read and use. XML is simple, it is straighforward, and we really just have to learn three little things to use it: angle brackets, tags, and tag values.

And XML is everywhere these days. A quick survey of the systems in your organization will surely turn up the fact that XML is now present in just about everything, from Microsoft Office 2003 to Amazon's intriguing REST APIs.

However, there seems to be trouble in paradise. Since it's been invented, just about every conceivable attempt has been made to make XML "easier" for software developers to read, write, and manipulate. And if you took a survey of the ways to represent XML in forms other than itself, you would surely come away thinking that XML must be the most difficult data format in the world to use. In fact, since XML's emergence and ascendency, the number of attempts made at wrapping XML in an object model have been astonishing.

We've always had Plain Old XML (POX) of course, just XML in ASCII form, angle brackets and all. But then the first XML APIs arrived on the scene. Originally it was just SAX and DOM, but now there are XOM, Stax, and JDOM, to name just three of many, many others. All of these essentially purport to do wrap XML the "right" way. And more are on the way. Surely there is something important we don't know about XML.

Figure 1: POX (Plain Old XML) and the myriad methods for manipulating it

As important as wrapping, there are now also innumerable ways to convert information represented in your local programming language into XML, whether that is C#, Java, or whatever else you happen to use. For instance, the .NET Common Language Runtime can already convert any .NET datatype into SOAP, and there are a constellation of Java<->XML mappings. And that takes us close to the neverending debates about XML over the wire and SOAP vs. REST.

All of this attention around converting things to and from XML reveals a huge and ongoing fascination with the problem of keeping information in two different formats. One being XML, which just about anyone can consume, and the other being whatever format you actually do your work/store things in. Note that for some reason, these are hardly ever the same thing. And that's where we begin to understand all the hoopla around the ways for getting things into and out of XML.

The big, ugly secret of XML is this: Though simple to read and easy to look at, XML is very unpleasant to manipulate and process directly. A recent post by Quoderat says it best: [XML object models] always look easier with the simple examples used in introductions and tutorials, but as soon as you try to use them in a real-world application, their relatively minor advantages disappear in the noise of trying to deal with the complexity of XML structure.

So, as enterprise architects, what does this mean we should do? XML isnt' going away, nor should it. Having to deal with XML natively, which is absolutely critical when dealing with web services for example, isn't going away. But manipulating XML directly results in amazingly fragile, brittle, and smelly code that won't last beyond the next structural schema change.

The title of this post says it all: there is a huge challenge hidden in the fact that POX is the means around which all XML-based interoperability has been staked. But the ongoing flood of XML APIs show us that dealing with XML abstractions in our native representations is still a hugely unsolved problem. In fact, I have seen untold mountains of code that marshals XML back and forth between local languages and systems. Schema conversion, XSL-style, has become a huge help but it still doesn't directly address the impedance problems that programming languages themselves have with XML.

If you've read this far in hope of a solution, I'm sorry to deliver the news. The right answer to the dual representation problem (POX<->local representation) hasn't been found yet. Certainly many folks are looking at the problem and some are getting closer including the Hibernate XML mapping folks. And some are clearly struggling, such as Microsoft's X# effort.

There's no question, the POX plague is a significant morass in any enterprise architecture which has XML interoperability as a key feature. Those who work in service-oriented architectures will be happy to tell you the many pitfalls that await. The percentage of code that has to deal with XML conversion and change frequency in such architectures is alarming.

For now, the problem has to be scoped and monitored as a risk in any project that has significant POX in the seams of its architecture. And enterprise architects are duly warned to keep a watchful eye on things as XML continues to make inroads into our systems.

Technorati: , ,

posted on Saturday, March 12, 2005 12:42 PM

AddThis Social Bookmark Button

What People Are Saying About This Post...

# re: POX: The plague in your enterprise architecture 3/13/2005 4:34 AM James
If you want to learn about EA, visit http://blogs.ittoolbox.com/eai/leadership

# re: POX: The plague in your enterprise architecture 3/14/2005 8:55 AM Douglas
Maybe mapping isn't the answer at all. One of the points of your article is that you have to deal with plain old xml without any kind of additional api layered on top of it. Why not take this a step further and say that mapping to and from xml is also the wrong way to deal with it. The way that Hibernate is approaching the XML problem is the say basic way that Castor approached it, figure out how to map relational data to xml. The same goes for the APIs that you mentioned, figure out how to map XML into programming language X. Maybe dealing with XML natively means that you don't do any mapping, that the language itself is meant to process XML, like X# or XQuery, and that the way that you store your data is AS XML, so no mapping is necessary. This would relieve the impedence mismatch that you talk about and allow the flexibilty of XML to not only be in the way that the data is presented but also in the way that the data is processed and the way that it is stored.

# re: POX: The plague in your enterprise architecture 6/17/2009 6:34 AM free online games
The title of this post says it all: there is a huge challenge hidden in the fact that POX is the means around which all XML-based interoperability has been staked.

# re: POX: The plague in your enterprise architecture 6/18/2009 3:04 AM moha
<a href="http://www.LAND-FOR-SALE00.INFO">????? ?????</a> - <a href="http://www.HIRE-VILLAS.INFO">????? ???</a> - <a href="http://BUILDING-MAPS.INFO">????? ??????</a> - <a href="http://www.BUILDINGS00.INFO">??????</a> - <a href="http://www.BUILDINGS-FOR-SALE00.INFO">?????? ?????</a> - <a href="http://www.LAND-SALE00.INFO">??? ?????</a> - <a href="http://www.THE-SALE-OF-APARTMENTS.INFO">??? ???</a> - <a href="http://www.THE-SALE-OF-REAL-ESTATE.INFO">??? ??????</a> - <a href="http://www.JORDAN-HOMES.INFO">???? ??????</a> - <a href="http://www.HOUSES-IN-INSTALLMENTS.INFO">???? ????????</a> - <a href="http://www.PREFABRICATED-HOUSES.INFO">???? ?????</a> - <a href="http://www.JEDDAH-HOMES.INFO">???? ???</a> - <a href="http://www.HOUSES-APARTMENTS00.INFO">???? ???</a> - <a href="http://www.HOUSE-FOR-SALE00.INFO">???? ?????</a> - <a href="http://www.RENTAL-HOMES00.INFO">????? ?????</a> - <a href="http://www.DESIGNS00.INFO">??????</a> - <a href="http://www.DESIGN-HOUSES.INFO">?????? ????</a> - <a href="http://www.DESIGNS-READY.INFO">?????? ?????</a> - <a href="http://www.APARTMENT-DESIGNS.INFO">?????? ???</a> - <a href="http://www.VILLA-DESIGNS.INFO">?????? ???</a> - <a href="http://www.ARCHITECTURAL-DESIGNS.INFO">?????? ??????</a> - <a href="http://www.ENGINEERING-DESIGNS.INFO">?????? ??????</a> - <a href="http://www.DESIGNS-AND-FACADES.INFO">?????? ? ??????</a> - <a href="http://www.TERRAIN-DESIGN.INFO">????? ?????</a> - <a href="http://www.DESIGN-MAPS.INFO">????? ?????</a> - <a href="http://www.DESIGN-DEPARTMENT.INFO">????? ???</a> - <a href="http://www.DESIGN-OF-APARTMENTS.INFO">????? ???</a> - <a href="http://www.THE-DESIGN-OF-VILLAS.INFO">????? ???</a> - <a href="http://www.THE-DESIGN-OF-BUILDINGS.INFO">????? ?????</a> - <a href="http://www.DESIGN-PROPERTIES.INFO">????? ???????</a> - <a href="http://www.OWNERSHIP-OF-HOUSES.INFO">????? ????</a> - <a href="http://www.OWNERS-OF-APARTMENTS.INFO">????? ???</a> - <a href="http://www.VILLA-OWNERSHIP.INFO">????? ???</a> - <a href="http://www.MAPS00.INFO">?????</a> - <a href="http://www.MAPS-HOUSES.INFO">????? ????</a> - <a href="http://www.APARTMENT-PLANS.INFO">????? ???</a> - <a href="http://www.MAPS-VILLAS.INFO">????? ???</a> - <a href="http://www.ARCHITECTURAL-MAPS.INFO">????? ???????</a> - <a href="http://www.MAPS-HOME.INFO">????? ?????</a> - <a href="http://www.MAPS-ENGINEERING.INFO">????? ??????</a> - <a href="http://www.APARTMENTS00.INFO">???</a> - <a href="http://www.RIYADH-APARTMENTS.INFO">??? ??????</a> - <a href="http://www.APARTMENTS-IN-INSTALLMENTS.INFO">??? ????????</a> - <a href="http://www.JEDDAH-APARTMENTS.INFO">??? ???</a> - <a href="http://www.APARTMENT-FOR-RENT00.INFO">??? ???????</a> - <a href="http://www.FLATS-FOR-SALE.INFO">??? ?????</a> - <a href="http://www.APARTMENT-FOR-SALE00.INFO">??? ?????</a> - <a href="http://www.EGYPT-APARTMENTS.INFO">??? ???</a> - <a href="http://www.APARTMENTS-PHOTOS.INFO">??? ???</a> - <a href="http://www.PHOTOS-VILLA.INFO">??? ???</a> - <a href="http://www.REAL-ESTATE00.INFO">??????</a> - <a href="http://www.JORDAN-REAL-ESTATE.INFO">?????? ??????</a> - <a href="http://www.RIYADH-REAL-ESTATE.INFO">?????? ??????</a> - <a href="http://www.KUWAIT-REAL-ESTATE.INFO">?????? ??????</a> - <a href="http://www.REAL-ESTATE-HOMES00.INFO">?????? ????</a> - <a href="http://www.JEDDAH-REAL-ESTATE.INFO">?????? ???</a> - <a href="http://www.PROPERTIES-FOR-RENT.INFO">?????? ???????</a> - <a href="http://www.PROPERTIES-FOR-SALE00.INFO">?????? ?????</a> - <a href="http://www.REAL-ESTATE-FOR-SALE00.INFO">?????? ?????</a> - <a href="http://www.EGYPT-REAL-ESTATE.INFO">?????? ???</a> - <a href="http://www.VILLAS00.INFO">???</a> - <a href="http://www.VILLAS-JORDAN.INFO">??? ??????</a> - <a href="http://www.VILLAS-RIYADH.INFO">??? ??????</a> - <a href="http://www.VILLAS-JEDDAH.INFO">??? ???</a> - <a href="http://www.RESIDENTIAL-VILLAS.INFO">??? ?????</a> - <a href="http://www.VILLAS-REAL-ESTATE.INFO">??? ??????</a> - <a href="http://www.VILLAS-LEBANON.INFO">??? ?????</a> - <a href="http://www.VILLAS-FOR-RENT00.INFO">??? ???????</a> - <a href="http://www.VILLA-FOR-SALE.INFO">??? ?????</a> - <a href="http://www.VILLAS-FOR-SALE.INFO">??? ?????</a> - <a href="http://www.VILLA-FOR-RENT00.INFO">??? ???????</a> - <a href="http://www.PALACES-FOR-SALE.INFO">???? ?????</a> - <a href="http://www.LEASING00.INFO">???????</a> - <a href="http://www.SHOPS-FOR-RENT.INFO">????? ???????</a> - <a href="http://www.SHOPS-FOR-SALE.INFO">????? ?????</a> - <a href="http://www.SCHEMES00.INFO">??????</a> - <a href="http://www.SCHEME-OF-LAND.INFO">?????? ?????</a> - <a href="http://www.BUILDING-SCHEMES.INFO">?????? ????</a> - <a href="http://www.HOUSING-SCHEMES.INFO">?????? ????</a> - <a href="http://www.SCHEMES-APARTMENTS.INFO">?????? ???</a> - <a href="http://www.SCHEMES-VILLAS.INFO">?????? ???</a> - <a href="http://www.SCHEMES-FOR-SALE.INFO">?????? ?????</a> - <a href="http://www.HOMES-SCHEMES.INFO">?????? ?????</a> - <a href="http://www.ENGINEERING-SCHEMES.INFO">?????? ??????</a> - <a href="http://www.FARMS00.INFO">?????</a> - <a href="http://www.FARMS-FOR-SALE00.INFO">????? ?????</a> - <a href="http://www.REAL-ESTATE-OFFICES.INFO">????? ????????</a> - <a href="http://www.OFFICES-OF-REAL-ESTATE.INFO">????? ??????</a> - <a href="http://www.OFFICES-FOR-RENT00.INFO">????? ???????</a> - <a href="http://www.ENGINEERING-OFFICES.INFO">????? ??????</a> - <a href="http://www.HOMES00.INFO">?????</a> - <a href="http://www.THE-HOUSES-IN-INSTALLMENTS.INFO">????? ????????</a> - <a href="http://www.HOUSES-FOR-RENT00.INFO">????? ???????</a> - <a href="http://www.HOMES-FOR-SALE00.INFO">????? ?????</a> - <a href="http://www.MODELS-APARTMENTS.INFO">????? ???</a> - <a href="http://www.SKINS-VILLAS.INFO">?????? ???</a> - <a href="http://www.BUILDINGS-AND-FACADES.INFO">?????? ?????</a> - <a href="http://www.SKINS-HOMES.INFO">?????? ?????</a>

# hey 6/18/2009 10:34 PM steering wheel control
Having to deal with XML natively, which is absolutely critical when dealing with web services for example, isn't going away.
Regards,

# guys 6/19/2009 11:22 PM 123 bingo bonus
The title of this post says it all: there is a huge challenge hidden in the fact that POX is the means around which all XML-based interoperability has been staked.
Regards,


# Rocking!!! 6/29/2009 11:02 PM games
All I need is more info regarding this post and this is the opportunity I am waiting for.
Regards,


What do you have to say?

Title:
Name:
Url:
Comments: 

Protected by Clearscreen.SharpHIPEnter the code you see: