|
|
|||||||||||||||||||||||||
John Reynolds's BlogCommunity: Jini ArchivesObjects are Nouns... Services are Verbs... SOA hinges on designing the right VerbsPosted by johnreynolds on May 25, 2006 at 08:53 AM | Permalink | Comments (14)I still find postings that express confusion about the relationship between object-oriented architectures and service-oriented architectures... so I would again like to offer my own $0.02 worth of insight... Objects are Nouns; Services are Verbs That's it. That's all there is to it.
In an object-oriented architecture, the software components are primarily organized as entities (things) that are to be manipulated. These entities generally have relationships to other entities, and that leads to the emphasis on design artifacts such as UML class diagrams. In a service-oriented architecture, the software components are primarily organized as tasks (actions) that are to be performed. These tasks are generally designed to function as steps in more complex processes, and that leads to the emphasis on design artifacts such as BPMN diagrams. Businesses use software to automate business processes. Business processes do involve Nouns (Objects), but they are generally more concerned with Verbs (Services). Let me explain: Most businesses process forms of one sort or another. In general, manipulation of the form (an object) is not the primary concern of the business; the primary concern of the business is to perform a set of tasks (services) based on the contents of the form. If the software components are packaged as distinct services, the mapping between the business requirement to "process the form" and the software implementation of the process is relatively straight forward. This clean mapping between requirements and implementation results in solutions that can better respond to changing requirements over time (Trust me, all business requirements change over time). Sun's Tim Bray has recently expressed his opinion that the term "SOA" is meaningless, and that he prefers the term "Web-style". With respect to Tim, I disagree with his opinion. I do not agree with Tim that "Web-style" is a better term than "SOA". I agree with Tim that the term SOA has:"become damaged, weakened by over hype, over use, over promise (and) under deliver", but unlike Tim, I think that I can "explain what the difference is between SOA and Web services". Web services are a protocol specific form of service. To implement an SOA you must eventually pick a protocol, but it needed be a Web oriented protocol. Tim asks for "an explanation that's meaningful in terms a programmer can understand, so a programmer can go and build one of these things". Perhaps it is my own arrogance or naivete, but I think my explanation is a darn good start. In my experiences with many developers, I have found that explaining how to design and build SOA solutions is not any more difficult or "verbose" than it was to explain how to design and build Object-Oriented solutions. I confess that I do resort to "paragraphs and paragraphs (of) prose", but everyone who knows me understands that I always resort to paragraphs and paragraphs of prose ;-) But if Tim is right, and the term SOA has become a dead alabatross, then I'd like to offer an alternative to "Web-style": How about Process Oriented Architecture? Kind of has a nice ring to it; Don't you think? Regardless of the acronym or term that we use to describe it, the point remains the same: If your primary task is to automate a business process, then you should package (most of) your software components as verbs... er, I mean services. (cross-posted at Thoughtful Programmer) SOA/ESB Level SetPosted by johnreynolds on January 10, 2006 at 07:03 PM | Permalink | Comments (4)Building on my SOA Elevator Speech, I have created a set of level setting diagrams for discussing the use of an Enterprise Service Bus.
I think that this is a fairly good "level set" to start from before discussing the "real" issues that come up when choosing an ESB or when developing applications on top of one.
Please let me know what else you think I should add...
Big dreams on the longest night of the year...Posted by johnreynolds on December 20, 2005 at 04:58 PM | Permalink | Comments (5)December 21st is the winter solstice, the longest night of the year in the northern hemisphere. What better time to dream sweet visions for the future?
The past year has seen a lot of progress in enterprise computing. At the beginning of this year I was writing an "elevator speech" on Service Oriented Architecture to introduce the concepts to my IT colleagues: "This talk will be far more evangelical than technical, and I hope that it will de-mystify SOA for some. I'm sure many of you will say "Duh!" when you read some of the points, but you'd be surprised how many folks just don't get it (yet). "Today, at the end of the same year, everybody "gets it" and SOA is the "mainstream no-brainer paradigm dejour". The discussion has shifted from "What's SOA?" to "Which Enterprise Service Bus (ESB) should we adopt?". The other big story of 2005 has to be AJAX (Adaptive Javascript and XML). I first blogged about AJAX in March after witnessing an amazing demo by Dion and Ben. I was wowed by the possibilities, but haunted by: "memories of pre-custom tag JSP pages... a little puddle of HTML markup embedded in an ocean of Java code (only this time it's JavaScript)"My fears were unfounded. In a few short months, most of the major frameworks have retooled for AJAX and a whole new generation of AJAX frameworks and tools are on the way. AJAX and Service Oriented Architectures are fond remembrances of the recent past... What about dreams for the future? David Gelernter said the following during an interview for the Sun Developer Network: "Huge numbers of "non-technical" people rely on computers not because they want to but because they have to. The great author and culture-critic George Orwell noted 60-odd years ago (and I noted in Mirror Worlds) that some people like playing with machines; some people don't. People who don't are just barely hanging on today. They need something far simpler, far more powerful than they've got today" I think that SOA and AJAX are catalysts for the "far simpler future" that most people need. At first glance, you may not see the linkage, but take another look. Web Services are what makes AJAX sexy. AJAX is what makes Web Services accessible to the masses.Take a look at some of the incredibly cool things that Jon Udell and others have accomplished using AJAX hacks and Google's Web Services. As the SOA mindset takes hold, we should see an explosion of web services. As the AJAX toolsets mature, it should become incredibly simple for "power users" to craft tailored solutions from the new bounty of web services. Throw in improvements in service orchestration and choreography (BPEL for People anyone?), and I think we'll see a new generation of Renaissance Artist/Programmers. In a recent interview, Bill Buxton offered the following scenario: "The interesting thing is if you can throw a cell phone on a passenger seat, the phone rings, and the phone says to the stereo, "There's a call coming in. Can you turn the music down and can I borrow the speakers? And by the way, can I use the microphone embedded in the steering column?" Now you can just talk hands-free."Such a future would be great, but it will be greater if it isn't "hard coded" by manufacturers. The better future is one where the "Renaissance power user" is free to wire the services together as they see fit. In Bill's example, the stereo provides an "audio output" service, the the microphone provide a "voice input" service, and the phone provides several communication and choreography services. The key is to help the "Renaissance power user" discover these services and then to help wire the services together on-the-fly. The pieces of the puzzle exist, the challenge is to make it easier to put them together. The languages, tools, and devices that deliver this kind of power to the new Renaissance men and women are what I plan to dream of tonight...
Pleasant dreams indeed ;-)
| |||||||||||||||||||||||||
|
|