« Coupling isn't so black and white | Main | REST Eye for the SOA Guy »

Code-first services

Most people who have been around distributed systems development for awhile recommend against code-first services. These are services where someone writes a normal programming language artifact, usually a Java or C++ object, and then turns it directly into a distributed service. Among the reasons to avoid this are that such objects are not designed to deal with distributed system issues, such as partial failure, and also because the approach more easily allows language-specific features to creep into the service contract, potentially giving service consumers no choice but to implement using the same programming language.

Despite such recommendations, however, sometimes developers still want to take the code-first approach. Many see it as convenience, and are unaware of the long-term ill effects that it can create. Others choose the development convenience even when they know that what they're doing could cause problems down the road.

And because developers demand to be able to do code-first development, suppliers and vendors have to support it in their products, and eventually even standards support it too. JAX-WS 2.0, for example, specifies standard annotations that allow programmers to turn POJOs into web services. Microsoft supports similar stuff in their tools and languages as well.

Through a recent Joe McKendrick blog posting, I see that our old friend Ronan Bradley has issues with Celtix Enterprise for supporting code-first services through JAX-WS 2.0. Ronan, a former IONA employee, says that he's not intentionally singling us out for this, given that we're not alone in supporting that standard, but I'm not sure why he also chooses to ignore all the contract-first service support that Celtix Enterprise also offers.

Orbix has long promoted contract-first development, which may in fact be where Ronan first learned about it. Our Artix GUI tools strongly push customers toward contract-first services, and our experiences there have helped create the Eclipse SOA Tools Platform Project (STP) to promote open implementations for such tools. All of our training courses recommend contract-first services over code-first services. But ultimately, our WS products support both approaches because that's what our customers want them to do. It would be helpful to neither our customers nor ourselves if we held back useful features from them in the name of some sort of SOA purity.

TrackBack

Listed below are links to weblogs that reference Code-first services:

» "The Danger of Automatic Service Creation" Beef from Real World SOA
It's always good to end the year with some sort of controversy, and thus one has sprung up. I'm talking about Ronan Bradly’s post about The danger of "automatic" service creation and how it's counter productive to reuse.... [Read More]

» Blog Wars from Lori MacVittie
[Read More]

Comments (1)

Steve,

I did acknowledge and will restate that IONA has a very long track record in contract-first development and yes it is true I did learn about it from Orbix - although it was a little while before I joined IONA.

The reason I highlighted Celtix Enterprise's support for code-first services was because the press release highlighted it as a new feature. Why I focused on it was because I was writing about the dangers of code-first services. In that context, it would have been a little tedious to list off all the stuff in Artix that I approve of. :-).

However, I am glad that we agree that code-first comes a poor second to service-first.

Ronan

Post a comment

(If you haven't left a comment here before, you may need to be approved by the site owner before your comment will appear. Until then, it won't appear on the entry. Thanks for waiting.)

About

This page contains a single entry from the blog posted on December 20, 2006 2:06 PM.

The previous post in this blog was Coupling isn't so black and white.

The next post in this blog is REST Eye for the SOA Guy.

Many more can be found on the main index page or by looking through the archives.

Powered by
Movable Type 3.31