Matt Terski's Blog
Writing tomorrow's legacy applications today

My friend Bill points out that ObjectSpaces has been delayed until Longhorn. I could be wrong, but I sense the initial enthusiasm for ObjectSpaces is waning. So now I’m pondering:

Do we need O/R mappers anymore? Did we ever?

At the risk of sounding like someone who thinks SOA will solve all of the world’s problems, I want to spend some time testing the following hypothesis:

Does a service-oriented architecture diminish the need for an O/R mapper?

SOA changes not only the way we build our back-end services, but also the way we build our front-ends. In a recent conversation with Rocky Lhotka, he made the point that in an SOA, the client and the service are really separate applications – separated by a trust boundary. He also pointed out that invoking a service is a lot like invoking a stored procedure: 1) construct a request by filling in some parameters, 2) invoke a named operation, and 3) handle the response.

Clemens has posted recently about something he calls data services. In short, he makes the case for accessing your data through a service.

Continuing these thoughts, I’m now asking, “Can a service be akin to a smarter stored procedure?” If you look at it this way, you can write your ‘stored procedures’ in C# without Yukon ;-)

In an SOA, the client has its own layers (presentation, business, data) as does the service. But the client’s data layer does not necessarily connect to a database, It might just connect to a service. This gets to my reasons for asking whether we need O/R mappers:

·       The client’s business layer no longer needs to map to a relational database. Instead, it needs to map to service requests and responses.

·       If the service itself is a ‘smarter stored procedure’, does it need a rich domain model? If not, it doesn’t need to map this domain model to a relational model.

I’m writing more questions than answers in this post, but here’s one more:

·       If we really needed O/R mappers, wouldn’t we already have them? Yes, I know a number of vendors already sell O/R mappers, but if they were so vital, wouldn’t they be built into the fabric of every platform by now? I mean, saving objects into a relational database is something we’ve been doing for a long time. If O/R mappers were really the answer, wouldn’t this be a solved problem by now?

5/24/2004 10:29:01 PM (Central Daylight Time, UTC-05:00)  #    Disclaimer  |  Comments [0]  |  Trackback

You read it here first: The term service-oriented architecture shall be renamed to message-oriented architecture. SOA shall become MOA.

Well, not really. It won’t happen, even though it should.

The entire point of SOA is to achieve loose coupling between applications. That’s it. Loose coupling.

But that loose coupling has important second-order effects. It allows applications to evolve independently. It allows applications to scale independently. It allows applications to change deployment models independently. All without breaking one another.

As many have rightly pointed out, this goodness comes at a price: The only way to talk to a “service-oriented” application is to send it a message. You don’t get to see its types. You don’t know where it is really executing. You get to send it a message. It might send you a message in reply.

So, shouldn’t we call it, “Message-Oriented Architecture?”

5/20/2004 4:35:53 PM (Central Daylight Time, UTC-05:00)  #    Disclaimer  |  Comments [2]  |  Trackback

In a previous entry, I brought up the challenge of preserving the original caller’s identity across tiers. Sure, this can be solved in a half-a-dozen ways, but which is the right way for the given situation? When designing a real software system, it’s all about the tradeoffs.

And the tradeoff I faced is that I want to know the identity of the caller even after I cross from the presentation tier to the application service tier to the database tier. But I don’t want to incur the cost of authenticating a second or third time (at each tier). Remember, my callers’ identities are not guaranteed to be in Active Directory, so a service invocation would mean an extra trip to my own authentication service and database.

My solution is to pass the caller’s identity, out-of-band, as I cross from the presentation tier to the application service tier. Note, I said the caller’s identity, not credentials (by identity, mean all of the information that is required to construct a custom Principal). On the application service tier, I’ll use an HttpModule to pull the identity out of a SOAP header, reconstruct a principal, and attach it to the current request. Now, I can perform role-based authorization in the application service tier.

Of course, passing identity information around the network, even within the external firewall, is dicey. I’ll use IPSec to preserve the integrity of the data that moves between these two tiers.

So, I get the benefit of a trusted-subsystem authentication model, without loosing the ability to perform role-based authorization based on the original caller.

5/14/2004 7:05:39 AM (Central Daylight Time, UTC-05:00)  #    Disclaimer  |  Comments [0]  |  Trackback
Bio

I’ve been avoiding the ‘about me’ post until I first contributed some content to this blog. I didn’t want the inaugural entry to tell you what an interesting guy I was, only to be followed by the dead silence that comes from having nothing else to say.

But now that I’ve written a few entries, I’d like you to read them. And if I expect you to take interest in my writing, it’s only fair that I tell you a bit about me.

Like Eric Sink, I’m not a software legend. I haven’t written any books. You probably haven’t heard me give a talk. I don’t live in California or Washington. I live in Wisconsin. Yes, Wisconsin.

But if your home contains an item from the largest consumer products company in the world (Pringles, Puffs, or Tide to name a few), know that I helped design and construct the software that moved that product off the production line, through the warehouse, onto the truck, and into your local retailer. The next time you reach for the Charmin, think of Terski. If you own a pair of shoes with a swoosh on them, it’s possible that they were conveyed, sorted, and packed by software that I helped design, build, and deploy (along with this guy).

I spent the first era of my software career building logistics execution software for big clients. In those days I learned hard lessons about performance, scalability, and reliability. Nothing says, “Your software sucks,” quite like a stream of boxes falling off the end of a conveyor or semi-trucks backed up for two miles waiting to be diverted to the right dock door.

During this time, I got excited about the Booch notation – and later the UML. I thought these design notations were a key to advancing software engineering’s state-of-the-practice. Ironically, core development team for Rational Rose was located about two miles from where I was working at the time (yes, in Wisconsin). When I found this out, I got myself hired by Rational and began the second era of my career.

I spent the next few years working on Rose and its successor, XDE. I liked being at Rational and worked with some great people. But admittedly, I grew somewhat disillusioned with the UML and the efficacy of the modeling tools of the day.

So in 2002, I started the third era of my career when I co-founded Serlio Software with three of my colleagues from Rational. I’ll spare you the sales-pitch, but at Serlio we’re passionate about software engineering and the .Net development platform. My current technical interests include service-oriented architectures and rules-based systems (a.k.a. rules engines).

I’ll blog about these topics and more. I hope you’ll stick around.

5/10/2004 10:56:00 PM (Central Daylight Time, UTC-05:00)  #    Disclaimer  |  Comments [2]  |  Trackback


RSS 2.0 | Atom 0.2 | CDF | Send mail to the author(s) Email
On this page
Categories
Photos (beta)
www.flickr.com
Matt Terski's photos More of Matt Terski's photos
Archives
<November 2008>
SunMonTueWedThuFriSat
2627282930311
2345678
9101112131415
16171819202122
23242526272829
30123456

Monthly Archives
Blogroll
Advertisement
Misc

Disclaimer
The opinions expressed herein are my own personal opinions and do not represent my employer's view in anyway.