Linux (open-source) & Interoperability (again)
CSP said their need was "increased integration with other criminal justice agencies," and they deduced, dear Watson, that the key to integration is "a standardised infrastructure."
That seems to play nicely into the first article I cited, which discusses how the usual suspects of open-source "big boys" are going to lend support to the Linux Standard Base project in an effort to "encourage the development of more applications for the Linux platform."
So this is all good, but what does it have to do with Web Services? I'm glad I made you ask.
CSP wants increased integration with other criminal justice agencies, and I'll make a few assumptions...
1. The other agencies they're referring to are not-Linux organizations.
2. They don't need to interoperate at technical low-level detail - EBCDIC vs. ASCII, Big-Endian vs. Little-Endian and the like.
3. The agencies are not big organizations and do not have big IT budgets.
Looking at everything it's NOT, we can see they're probably talking about Windows interoperability at the application level on a small-to-medium-sized budget. This is important because of this.
One of the most alluring ways in which Microsoft is promoting .NET is that it gives developers simplified (though proprietary) framework, methodology, and libraries for developing networked applications. This is a big contrast to J2EE which is very complex, and therefore requires significant time and labor to implement. As such, although open-source, free J2EE products are all over the place, the total cost can indeed be higher than getting a .NET license and hiring one really good .NET programmer.
I am extremely excited about the idea of PHP Collaboration Project (PCP, hah!) which "will aim to compete with Microsoft’s .NET platform..." Especially if it seeks to do so with an interoperability approach based on WS - another approach that Microsoft boasts, and developers, and businesspeople, are attracted toward.
However, we can probably guess what kind of "interoperability" Microsoft .NET may encourage - .NET Remoting rather than Web Services, C#.NET and ASP.NET and VB.NET apps working together, etc. Basically, Microsoft is still convinced they can own the space and lock everyone into their single platform. But that single platform is very attractive to people like CSP and other small or medium-sized orgs because it reduces complexity.
I would love PCP to do the same thing - reduce development complexity and cost for small to medium businesses. But at the same time, keep those business from the lock-in scenario, and maintain a standardized WS-based interoperability approach.
That would seem to line up with the requirements of orgs like CSP which would keep them from jumping to Windows.</div>
skipping a post
Another buzzword does suck, but I like the notion of creating Business Applications (BA) out of Service-Oriented (SO) components. Like Matt's analogy of composing Lx shell scripts or utility programs out of the small, text-processing utilities already available. For SOBA, you lay out your business processes, and then you compose the implementation out of these or those small utility services.
The real post for today is a response to 'Open Servicing' in one of my favorite mags. The synopsis of the article is that Apache Synapse is an open-source platform for deploying web services in an ESB architecture, and that it's a great idea because consortiums of vendors tend to make standards and practices that are overly complex and borderline proprietary.
Some gems from the article:
"It seems as though as soon as the open source community rallies around a technology, the IT industry starts taking it more seriously - and finds practical application for it. "
"...although technology standards are driven by a consortium, the consortiums are primarily representative of a handful of mainstream vendors with large market shares."
"The standards in Web services are becoming unmanageable...As a result, the Web services that are being developed in most organizations are not well thought out."
I've never had to deploy an entire SOA since most of my web services work just involves integrating 2 heterogenous environments with statically discovered services. As such, I'm very guilty of the charge leveled in the last quote there. I would love to see Apache make this a great project to better deploy, manage, secure, coordinate, ... web services.
Right now, I think most developers are just implementing the simple stuff like SOAP and WSDL, or maybe some of the more vital and down-to-earth WS-* standards like WS-Security, WS-ReliableMessaging, WS-Addressing. Some pretty gutsy outfits out there may be doing the whole WS-Policy & WS-BPEL dance, but like the article says, it's complex, confusing, and largely designed to fit into a handful of vendors' product roadmaps.
More and more, I think informed skepticism with regards to WS-* is in order. However, un-intelligent and reactionary jabs from a single-vendor perspective are not in order.</div>
Reynolds's SOA definition
cajo's response sounds nice to developers, because it's what they want to hear - we don't need to change the way we do things; SOA is just new buzz-hype on what we already do. but it would not be "honest" to say "that SOA means nothing more than separating business functions into routines, just as they have always done."
for example: one of our developers separated his business functions into routines: he made 11 .cfm pages of ColdFusion code, and then 1 page of ColdFusion code with 12 cfinclude tags. even if the only thing you've read is the senseless marketing trash that vendors are putting out about SOA, you know this cfm approach is not SOA, even though it is separating business functions.
Reynolds includes the key distinction at the end of his definition (a smart place for it):
"Each service provides an interface-based service description to support flexible and dynamically re-configurable processes"
the interface-based service description is mandatory. it's what makes an SOA different. the architecture is not based on identification of objects in the system, as with OOP. rather, objects come about from the descriptions of the services that need to be performed. neither is the architecture based on run-time context as the case with procedural includes of multiple script files.
the service descriptions come first, and are arranged into composite, higher-level services with their own descriptions. this is the key between SOA and other approaches to modularity.
I first encountered this in Erl's first book when he talked about the similarity between OOP and SOA - code to the interface. but with WS-based SOA, the interface is described using a standardized format so that the services implementing the interface can be in any language on any platform.
so the good news is that it is indeed another attempt at creating modularity and re-usability in software. the bad news is that if you work under the assumption that that's ALL it is, you won't really be capturing the benefits of SOA.</div>
(Microsoft != Web Services && Web Services != SOA)
now, I read an interesting opinion. I'm all for healthy skepticism and realism, but Fergesun isn't offering a good deal of either. the "tone" of his writing seems more like whining than real criticism.
he first shows his Microsoft fanboy side with this whopper:
"Web services are great! If you have to interoperate with non-Microsoft systems, they may be your only option."
now, even if one doesn't hate Microsoft, one would have to have their head buried pretty far into the sand to ignore the growing interest among enterprises in running platform-neutral software systems. hell, Java's popularity is largely a result of that single capability. I think it's a pretty safe assumption that if you're building software that will handle any meaningful amount of a company's business, you're going to need (or at least want) to interoperate with other systems in the company - be they non-Microsoft, non-.Net, non-Windows, non-American, non-Expensive, non-UnderYourTotalProprietaryControl, etc.
and his last direct quote I'd like to deal with:
"What I do not buy into is the idea that all systems should be seen either as services that expose their functionality only via unidirectional XML messaging or as clients of such systems."
well, news flash to Mr. Fergesun, "unidirectional XML messaging" is not SOA. what you've described is Web Services, though even web services are growing out of the unidirectional phase. while most SOA proponents think Web Services are the best means to achieving SOA, the two terms are not synonymous. so I'll be sure to make note when Fregesun is criticizing a technical aspect of Web Services that is not intrinsic in every SOA architecture.
Fergesun's problems listed are the "change in thinking" that comes along with asynchronous system operations, versioning, and reliability. in all of these cases, he mistakes Web Services as the only means to SOA, and furthermore, his Microsoft-centric perspective keeps him from seeing how these problems are actually addressed by web services.
in mentioning asynchronous operations, Fergesun ignores the fact that SOA != Web Services. it is entirely plausible to build service-oriented software that communicates via synchronous protocols. however, there is a very good case already made(by someone much smarter than myself) that asynchronous architecture is more appropriate for modern systems - that is, highly networked systems using the internet as their core platform. but Fergesun does not mention any of the merits of asynchronous architecture; he only laments the need of a "change in thinking." perhaps if Microsoft had written a white-paper on the subject and released Microsoft Change-In-Thinking XP, he would be more willing to buy...er, accept change.
as far as versioning goes, the .NET CLR approach does not alleviate versioning problems, it only changes them to be more like Java-on-Windows (other platforms, if you're crafty). for example, if your program requires functionality that is in 1.1 of the .NET framework and not in 1.0, you have to upgrade your .NET CLR to 1.1. (note: I came across this gem while searching for 'web services versioning' and literally laughed out loud.) the CLR approach might avoid "DLL Hell" but is that really of huge benefit? I know one of the things I like about Lx (and php, to a lesser extent) is being able to upgrade only certain components to enable new features, rather than having to buy/download/upgrade to the latest version of dozens of packages all at once that may or may not break my other code relying on them.
but back to the world of Web Services (again remembering SOA could actually be achieved without Web Services, even with completely proprietary .NET system architecture)...
UDDI is the (open-standards-based, non-proprietary) means to address the versioning and deployment of web services, and there are already a good deal of introductory methods for the practice. so we find that UDDI is the out-of-the-box standard for versioning web services. perhaps if Microsoft isn't on the ball with it, there's a problem with Microsoft. it typically happens that they will try to create an out-of-the-box tool instead of a standard - perhaps a nice little .NET Deployment Wizard that will be released in late 20X6.
since Fergesun makes only passing mention of the reliability "problem" with web services (again, not equivalent to SOA), I'll only make this link as my passing rebuttal.
Finally, I will close, mirror of Fergesun, with the eternal benefits of all new software technologies - revolutionary new productivity, nearly-infinite opportunity, vast new markets for new products, and perhaps most importantly, independence from proprietary legacy vendors.
I may be giving Derek too hard of a time, because I've not read up on his other posts. but my guess is that this editorial post was meant to kick up controversy and "pick a fight." in that he has succeeded. but in providing real criticism or insightful analysis of SOA's "problems," he has failed - largely because he has only criticized web services, and only web services development from a Microsoft perspective.</div>
Greetings
How nice to be invited in here. Here's my WS comment for the day:
In the raging war between microsoft and massachussets, I hear a lot about XML being an "open enough" standard to provide the interop benefits sought by the commonwealth. This, in my opinion, is a case of trying to buzzword a problem away. So any WS afficionados who are all excited about MS Office XML being the default format for Office 12/Vista, take note:
(disclaimer: I don't pretend to know nearly as much about this as many others do)
-MS XML can contain binary objects that depend on MS Office and Windows.
Which is a pretty uncomfortable fact, w/r/t the Whole Point of webservices, viz: "to exchange data over computer networks like the Internet in a manner similar to inter-process communication on a single computer" (src). That is to say, if Office really wraps up your doc in well-formed XML, it's great 'cause you'll get some sort of response back from any WS that asks about it.
But if the response is -- more or less -- "There's no telling what's in here", then I don't see the big fat advantage. So before we all celebrate the use of XML in Office 12, maybe look closely at how it is used. In my opinion, it's mostly used to keep trendy.
(Yes, if you haven't figured it out I'm the resident raving anti-microsofty here at WS-Comments. Future posts will be more on-topic, though. I promise.)