I've been on vacation in New England for the past week. I was in Boston during the DNC. Other than occasionally glancing at my Design Patterns book, I completely turned the .NET side of my brain off. It's been a good break. I spent a good deal of time reading the Boston Globe and thinking about things that matter in the real world, like issues surrounding the upcoming election. One thing I've recently thought was interesting is how critical thinking, changing one's mind, and admitting that you were wrong has suddenly become a horrible quality in a person. From what I can tell, a vast number of Americans view this as a serious character flaw.
Then I realized that when it comes to technology and this blog thing here, I'm a waffler! I'm a filp-flopper! I'm so ashamed! I'm always learning new stuff from people like DonXML! I'm constantly realizing that I've been wrong in the past, and am always changing my mind! One week I say tomato, the next to-MA-to! Even though what I'm doing today is vastly better than what I was doing yesterday, this flip-flopping is disgusting!
Consider the question of whether to use Typed DataSets vs. Custom Entities. Just a few months ago, I was a dyed-in-the wool Typed DataSet man. Couldn't live without them. I'd use them everywhere! All of my public web services returned my trusty typed DataSets. What if external clients couldn't understand a typed dataset diff-gram? “Bring 'em on!“ I'd say! “My way or the highway!“ I'd exclaim! “J2EE, you can run, but you can't hide” I'd forcefully proclaim.
Well, then I started reading things about how DataSets were the “Spawn of Satan“ and the Waffle iron began to sizzle. I pulled out my trusty flip-flops and started to explore the issue. Today, I've pretty much come full circle on my thinking. I'm creating Web Services that return Custom Entities and all of my crucial framework-oriented interfaces use Custom Entities. Here's how I have things set up:
- For internal, framework-based business services, I'm accepting/returning custom entities. This ensures that these objects are easily re-used across applications, and platforms.
- For external web services, I'm accepting/returning only custom entities, this seems to be the most flexible, most future-proof way of exposing data to the outside world.
- For application-specific data, I'm sometimes using Typed DataSets, I use them here because of all of the advantages that the DataAdapter affords in persisting and retrieving DB objects. An example here would be a Web-Based front end tool for managing FAQ's to be shown on our public web site.
But I realized that I'm confusing my constituents, especially the users of my web services. I'm waffling! They don't want what's best, they just want me to stand firm behind my decisions! Sure, typed datasets are bloated, overly complex and incompatible, but I said they were better, and I'd better stick by my decisions! Don't mess with DataSets!
So, when I get back to work later on this week, I'm going back to my old ways. Like I said, all this waffling on the issue is disgusting. I said Typed DataSets were good, so I'd better stick with it. I still have that old crappy code sitting around in SourceSafe somewhere. I'm going to revert and do a build as soon as I get back. Then no one can call me a Waffler. Don't you worry, I'm going to stick with this inferior code just because I once believed it was right. And you can count on me to stand behind it, even in the face of its obvious shortcomings. I'm going to keep it this way... at least until November.
-Brendan
Posted
08-02-2004 11:14 AM
by
Brendan Tompkins