<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>Enterprise Architecture</title><link>http://hinchcliffe.org/category/2.aspx</link><description>Enterprise Architecture</description><managingEditor>Dion Hinchcliffe</managingEditor><dc:language>en-US</dc:language><generator>.Text Version 0.95.2004.102</generator><item><dc:creator>Dion Hinchcliffe</dc:creator><title>Can We REST For A Minute? 6 Lessons From The CRUD vs. Hypermedia Debates</title><link>http://hinchcliffe.org/archive/2009/08/06/17119.aspx</link><pubDate>Thu, 06 Aug 2009 12:31:00 GMT</pubDate><guid>http://hinchcliffe.org/archive/2009/08/06/17119.aspx</guid><wfw:comment>http://hinchcliffe.org/comments/17119.aspx</wfw:comment><comments>http://hinchcliffe.org/archive/2009/08/06/17119.aspx#Feedback</comments><slash:comments>57</slash:comments><wfw:commentRss>http://hinchcliffe.org/comments/commentRss/17119.aspx</wfw:commentRss><trackback:ping>http://hinchcliffe.org/services/trackbacks/17119.aspx</trackback:ping><description>&lt;p&gt;Recently &lt;a href="http://www.infoq.com/news/2009/07/CRUDREST"&gt;InfoQ did a good summary&lt;/a&gt; of the debates around the apparent (to some) limitations of &lt;a title="" href="http://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm" &gt;REST&lt;/a&gt; when it comes to creating good Web services.  At issue is that REST APIs seem to expose "CRUDy" services that fly in the face of years of good services design, particularly when they are just read/write interfaces instead of the richer, full REST architecture (more on what this is later.)  The discussion was spurred by Arnon Rotem-Gal-Oz's assertion recently that &lt;a href="http://dobbscodetalk.com/index.php?option=com_myblog&amp;show=CRUD-is-bad-for-REST.html&amp;Itemid=29"&gt;CRUD is bad for REST&lt;/a&gt;, which in my opinion is close but not quite right.&lt;/p&gt;

&lt;p&gt;In my view there appears to be two primary ways that REST are used today. One is via the aforementioned CRUD approach (where CRUD = Create, Read, Update, Delete) and HTTP's verbs (which in the same order as CRUD are POST, GET, PUT, DELETE) are used to manipulate a data resource on a Web server.  This is the most basic, most common way REST is used by application designers (sometime even using these to replicate traditional RPC) and is the foundational request/response model in REST services.  Unfortunately, it's also probably the least interesting or powerful way to apply the full REST architectural style.&lt;/p&gt;  

&lt;p&gt;For one thing, using only CRUD to manipulate data treats resources as loose, unintelligent bags of bits, seems too fine grained, and generally feels like client/server in a cheap disguise.  Sure, it works extremely well with the protocol that runs the Web, HTTP, but no architect would consider this story so far good enough reason by itself to bend an entire application design around it.  Things get much more interesting, however, when URIs start getting added to the mix.  This happens in one of two ways and, depending on how URIs are applied, it's the key to the whole REST &lt;a href="http://en.wikipedia.org/wiki/Hypertext"&gt;hypertext&lt;/a&gt; approach (aka HATEOAS, or "&lt;em&gt;hypermedia as the engine of application state&lt;/em&gt;") which has worked so well on the Web for content.  And now, with REST, we're doing it with data.&lt;/p&gt;
&lt;br/&gt;
&lt;h1&gt;Data as Hypertext: Deeply Linked URIs and URIs for State Transitions&lt;/h1&gt;

&lt;p&gt;First of all, like the Web itself, REST works better when the data itself links to URIs of other resources that contain a more complete representation of a given piece of data (a line item summary might link to the full line item resource, for example).  Deep linking, and not maintaining local copies of a representation is essential to prevent a variety of issues including data duplication and out-of-date copies.&lt;/p&gt;
&lt;p&gt;Second, the very essence of REST is to make the states of an application explicit and addressable by URIs. The current state of the application state machine is represented by the URI that the client just operated on and the state representation that was returned. The client can change state simply by operating on the URI of the state it wants to move into, making that the new current state. A given state's full representation includes the links (arcs in the URI graph) to the other valid states that that can be reached from the present state.  So in the visual below, we show a simple but complete interaction model that includes a single valid state transition. In short, as even Roy Fielding himself recently emphasized last year, &lt;a href="http://roy.gbiv.com/untangled/2008/rest-apis-must-be-hypertext-driven"&gt;REST APIs must be hypertext driven&lt;/a&gt;.&lt;/p&gt;
&lt;p style="text-align:center"&gt;&lt;a href="http://hinchcliffe.org/img/rest_state_model_hypermedia.png"&gt;&lt;img border="0" alt="REST State Model for Data as Hypermedia" title="REST State Model for Data as Hypermedia" src="http://hinchcliffe.org/img/rest_state_model_hypermedia_small.png"/&gt;&lt;/a&gt;&lt;br/&gt;&lt;strong&gt;Click To Enlarge&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The scenario above shows a complete and I hope canonical (albeit simple) interaction model that exhibits the full RESTful properties.  The individual numbered steps of this scenario are described below:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Step 1: &lt;/strong&gt;To use a well-designed REST API, only a single well-known URI needs to be published by the creator and referred to by the client.  From this top level resource, all the resources and state transitions for the entire API and all its services can be found.  A REST API is self-descriptive and therefore self-contained, with only minimal "out-of-band" documentation required.  A simple HTTP GET at this URI will retrieve the API entry point.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Step 2: &lt;/strong&gt;The API is examined and a service known as FooService is found, along with the URI for the entry point to the FooService API.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Step 3: &lt;/strong&gt;The resource list for FooService is retrieved via GET.  The URI came from the top-level API description examined in the previous step.  In this example, a list of fooitems is retrieved, including possible state transitions.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Step 4: &lt;/strong&gt;There is only one state transition, "reverse".  This operation is chosen to be used in this scenario.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Step 5: &lt;/strong&gt;A PUT (which means the resource will be modified) is issued to the URI described by the original resource.  A back-end component (business logic) then reverses the name element of the resource (changing the state of the resource).  A copy of the modified resource is also returned by the operation, making the operation efficient as well.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Step 6: &lt;/strong&gt;Although a copy of the resource was returned from the state transition, the change is durable but we do another GET, this time just on the resource to see what the current state is.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Step 7: &lt;/strong&gt;The state of the resource is examined and found to be changed by the state transition operation.&lt;/p&gt;
&lt;br/&gt;
&lt;h1&gt;Lessons learned from the CRUD vs. Hypermedia debate&lt;/h1&gt;
&lt;p&gt;So, I think one of the biggest problems with REST is that there is no canonical description for how to use it.  This is also one of its core strengths.  There are many ways to apply REST to the problem at hand, and if all you need is CRUD, you are still doing basic REST and meeting your needs.  No single description could do justice to the power and flexibility inherent in the model and &lt;a href="http://www.intertwingly.net/blog/2008/10/21/Progressive-Disclosure"&gt;I agree strongly with Sam Ruby&lt;/a&gt; that "REST isn’t an all or nothing proposition. One can get significant value from partial adoption."&lt;/p&gt;
&lt;p&gt;But this discussion does highlight some very specific lessons learned that many REST practitioners don't often follow but are important to consider carefully in order to build services that are resilient, adaptable, and maintainable over the long term.  Many of the benefits of REST aren't felt until later when you want to fix or change things. That you can do so easily is a testament to the potency of architecture of the Web, if only we can understand it clearly enough.&lt;/p&gt;
&lt;p&gt;Here are my takeaways on what most REST adopters can and should do to get the most from their use of this increasingly popular architectural style:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Describe your REST API via a single, well-known, top-level resource at a permanent, public URI.&lt;/strong&gt; This resource contains descriptions and URIs of all the services (by type) that are maintained by the REST API.  This provides maximum flexibility for changes down the road since well-written client code will process the changes as normal operation and not require specific alteration for many kinds of modifications to the API.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Use business logic behind the server CRUD, return HTTP errors as appropriate.&lt;/strong&gt; This one isn't as well known as it should be but REST services do not have to be dumb repositories of resources.  They can do as much validation or processing as required for all POST, PUT operations.  Don't accept data blindly from clients and return HTTP errors that make sense and describe the problem.  Does this violate the self-describing aspect of REST interfaces? Not necessarily, the server imposes the valid state transition on the client and this is just another means of doing so.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Never hard-wire URIs into the client, always assume the resource will provide the current URI to related data as well as valid state transitions.&lt;/strong&gt; Good REST interfaces will be easy to maintain for the server, but clients can take shortcuts, either to improve performance or to simply coding.  Don't do this, just dereference URIs every time and you'll pick up and use modifications to the interface largely automatically and with no code changes.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CRUD isn't the only way to change a REST resource, invoking a state transition's URI can modify data implicitly.&lt;/strong&gt; This is where REST can become very elegant and provide a self-describing interface and state model for changing data.  Designing state models aren't what Web developers are particularly familiar with but it's a potent programming model that encourages good discipline and works for most types of applications.  You can use CRUD where state transitions just don't make sense.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Versioning is best done outside of URIs.&lt;/strong&gt; Version all day long but don't hardcode it into the URIs themselves.  This can easily be done with content negotiation.  You can also read &lt;a href="http://theamazingrando.com/blog/?p=107"&gt;Paul Sadauskas great explanation&lt;/a&gt; of how to do this this well.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The art of describing state transitions is still very much an art, study the latest conventions.&lt;/strong&gt; There seems to be little consensus on how state transition URIs should be documented.  Does one use the &lt;em&gt;href&lt;/em&gt; tag or the &lt;em&gt;uri&lt;/em&gt; tag? How does the resource convey exactly what the transition does in terms of altering state.  This and other questions are all relatively unanswered still, though they are fairly obvious to those that examine a given REST resource.  There is more consensus, for example, on how to pass parameters into state transitions or operations such as searches and queries.  This is where &lt;a href="http://bitworking.org/projects/URI-Templates/"&gt;URL Templates&lt;/a&gt; have made some headway and it's important to study them.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;I've frequently described REST as a foundational element of &lt;a href="http://hinchcliffe.org/archive/2009/06/06/16901.aspx"&gt;Web-Oriented Architecture&lt;/a&gt; for both enterprise and Web applications and &lt;a href="http://blogs.zdnet.com/Hinchcliffe/?p=650"&gt;open data in particular&lt;/a&gt;.  It's been thrilling to see REST become so popular in recent years, even if we have a long way to go yet to reach a wide understanding of what it is and how to use it.  I hope these ideas are helpful and I'd love to hear your additions below.&lt;/p&gt;&lt;img src ="http://hinchcliffe.org/aggbug/17119.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Dion Hinchcliffe</dc:creator><title>10 Must-Know Topics For Software Architects In 2009</title><link>http://hinchcliffe.org/archive/2009/03/17/16712.aspx</link><pubDate>Tue, 17 Mar 2009 16:15:00 GMT</pubDate><guid>http://hinchcliffe.org/archive/2009/03/17/16712.aspx</guid><wfw:comment>http://hinchcliffe.org/comments/16712.aspx</wfw:comment><comments>http://hinchcliffe.org/archive/2009/03/17/16712.aspx#Feedback</comments><slash:comments>286</slash:comments><wfw:commentRss>http://hinchcliffe.org/comments/commentRss/16712.aspx</wfw:commentRss><trackback:ping>http://hinchcliffe.org/services/trackbacks/16712.aspx</trackback:ping><description>&lt;p&gt;&lt;img alt="Software Architecture in 2009" title="Software Architecture in 2009" align="right" style="padding-left:5px;" src="http://hinchcliffe.org/img/software_architecture_2009.png"/&gt;In the last year or so, after quite a lull, the software architecture business has gotten rather exciting again.  We're finally seeing major new topics emerging into the early mainstream that are potential game-changers, while at the same time a few innovations that have been hovering in the margins of the industry are starting to break out in a big way. &lt;/p&gt;
&lt;p&gt;The big changes: The hegemony of traditional &lt;a href="http://en.wikipedia.org/wiki/Multitier_architecture"&gt;3 and 4-tier application models&lt;/a&gt;, heavyweight run-time platforms, and classical service-oriented architecture that has dominated for about a decade is now literally being torn asunder by a raft of new approaches for designing and architecting applications.&lt;/p&gt;
&lt;p&gt;These might sound like incautious words but major changes are in the air and architects are reaching out for new solutions as they encounter novel new challenges in the field.  As a consequence, these new advances either address increasingly well-understood shortcomings of existing approaches or add new capabilities that we haven't generally focused on before but are becoming increasingly important.  A few examples of the latter include creating reusable platforms out of applications from the outset (the &lt;a href="http://blogs.zdnet.com/Hinchcliffe/?p=215"&gt;open API story&lt;/a&gt;) or cost-effectively creating architectures that can instantly support global distribution, hundreds of terabytes of data, and tens of millions of users.  There are others that we'll explore throughout this post.&lt;/p&gt;
&lt;p&gt;These innovations are hallmarks particularly of the largest systems being built today (which are running into unique challenges due to scale, performance, or feature set) though these software advances are also moving across the spectrum of software from everyday corporate systems and Internet applications to new mobile devices and beyond, such as the emerging space of social networking applications.&lt;/p&gt;
&lt;p&gt;Mainstays of application architecture such as the relational database model, monolithic run-times, and even deterministic behavior are being challenged by &lt;em&gt;non-relational systems&lt;/em&gt;, &lt;em&gt;cloud computing&lt;/em&gt;, and new &lt;em&gt;pull-based systems&lt;/em&gt; where consistency and even data integrity sometimes take a backseat to uptime and performance.&lt;/p&gt;
&lt;/p&gt;Let's also not forget about Web 2.0 approaches and design patterns which are becoming ever more established in online applications and enterprise architecture both.  &lt;em&gt;Social architectures&lt;/em&gt;, &lt;em&gt;crowdsourcing&lt;/em&gt;, and &lt;em&gt;open supply chains&lt;/em&gt; are becoming the norm in the latest software systems faster than expected in many cases.  Unfortunately, as a result, the architectural expertise needed to effectively leverage these ideas is often far from abundant.&lt;/p&gt;
&lt;p&gt;To try to get a handle on what's happening and to explore these emerging topics, I've been doing conference talks lately about the transformation of software architecture that we're beginning to see in so many quarters these days and generally finding consensus that the exciting days of architecture are back, if they ever left.  Now it's up to us to begin the lengthy process of taking many of these ideas into our organizations and integrating them into our thought processes and architectural frameworks and bringing them to bear to solve problems and provide value.  As one software architect came up and asked me recently, "&lt;em&gt;How do I get my organization to understand what's happening out there?&lt;/em&gt;"  This is an attempt at addressing that question.&lt;/p&gt;
&lt;p&gt;Here's a list of the most important new areas that software architects should be conversant in and looking at in 2009:&lt;/p&gt;
&lt;h2&gt;10 Must-Know Topics for Software Architects in 2009&lt;/h2&gt;
&lt;ol&gt;
  &lt;li&gt;&lt;strong&gt;Cloud Computing.&lt;/strong&gt; This one is easy to cite given the amount of attention we're seeing in the blogosphere and at conferences, never mind the (considerable) number of actual users of popular cloud services such as &lt;a href="http://aws.amazon.com/ec2/"&gt;Amazon EC2&lt;/a&gt;.  While the term doesn't have an exact definition, it covers the gamut of utility hosting to &lt;a href="http://www.flickr.com/photos/dionh/2604129489/"&gt;Platform-as-a-service (PaaS)&lt;/a&gt;.  I've &lt;a href="http://blogs.zdnet.com/Hinchcliffe/?p=191"&gt;covered cloud computing on ZDNet&lt;/a&gt; &lt;a href="http://blogs.zdnet.com/Hinchcliffe/?p=194"&gt;in detail before&lt;/a&gt; and &lt;a href="http://blogs.zdnet.com/Hinchcliffe/?p=261"&gt;broken down the vendor space&lt;/a&gt; recently as well.  While the economics of cloud computing can be extremely compelling and there is undoubtedly a model that will fit your particular needs, cloud computing is also ground zero for the next generation of the famous OS platform wars.  Walk carefully and prototype often to get early competency in an architectural advance that will almost certainly change a great deal about the software business in the near future.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Non-relational databases. &lt;/strong&gt; Tony Bain over at Read/Write Web recently asked "&lt;a href="http://www.readwriteweb.com/archives/is_the_relational_database_doomed.php"&gt;Is The Relational Database Doomed?&lt;/a&gt;"  While it's far too soon to declare the demise of the workhorse relational database that's the bedrock of so many application stacks, there a large number of promising alternatives emerging. Why get rid of the traditional relational database?  Certain application designs can greatly benefit from the advantages of document or resource-centric storage approaches.  Performance in particular can be much higher with non-relational databases; there are often surprisingly low ceilings to the scale of relational databases, even with clustering and grid computing.  And then there is &lt;a href="http://hinchcliffe.org/archive/2005/09/22/2233.aspx"&gt;abstraction impedance&lt;/a&gt;, which not only can create a lot more overhead when programming but also hurts run-time performance by maintaining several different representations of the data at one time during a service request.  Promising non-relational solutions include &lt;a href="http://couchdb.apache.org/"&gt;CouchDB&lt;/a&gt;, which I'm starting to see in more and more products, as well as &lt;a href="http://aws.amazon.com/simpledb/"&gt;Amazon SimpleDB&lt;/a&gt;, &lt;a href="https://launchpad.net/drizzle"&gt;Drizzle&lt;/a&gt; (from the MySql folks), &lt;a href="http://www.mongodb.org"&gt;Mongo&lt;/a&gt;, and &lt;a href="http://code.google.com/p/scalaris/"&gt;Scalaris&lt;/a&gt;.  While many applications will continue to get along just fine with relational databases and object-relational mapping, this is the first time that mainstream database alternatives are readily available for those that are increasingly in need of them.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Next-generation distributed computing.&lt;/strong&gt; An &lt;a href="http://www.nytimes.com/2009/03/17/technology/business-computing/17cloud.html"&gt;excellent story today in the New York Times&lt;/a&gt; about &lt;a href="http://hadoop.com/"&gt;Hadoop&lt;/a&gt; provides a good backdrop on this subject: New distributed computing models are moving from the lab and becoming indispensable for providing otherwise difficult to harness computing power when connected to previously unthinkable quantities of data.  While traditional request-response models that are the mainstay of network-oriented computing are important, so increasingly are effective ways to process the huge amount of data that are now common in modern software systems.  Watch this &lt;a href="http://developer.yahoo.net/blogs/hadoop/2009/03/using_hadoop_to_fight_spam_-_part_1.html"&gt;video interview with Mark Risher and Jay Pujara&lt;/a&gt; at Yahoo that discusses how Hadoop "&lt;em&gt;enables them to slice through billions of messages to isolate patterns and identify spammers. They can now create new queries and get results within minutes, for problems that took hours or were considered impossible with their previous approach.&lt;/em&gt;" While Hadoop has considerable momentum, other similar offerings include the commercial &lt;a href="http://www.gridgain.com/"&gt;GridGain&lt;/a&gt; and open source &lt;a href="http://discoproject.org"&gt;Disco&lt;/a&gt; and there are many others.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Web-Oriented Architecture (WOA). &lt;/strong&gt; &lt;img alt="WOA Application Stack" title="WOA Application Stack" style="padding-left:5px;" border="0" align="right" src="http://hinchcliffe.org/img/woa_app_stack.png"/&gt;I've discussed Web-Oriented Architecture on this blog now for several years and my most &lt;a href="http://hinchcliffe.org/archive/2008/02/27/16617.aspx"&gt;complete write-up is here&lt;/a&gt;.  In short, the premise is that RESTful architectures (and the architecture stack above and around it including data representation, security, integration, composition, and distribution) are a more natural, productive, and effective way to build increasingly open and federated network-based applications.  The &lt;a href="http://blogs.zdnet.com/service-oriented/?p=1169"&gt;WOA debate&lt;/a&gt; has raged for a while now since it became a hot topic last year but the largest network on the world has cast its vote and WOA is the way that the Web is going by and large; WOA-based applications just align better to the way the network itself inherently works.  In my opinion, it is a much better way to create service-oriented architecture for almost all requirements, resulting in more supple and resilient software that is less difficult and expensive to build and maintain.  For enterprises considering the move to WOA, here is &lt;a href="http://blogs.zdnet.com/Hinchcliffe/?p=168"&gt;good overview I did a short while back&lt;/a&gt; about the issues and the evolution of SOA.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Mashups. &lt;/strong&gt;  David Linthicum &lt;a href="http://weblog.infoworld.com/realworldsoa/archives/2009/03/why_did_mashups.html?source=rss"&gt;wondered today in Infoworld&lt;/a&gt; where the &lt;a href="http://blogs.zdnet.com/Hinchcliffe/?p=81"&gt;mashups&lt;/a&gt; have gone, clarifying that he believed they had become integral to SOA and for delivering value in enterprise architecture.  In reality, while mashups are extremely common in the consumer space, to the point that it's just an every day application development activity, the tools and concepts are just now ready for prime-time in business.  I've previously called mashups one of the &lt;a href="http://blogs.zdnet.com/Hinchcliffe/?p=106"&gt;next major new application development models&lt;/a&gt; and that's just what's happened.  Mashups were also prominent in my &lt;a href="http://blogs.zdnet.com/Hinchcliffe/?p=221"&gt;Enterprise Web 2.0 Predictions for 2009&lt;/a&gt; (item #7).  If you're not studying mashup techniques, Michael Ogrinz's &lt;a href="http://www.mashuppatterns.com/"&gt;Mashup Patterns&lt;/a&gt; is an excellent place to start studying how they impact software architecture .&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Open Supply Chains via APIs. &lt;/strong&gt;  I find the term &lt;em&gt;open APIs&lt;/em&gt;, which an increasing &lt;a href="http://web2.socialcomputingjournal.com/the_growth_of_open_apis_more_evidence_that_web_services_dri.htm"&gt;body of evidence&lt;/a&gt; shows are an extremely powerful model for cross-organization SOAs, to be confusing to the layperson so I've begun calling them "&lt;em&gt;open supply chains&lt;/em&gt;."  Opening up your business in a scalable, cost-effective manner as a platform for partners to build up on is one of the most powerful business models of the 21st century.  However, there seems to be a large divide between native-Web DNA companies and traditional organizations in understanding how important this is (it's increasingly mandatory in order to compete online).  All evidence so far points to this as one of the most important, though potentially difficult, things to get right in your architecture.  Security, governance, scalability, and ease-of-consumption are all major subject areas and our enterprise architetures and SOAs must be ready for this business strategy as more and more organizations open up. Here's my recent &lt;a href="http://blogs.zdnet.com/Hinchcliffe/?p=215"&gt;"state of the union"&lt;/a&gt; on open APIs.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Dynamic Languages. &lt;/strong&gt;  Though dynamic languages have been popular on the Web since Javascript and Perl first arrived on the scene, it's only been recently that it's become acceptable to develop "real" software with them.  .NET and &lt;a title="Java" href="http://java.sun.com" &gt;Java&lt;/a&gt; are still extremely compelling (and common) platforms for writing and running application code but it's dynamic languages like Ruby, Python, PHP, and now &lt;a href="http://erlang.org/"&gt;Erlang&lt;/a&gt; that are getting all the attention these days.  Why is this? As I explored in a &lt;a href="http://hinchcliffe.org/archive/2008/01/10/16613.aspx#issues_and_motivations"&gt;detailed comparison&lt;/a&gt; a while back, a trade-off in run-time performance has generally been found to enable a large boost in productivity by virtue of what this lets dynamic languages accomplish.  It also doesn't hurt that a lot of work has gone into newer dynamic languages to make them extremely Web-friendly, which is now one of the most common use cases for any programming language.  Dynamic languages have architectural trade-offs of course, like any technology, though increasingly frameworks like &lt;a href="http://rubyonrails.org"&gt;Rails&lt;/a&gt;, &lt;a href="hhtp://cakephp.org"&gt;CakePHP&lt;/a&gt;, and &lt;a href="http://grails.org/"&gt;Grails&lt;/a&gt; are built on top of them which bring the latest best practices and design patterns, something that is not happening as frequently with older platforms.  The tipping point has arrived however, and dynamic languages are beginning to take the center stage in a significant percentage of new projects.  Software architects should be prepared.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Social computing. &lt;/strong&gt;Developers and software architects are often uncomfortable with &lt;a href="http://web2.socialcomputingmagazine.com/the_webpowered_control_shift_social_computing.htm"&gt;social computing&lt;/a&gt; aspect of software systems today but &lt;a href="http://en.wikipedia.org/wiki/Reed%27s_law"&gt;Reed's Law&lt;/a&gt; has unequivocally demonstrated that the value of social systems is generally much higher than non-social systems.  Or you could just look at the many popular applications out there that are driven by their social behavior and derive their (often enormous) value from the participation it entails.  Whether this is YouTube, Facebook, Twitter, or thousands of other social applications (business and consumer both), the lesson is clear: Social architecture is an important new layer in the application stack and it I've since made it two entire quadrants &lt;a href="http://blogs.zdnet.com/Hinchcliffe/?p=130"&gt;of my view of Web 2.0 in the enterprise&lt;/a&gt; as a consequence.  A List Apart has a great introduction to &lt;a href="http://www.alistapart.com/articles/theelementsofsocialarchitecture"&gt;The Elements of Social Architecture&lt;/a&gt; and I've identified some of the core patterns for this in my Enterprise 2.0 mnemonic, &lt;a href="http://blogs.zdnet.com/Hinchcliffe/?p=186"&gt;FLATNESSES&lt;/a&gt;. Fnding a high-value place for social computing in our enterprise architectures will be essential for modern software efforts.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Crowdsourcing and peer production architectures. &lt;/strong&gt;  Increasingly, the public network (the Web) has been used to enable potent &lt;a href="http://blogs.zdnet.com/Hinchcliffe/?p=218"&gt;open business models&lt;/a&gt; that are beginning to change the way we run our businesses and institutions.  This started with open source software and has since moved to media and is now encroaching on a wide variety of industries.  The models for doing this online require software architectures that can support this including architectural models for harnessing collective intelligence, moderating it, aggregating it, and protecting it and the users that provide it.  As I wrote a couple of months ago in &lt;a href="http://web2.socialcomputingjournal.com/50_essential_strategies_for_creating_a_successful_web_20_pr.htm"&gt;50 Essential Strategies for Creating a Successful Web 2.0 Product&lt;/a&gt;, these architectures of participation create most of the value in the software systems that employ them.  If you're not sure this is a software architecture issue, just look at Amazon's &lt;a href="http://mturk.com"&gt;Mechanical Turk&lt;/a&gt; or &lt;a href="http://www.crowdsound.com"&gt;CrowdSound&lt;/a&gt;, that latter which is a widget that allows even end-users to dynamically include crowdsourcing into their applications.  You can also read John Tropea's &lt;a href="http://libraryclips.blogsome.com/2009/03/15/crowdsource-as-a-way-to-create-a-community/"&gt;new exploration of this topic&lt;/a&gt; for an application layer viewpoint.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;New Application Models. &lt;/strong&gt;  The Semantic Web seems to be on the rise again and I've already covered Platform-as-a-service and mashups here, but in addition to these we are seeing entirely new application models cropping up in scale online.  Whether these are Facebook applications, next-generation mobile apps (iPhone, Android, RIM, etc), OpenSocial or just the increasing prevalence of widgets and gadgets, the trend in the atomization of software (which was done still perhaps the best and most effectively so far in Unix) is reminding us that we still have new discoveries ahead of us. While these often seem trivial, aka applications as a feature, it's also increasingly clear that these are going to be here to stay and can provide considerable point value when they're designed correctly.  Certainly for next-generation intranets and portals as well as the online "desktop", micro-applications which have to contend both with scale and with being useful and secure while embedded in other applications is increasingly on the radar.  Know how they work, why they are so popular (there are tens upon tens of thousands of Facebook and &lt;a href="http://web2.socialcomputingmagazine.com/the_6_essential_things_you_need_to_know_about_googles_opens.htm"&gt;OpenSocial applications&lt;/a&gt; alone) and learn how they can be used to provide real utility and every day value.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;em&gt;Any list of what is new and important in software architecture must be personal perspective so I invite you to add your own below in comments.&lt;/em&gt;&lt;/p&gt;&lt;img src ="http://hinchcliffe.org/aggbug/16712.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Dion Hinchcliffe</dc:creator><title>A Discussion with David Linthicum About Web-Oriented Architecture and SOA</title><link>http://hinchcliffe.org/archive/2008/11/18/16692.aspx</link><pubDate>Tue, 18 Nov 2008 17:22:00 GMT</pubDate><guid>http://hinchcliffe.org/archive/2008/11/18/16692.aspx</guid><wfw:comment>http://hinchcliffe.org/comments/16692.aspx</wfw:comment><comments>http://hinchcliffe.org/archive/2008/11/18/16692.aspx#Feedback</comments><slash:comments>17</slash:comments><wfw:commentRss>http://hinchcliffe.org/comments/commentRss/16692.aspx</wfw:commentRss><trackback:ping>http://hinchcliffe.org/services/trackbacks/16692.aspx</trackback:ping><description>&lt;p&gt;&lt;img align="right" style="padding-left:5px" title="David Linthicum and Dion HInchcliffe"  alt="David Linthicum and Dion HInchcliffe" src="http://hinchcliffe.org/img/david_linthicum_dion_hinchcliffe.jpg"/&gt;I recently had the privilege of being on David Linthicum's excellent &lt;a href="http://weblog.infoworld.com/realworldsoa/archives/podcast/"&gt;Real World SOA podcast&lt;/a&gt; show on Infoworld to talk about &lt;a href="http://hinchcliffe.org/archive/2008/09/08/16676.aspx"&gt;Web-Oriented Architecture (WOA)&lt;/a&gt;, a topic that readers here know I've been exploring for a while now.  David's one of the most respected names in enterprise architecture and SOA and so I enjoyed the opportunity &lt;a href="http://weblog.infoworld.com/realworldsoa/archives/2008/09/dion_hinchcliff.html"&gt;to discuss with him&lt;/a&gt; what's happening to SOA as it meets the Web and begins to evolve in new and interesting directions.  We had a lively conversation that covered the gamut from innovation and enterprise mashups to open Web APIs and cloud computing.&lt;/p&gt;
&lt;p&gt;A full transcript with links is provided lower down in this post.  You can also listen to it interactively with the Web widget below, or you can download the the &lt;a href="http://hinchcliffeandcompany.com/podcasts/Linthicum_Hinchcliffe_IFW_SOA_09-08-08.mp3"&gt;entire mp3 file&lt;/a&gt; of the Real World SOA Podcast episode on WOA. &lt;strong&gt;&lt;/p&gt;
&lt;p&gt;Note:&lt;/strong&gt; I created this transcript from the mp3 file using the terrific &lt;a href="http://castingwords.com/"&gt;CastingWords service&lt;/a&gt; which is a WOA application that offers its transcription service by building on top of Amazon's innovative &lt;a href="http://mturk.com"&gt;Mechanical Turk API.&lt;/a&gt;&lt;/p&gt;
&lt;p style="text-align:center;"&gt;
	&lt;object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" width="210" height="25" id="mp3playerdarksmallv3" align="middle"&gt;
	&lt;param name="allowScriptAccess" value="sameDomain" /&gt;
	&lt;param name="movie" value="http://www.podbean.com/podcast-audio-video-blog-player/mp3playerdarksmallv3.swf?audioPath=http://hinchcliffeandcompany.com/podcasts/Linthicum_Hinchcliffe_IFW_SOA_09-08-08.mp3&amp;autoStart=no" /&gt;
	&lt;param name="quality" value="high" /&gt;&lt;param name="bgcolor" value="#ffffff" /&gt;&lt;param name="wmode" value="transparent" /&gt;
	&lt;embed src="http://www.podbean.com/podcast-audio-video-blog-player/mp3playerdarksmallv3.swf?audioPath=http://hinchcliffeandcompany.com/podcasts/Linthicum_Hinchcliffe_IFW_SOA_09-08-08.mp3&amp;autoStart=no" quality="high"  width="210" height="25" name="mp3playerdarksmallv3" align="middle" allowScriptAccess="sameDomain" wmode="transparent" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" /&gt;&lt;/embed&gt;
	&lt;/object&gt;
	&lt;br /&gt;&lt;a style="font-family: arial, helvetica, sans-serif; font-size: 11px; font-weight: normal; padding-left: 41px; color: #2DA274; text-decoration: none; border-bottom: none;" href="http://www.podbean.com"&gt;Powered by Podbean.com&lt;/a&gt;

	&lt;/p&gt;
&lt;h2&gt;David Linthicum and Dion Hinchcliffe discuss WOA in September, 2008&lt;/h2&gt;
 &lt;br/&gt;&lt;div class="speaker_1_text"&gt;
  &lt;strong&gt;Male Announcer:&lt;/strong&gt;
      From the offices of InfoWorld, this is the SOA Report with David Linthicum. Covering everything that you need to know about service oriented architecture trends and strategies.
  &lt;/div&gt;
 &lt;br/&gt;&lt;div class="speaker_2_text"&gt;
  &lt;strong &gt;David Linthicum:&lt;/strong&gt;
      Hey guys, it's September 8, 2008, this is the 'Service Oriented Architecture Report' and my name is Dave Linthicum. Our topic today, my conversation with Dion Hinchcliffe about Web oriented architecture.&lt;br/&gt;&lt;br/&gt;[music]&lt;br/&gt;&lt;br/&gt;Now lets hear from a sponsor.
  &lt;/div&gt;
 &lt;br/&gt;&lt;div class="speaker_3_text"&gt;
  &lt;strong&gt;Female Announcer:&lt;/strong&gt;
      Whatever integration challenges your company faces BEA has a solution to match your needs. No need to change to match our solution, we support your choice. No agendas, integration your way.&lt;br/&gt;&lt;br/&gt;To learn more about business integration go to &lt;a href="http://bea.com/businessintegration" &gt;bea.com/businessintegration&lt;/a&gt; and download the white paper, 'Business Integration and SOA, a Revolution in Business Agility'&lt;br/&gt;&lt;br/&gt;BEA, delivering business innovation, real customers, real transformation, real results.
  &lt;/div&gt;
 &lt;br/&gt;&lt;div class="speaker_4_text"&gt;
  &lt;strong&gt;David:&lt;/strong&gt;
      Welcome back to the Service Oriented Architecture Report podcast. My name is Dave Linthicum.&lt;br/&gt;&lt;br/&gt;I've got a treat for you this week. I went ahead and bit the bullet and brought in a guest, and did an interview. And this time, my friend and counterpart, and we've been blogging back and forth for about two years on the whole global SOA and the emerging Web oriented architecture space, and that's Dion Hinchcliffe.&lt;br/&gt;&lt;br/&gt;Dion's a Web 2.0 blogger over at &lt;a href="http://blogs.zdnet.com/Hinchcliffe"&gt;ZDNet&lt;/a&gt; and has a very successful consulting organization called &lt;a href="http://hinchcliffeandcompany.com"&gt;Hinchcliffe and Company&lt;/a&gt;. Dion and I got together and decided to spend some time and pontificate around this issue of Web-Oriented Architecture, which is all that and a bag of chips on the blogosphere right now.&lt;br/&gt;&lt;br/&gt;So anyway, here's my conversation with Dion, and I'll catch you on the other side.
  &lt;/div&gt;
 &lt;br/&gt;&lt;div class="speaker_4_text"&gt;
  &lt;strong &gt;David:&lt;/strong&gt;
      Dion, why don't you tell the listeners a bit about what you do and a bit about your firm and what you guys are working on currently.
  &lt;/div&gt;
 &lt;br/&gt;&lt;div class="speaker_5_text"&gt;
  &lt;strong &gt;Dion Hinchcliffe:&lt;/strong&gt;
      Sure thing. Thanks Dave for having me on again.&lt;br/&gt;&lt;br/&gt;I operate Hinchcliffe and Company as President and CTO. We are a Web 2.0 and SOA transformation firm. So we really can work with Fortune 500 companies and really look at the ways that technology is evolving in the 21st century and how to deeply embed that into their business and transfer the way that they deliver their products and services. And SOA, of course, has one of the top level organizing principals as a key part of that story.&lt;br/&gt;&lt;br/&gt;I also blog for ZDNet, the &lt;a href="http://web2.socialcomputingmagazine.com"&gt;Social Computing Magazine&lt;/a&gt;, and a few other places and operate &lt;a href="http://web20university.com"&gt;Web 2.0 University&lt;/a&gt; as well. Which, we kind of help people understand all the things that are happening out there. There are a lot of new ideas, new concepts, business models, and ways that we have to embrace the marketplace and delivering value to our business. That's kind of where I come from.
  &lt;/div&gt;
 &lt;br/&gt;&lt;div class="speaker_4_text"&gt;
  &lt;strong&gt;David:&lt;/strong&gt;
      Yeah, Dion and I first started sharing ideas a while ago, around extending service oriented architecture into the realm of the emerging Web. And this was something that was very new and cool at the time. And now its being embraced a little bit more and people are starting to figure out exactly where the value is and how their enterprise systems can work and play well with systems that are out there on the Internet and bring these services and bring this value into the enterprise.&lt;br/&gt;&lt;br/&gt;And also, start taking enterprise systems that have been around for years, and enterprise processes that have been around for years, and even new processes, and starting to outsource them into this area of cloud computing. Or the ability to kind of put out a lot of the business processes, a lot of the information processes and kind of outsource it onto remotely hosted systems that are ultimately going to be a lot more agile and a lot more inexpensive to run.&lt;br/&gt;&lt;br/&gt;So what is your research showing in that area Dion, around the whole cloud computing area and how that's changing the dynamics of enterprise architecture going forward?
  &lt;/div&gt;
 &lt;br/&gt;&lt;div class="speaker_6_text"&gt;
  &lt;strong&gt;Dion:&lt;/strong&gt;
      Well, you probably know I had this concept a while back called &lt;a href="http://web2.socialcomputingmagazine.com/is_web_20_the_global_soa.htm"&gt;Global SOA&lt;/a&gt;, stating that the Web is the world's largest network. It was eventually going to become an enormous resource for any business, a system much larger than any enterprise today. And that we had to learn how to connect our businesses to that and leverage the value that's out there.&lt;br/&gt;&lt;br/&gt;Now, a few years ago there wasn't a lot of value out there that we could leverage in a SOA manner. The Web is primarily web pages. But, we've seen this larger transformation; SOA kind of went in one direction with interoperability and modular services. And, the Internet went another way with the same exact thing in terms of people wanting to connect their systems together.&lt;br/&gt;&lt;br/&gt;But, it was really a business imperative &lt;a href="http://blogs.zdnet.com/Hinchcliffe/?p=215"&gt;to begin offering API's a few years ago&lt;/a&gt;. And now, it's almost rare for the modern Web product to appear without a well defined set of interfaces that we would call SOA if it was in the enterprise. And, very popular sites like Twitter get 10 times their usage with the API than they do from the regular user interface.&lt;br/&gt;&lt;br/&gt;And this is the sort of thing that you would expect from a successful SOA in our enterprise. There's a lot of value being accrued from what we were building. One of the things that we've seen in our research, is that the web has kind of mapped out a way to... how to make these things very attractive, very consumable so that people want to use them, having valuable data and services.&lt;br/&gt;&lt;br/&gt;And of course, Amazon, Google, Yahoo, eBay and all the major web properties now have extensive API divisions, which are growing very rapidly. Amazon, actually, recently reported that their total global web traffic across all their sites have now been eclipsed by their API's. And then, has been exceeded since the beginning of the year until now, about three times their total global web traffic comes into their API and not their websites.&lt;br/&gt;&lt;br/&gt;That's an enormous return, and we would love to get those kinds of returns on our enterprises. So, that brings up this whole discussion around Web oriented architecture that kind of says, "Well, can we synthesize these fields?", because there was a lot of similar technology and similar goals, but different ways of going about it.
  &lt;/div&gt;
 &lt;br/&gt;&lt;div class="speaker_4_text"&gt;
  &lt;strong&gt;David:&lt;/strong&gt;
      Yeah, it seems like Web oriented architecture is a very descriptive term to describe notions and concepts that we've been talking about for years. But, the cool thing about Web oriented architecture, the way I see it now, is that now we have the mechanisms and we also have the beliefs within the enterprise that this is a viable future.&lt;br/&gt;&lt;br/&gt;This is a viable direction for their enterprise systems, the ability to take a lot of processes, and take a lot of services, and put them out on basically, the platform of the Web. And also, consume services and API's, as you mentioned, over the Web, into the enterprise. And basically, create this environment where the demarcation line between the enterprise and between the Web is starting to blur.&lt;br/&gt;&lt;br/&gt;And a lot of the critical enterprise systems are going to be out on the Web, Web deployed. They're going to be delivered via API's from the Web. A lot of existing enterprise systems are going to expose their value out to Web delivered applications and applications that exist out there on the platform of the Web.&lt;br/&gt;&lt;br/&gt;For example, platform to service, and software to service and even some of the enormous number of Web API's that are starting to emerge. And if you look at &lt;a href="http://programmableweb.com/" &gt;ProgrammableWeb.com&lt;/a&gt;, there are just hundreds of that that are being exposed. And I'm looking out there every week, and there's three or four that are showing up every day.&lt;br/&gt;&lt;br/&gt;So it's an exciting time, and the fact that we're basically moving our concepts and our architectures out to an area of understanding or a platform, that just has a lot of potential and a lot of excitement going forward. Interaction and integration of social networking and the ability to kind of join enterprises together and get to this whole real time economy that we were looking to get to. So that a sale that occurs within an enterprise is understood by a system thousands of miles away, they're connected via the Internet.&lt;br/&gt;&lt;br/&gt;It's just got to happen, and it's going to happen, in my opinion. And, it's going to take some good architectural forethought and some good visionaries within these enterprises to drive in that direction. What are your thoughts on that Dion?
  &lt;/div&gt;
 &lt;br/&gt;&lt;div class="speaker_6_text"&gt;
  &lt;strong&gt;Dion:&lt;/strong&gt;
      You mentioned the security issues, and that comes up a lot, especially when I'm talking to my clients and they're always concerned about information being transmitted over the Internet. And they're very concerned about, a lot of their core business processes actually existing outside of their firewalls.&lt;br/&gt;&lt;br/&gt;Either on a software as a service player, or now the whole emerging world of platforms as a service for actually building applications out there. And, building enterprise class applications out there where enterprise data is being bound to them. What kinds of things should they think about in terms of security as they start down this path?
  &lt;/div&gt;
 &lt;br/&gt;&lt;div class="speaker_4_text"&gt;
  &lt;strong&gt;David:&lt;/strong&gt;
      So the scenario that everyone wants to enable, but is then concerned about security is: what if you had your local SOA and you've got all these services out on the Web that you don't have equivalent functionality for? It would be great to create a single application or automated business process that could bring these together.&lt;br/&gt;&lt;br/&gt;And companies like Kapow, have great stories about how your SOA really isn't complete because you don't have all the data that you need to do your job. It's out there on the network. Understanding where that data flows inside the application and giving the credentials, the logging into a mash-up that has both inside outside services and saying, "I know where that data is going and I know its OK."&lt;br/&gt;&lt;br/&gt;That's the scenario that everybody is worried about. We want to do this, we want to bring these things together and get the value, but we don't want to risk the business.
  &lt;/div&gt;
 &lt;br/&gt;&lt;div class="speaker_6_text"&gt;
  &lt;strong&gt;Dion:&lt;/strong&gt;
      Did you look at &lt;a href="http://openajax.org"&gt;OpenAjax&lt;/a&gt;, the initiative? And, I'm not a big fan of large industry initiatives designed by committee teams who really dilute their value and over complicate the offerings. But things like &lt;a href="http://www-01.ibm.com/software/webservers/smash/"&gt;Smash&lt;/a&gt;, which is a part of OpenAjax, is designed to create internal lines of communications in the mashup that are secure and safe. Those are the kinds of answers that we're looking for.
  &lt;/div&gt;
 &lt;br/&gt;&lt;div class="speaker_4_text"&gt;
  &lt;strong&gt;David:&lt;/strong&gt;
      I got one as we finish up here Dion. What are three predications for 2009 in terms of the world of Web-oriented architecture that you think we are going to see? And, I'll give you three from myself, so give me your three first.
  &lt;/div&gt;
 &lt;br/&gt;&lt;div class="speaker_6_text"&gt;
  &lt;strong&gt;Dion:&lt;/strong&gt;
      Sure. I think one thing that we're going to see that's very, very interesting, and this is kind of the big idea of prediction, and that is the Semantic Web's coming back. We've seen this tremendous resurgence as we finally get some tools and we get a simpler approach.&lt;br/&gt;&lt;br/&gt;Very much like WOA, its radically simple [Dion: with microformats and the latest tools] and yet it scales to the size of the Internet. It built the Web, and that's why it's such an important topic. But semantic Web is going to come back and it's going to affect a lot of this because, of course, this is all delivered over those technologies. So we're going to see a lot of interest next year in that, I think.&lt;br/&gt;&lt;br/&gt;On top of that, I think we're going to see two things happening, and they're not going to be big radar until 2010, I think. But, one is a mash-up tools on the enterprise, matured to the point that almost anyone can build some level of functionality out of a SOA or Web oriented architecture. Composition is getting that easy, it's almost drag and drop. And, that, I think we're going to see the full maturity of the &lt;a href="http://blogs.zdnet.com/Hinchcliffe/?p=111"&gt;mashup tools&lt;/a&gt; to consume these things. And that's really how we get the value.&lt;br/&gt;&lt;br/&gt;And I think for my last prediction, I think we're going to see the BPM world, and that's business process management, and BPO orchestration on all of those things start to reconcile themselves with this to. And, saying they right idea but they might need a change in focus. And we're going to see a lot of announcements, I think. And tools are going to support WOA to enable these orchestrations and business process development scenarios.
  &lt;/div&gt;
 &lt;br/&gt;&lt;div class="speaker_4_text"&gt;
  &lt;strong&gt;David:&lt;/strong&gt;
      Yeah, I don't disagree with any of that, especially the Semantic Web. I've been a big advocate of the Semantic Web for a long time. I just couldn't get anybody to pay attention to it. But now, its seems to be starting to get some momentum again, which is great news.&lt;br/&gt;&lt;br/&gt;My three predictions for 2009 around the Web oriented architecture space is, number one, the absolute, just explosion in the Web API world. I think that everybody's realizing that it really doesn't take a lot of time and effort. It just takes some planning and just "go do it" to get your existing information and your processes Web API enabled.&lt;br/&gt;&lt;br/&gt;Whether its rest based services, or other types of API's. And, I just think that whole world is just going to blow up in 2009. I think that everybody's going to have an API. You are going to have huge API directories like they have in the programmable Web right now that are going to just explode.&lt;br/&gt;&lt;br/&gt;You are going to have directories that are going to be propagated down into enterprise repositories automatically, and products to do that. You are going to have the ability for these applications to go out and find these API's and the back end systems to do the automatic updating of the API's.&lt;br/&gt;&lt;br/&gt;You are going to have service oriented architecture governance principles, run time things, that are going to start to be more Web delivered around the notion of API's. And, I think, that whole world is just going to be all that in 2009 as people move from the Web as a visual paradigm to a non-visual paradigm as you mentioned in your summary.&lt;br/&gt;&lt;br/&gt;Next, I think the whole platform as a service space is going to explode as well. I think that the economies of scale and just the enabling technology will be there in 2009. So, the platform as a service offering from Google and things from &lt;a href="http://coghead.com"&gt;Coghead&lt;/a&gt; and things from &lt;a href="http://bungeelabs.com"&gt;Bungee Labs&lt;/a&gt; will start to just kind of take center stage in how people build and deploy enterprise applications.&lt;br/&gt;&lt;br/&gt;And, I think, we are going to see a lot of call for visionary architects who are able to take their existing architecture and start moving bits and pieces, as they can, out on the platform of the Internet and run them. And basically, run huge parts of the enterprise without these costly data centers and ultimately be able to shut a lot of these things down.&lt;br/&gt;&lt;br/&gt;Finally, I see that global BPM, this kind of goes to your point as well. I am just going to extend it a little bit, back in the days of Grand Central and back in the days of moving processes out to these shared environments, I think we are finally going to see some traction in that space. I think we are going to have SaaS delivered business process management systems and then I think we are going to have business process management systems within the enterprise.&lt;br/&gt;&lt;br/&gt;They are going to be able to link to these global enterprise systems. So, you have the private processes and the public processes, and the ability to link to both and automate supply chains. And, automate supply chains and automate the event-driven economy in between these various enterprises and businesses out there and in between various countries.&lt;br/&gt;&lt;br/&gt;And it just started moving to this global information exchange and global service exchange, which is going to take the automation on what we are doing today, quite frankly not very well, using very dysfunctional and static and fragile architectures, into something that is going to be globally managed, globally available. And, is going to operate at about a fraction of the cost of existing infrastructure today.
  &lt;/div&gt;
 &lt;br/&gt;&lt;div class="speaker_6_text"&gt;
  &lt;strong&gt;Dion:&lt;/strong&gt;
      I have to agree with all those predictions as well. And, it is really hard to say. I think it is really the business side that seems to be having the most trouble thinking about doing this and understanding the implications and what the risks are for all of us right now. And technology, as usual, is right now, just evolving so rapidly in the Web services and the SOA space that I think our challenge is really trying to embrace it and make something of it.&lt;br/&gt;&lt;br/&gt;I think companies that will be most successful over the next five years are going to be moving to these new business models. That's how, yeah very exciting time David and 2009 is just going to be big year for all of us.
  &lt;/div&gt;
 &lt;br/&gt;&lt;div class="speaker_4_text"&gt;
  &lt;strong&gt;David:&lt;/strong&gt;
      That's great. Well listen, my guest today is Dion Hinchcliffe and Dion was nice enough to spend his Sunday night recording with me on the podcast, and I appreciate his insights into the world of Web oriented architecture or service oriented architecture and especially the global service-oriented architecture, which is really kind of the next destination for this stuff.&lt;br/&gt;&lt;br/&gt;Well, I will talk to you guys in seven days and thank you very much.
  &lt;/div&gt;
 &lt;br/&gt;&lt;div class="speaker_6_text"&gt;
  &lt;strong&gt;Dion:&lt;/strong&gt;
      Great, thanks for having me David. Have a good night.
  &lt;/div&gt;
 &lt;br/&gt;&lt;div class="speaker_4_text"&gt;
  &lt;strong&gt;David:&lt;/strong&gt;
      Well, I hope you enjoyed the conversation with Dion, I sure did. Dion is doing some great research in the world of service oriented architecture now and meets the emerging lab and that is something we have talked about many times in this podcast. I hope to talk to Dion again at some point in the future and back in the podcast.&lt;br/&gt;&lt;br/&gt;Certainly read my blog at &lt;a href="http://infoworld.com/" &gt;Infoworld.com&lt;/a&gt; and you will see me reference Dion's work and you will see Dion reference my work, probably I am sure this podcast as well. Anyway, lots of stuff going on in the world of web oriented architecture as you heard in the conversation. I am going to monitor that area and keep reporting back to you in the blog and the podcast as to what's happening in emerging areas, new technology, new trends, new approaches, all that kind of stuff.&lt;br/&gt;&lt;br/&gt;I think, it is probably one of the most exciting times to be in computing over the next three years. I think, the whole game is changing in terms of how we are going to build and deploy enterprise architecture in systems. Well, who is going to have components that are going to exist within the firewall?&lt;br/&gt;&lt;br/&gt;I think, that's always been the case, but I do think there is opportunities to become much more efficient and much more agile using resources that we don't own or host, that don't live in our data center and happen to live out there in the world wide web.&lt;br/&gt;&lt;br/&gt;And by the way, it happens to be a fraction of the cost of doing things within the enterprise, and it also happens to be more sexier and more cooler and much more agile and much more cost effective. And that is a very exciting thing, if you look at what we have done in computing in the past and where we are going right now. I think a huge transition is going to occur in a very short period of time.&lt;br/&gt;&lt;br/&gt;Also a reminder, I am going to be doing the enterprise architecture virtual event, which will be held September 30 from 9:30 AM Eastern Time to six PM and my session will start at 10 AM on Eastern Standard Time. So, that is going to be a virtual event, and I am going to be virtually there. The agenda is on the website, you can find that at &lt;a href="http://virtualconferences.computerworld.com/enterprise_architecture/" &gt;Http://virtualconferences.computerworld.com/enterprise_architecture/&lt;/a&gt; and you can find the overview of my session in the event, and I hope you guys can make that.&lt;br/&gt;&lt;br/&gt;I think that is going to be a huge trend going forward, as people instead of hopping on airplanes, I don't know if you travel these days, but it is not fun, are going to attend conferences virtually and I am going to be a virtual speaker, so I am looking forward to that.&lt;br/&gt;&lt;br/&gt;OK guys, long podcast this week, but it was great to hear from Dion and always you can reach me, my email address &lt;a href="mailto:david@linthicumgroup.com" &gt;david@linthicumgroup.com&lt;/a&gt; and please make time to read my blog at &lt;a href="http://weblog.infoworld.com/realworldsoa/" &gt;Infoworld.com Real World SOA&lt;/a&gt;. And, don't forget, next week I am going to be speaking at the Service-Oriented Architecture Executive Forum that is going to be held in New York City and that is going to be the Infoworld event.&lt;br/&gt;&lt;br/&gt;I am doing the keynote I think on Tuesday, so make sure you make it up to New York City and come see me and come talk to me about what you are doing in the world of service oriented architecture. I always look forward to hearing from people who are actually practicing what they preach.&lt;br/&gt;&lt;br/&gt;All right guys, until next week best of luck in building your service oriented architectures. I will talk to you in seven days.
  &lt;/div&gt;
&lt;img src ="http://hinchcliffe.org/aggbug/16692.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Dion Hinchcliffe</dc:creator><title>The SOA world begins considering Web-Oriented Architecture (WOA) in earnest</title><link>http://hinchcliffe.org/archive/2008/09/08/16676.aspx</link><pubDate>Mon, 08 Sep 2008 12:25:00 GMT</pubDate><guid>http://hinchcliffe.org/archive/2008/09/08/16676.aspx</guid><wfw:comment>http://hinchcliffe.org/comments/16676.aspx</wfw:comment><comments>http://hinchcliffe.org/archive/2008/09/08/16676.aspx#Feedback</comments><slash:comments>83</slash:comments><wfw:commentRss>http://hinchcliffe.org/comments/commentRss/16676.aspx</wfw:commentRss><trackback:ping>http://hinchcliffe.org/services/trackbacks/16676.aspx</trackback:ping><description>&lt;p&gt;It's been an interesting few months in the enterprise architecture space as we look at where &lt;a href="http://en.wikipedia.org/wiki/Service-oriented_architecture"&gt;service-oriented architecture (SOA)&lt;/a&gt; is headed this year.  I wrote a &lt;a href="http://blogs.zdnet.com/Hinchcliffe/?p=168"&gt;detailed exploration of this on ZDNet&lt;/a&gt; last April and the discussion since then has only become deeper and more urgent.  Getting general consensus on a new acronym is always a difficult thing to get widespread traction on, much less a new architectural approach. I'm not personally caught up on what we call this next generation of lightweight, Web-aligned SOA either, but WOA is the best name I've seen so far.&lt;/p&gt;

&lt;p&gt;With the WOA discussion it's also been clear that the SOA industry -- vendors and practitioners alike -- are protecting their turf and looking a little skeptically at something that has the potential to change the center of gravity in the SOA business.  I think there is actually little threat here; most of the top-down activities that SOA initiatives have been putting in place, such as governance and cross-functional business architecture alignment, are just as appropriate -- if not more so --  when it comes to making WOA successful.  We'll talk a little bit more later about SOA products.&lt;/p&gt;

&lt;p&gt;And let's be clear here: WOA is a really a sub-style of SOA that is actually highly complimentary.   I personally believe we've collectively discovered that we've been spending the last few years on a course that just needs a healthy and appropriate re-adjustment, with the concepts in WOA helping us find a better way.&lt;/p&gt;

&lt;p style="text-align:center"&gt;&lt;a href="http://blogs.zdnet.com/Hinchcliffe/?p=213"&gt;&lt;img border="0" alt="Web-Oriented Architecture: Next-Generation, Lightweight, Web-Aligned SOA" title=="Web-Oriented Architecture: Next-Generation, Lightweight, Web-Aligned SOA" src="http://hinchcliffe.org/img/woa_next_gen_soa.jpg"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;WOA clearly offers a number of advantages to those doing traditional SOA today.  This includes considerably improved service consumption models that are less expensive and time consuming to use as well as unleashing the tremendous power of link architecture to drive information discovery, leverage, and analysis. The profound business implications of open APIs and &lt;a href="http://blogs.zdnet.com/Hinchcliffe/?p=191"&gt;cloud computing&lt;/a&gt; are growing clearer by the week.  WOA also provides an excellent on-ramp to access the many &lt;a href="http://web2.socialcomputingmagazine.com/building_modern_web_apps_better_a_have_deep_competency_in_w.htm"&gt;powerful new online product distribution models&lt;/a&gt; currently available today.  Distribution of SOA is a woefully neglected topic and WOA can bring an extensive set of techniques, from syndication to extraordinarily low-impedance Web services.&lt;/p&gt;

&lt;p&gt;For its own part, the term WOA itself goes well beyond the simple reconciliation of Web services technology from a &lt;a title="" href="http://www.w3.org/TR/soap/" &gt;SOAP&lt;/a&gt;-based model to one based on &lt;a title="" href="http://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm" &gt;REST&lt;/a&gt;.  For this very important reason, WOA is not synonymous with REST.  WOA encompasses all the architectural issues that are drive by the design of the World-Wide Web, an architecture, I will point out that has continued to refine itself including the &lt;a href="http://web2.socialcomputingmagazine.com/the_growth_of_open_apis_more_evidence_that_web_services_dri.htm"&gt;rise of open Web APIs&lt;/a&gt;), prepackaged service consumption mini-applications (aka &lt;a href="http://blogs.zdnet.com/Hinchcliffe/?p=80"&gt;widgets or gadgets&lt;/a&gt; in the Web world, the advent of JSON, browser-based &lt;a href="http://blogs.zdnet.com/Hinchcliffe/?p=174"&gt;mashups&lt;/a&gt;, the recent resurgence of the Semantic Web, and much more.  So, hopefully to put the &lt;a href="http://www.infoq.com/news/2008/06/whoa-woa"&gt;REST/ROA vs. WOA&lt;/a&gt; debate to bed; REST remains an absolutely core architectural element, but WOA by definition encompasses the full architecture of the Web today.&lt;/p&gt;

&lt;p&gt;The Web also clearly includes the browser and it's the browser itself that has driven many of recent innovations and trends in WOA, particularly mashups and the interest in JSON.  And when it comes to the enterprise space, the reason that WOA has become such a significant topic is for the reason I gave in my most recent sum-up of WOA:&lt;/p&gt;

&lt;blockquote&gt;&lt;em&gt;"It’s important to remember that no small system can sustain contact with a large system for very long without being fundamentally changed by it. This is what is happening with businesses (the small system, no matter how large) and the Web today (the big system.) The intrinsic nature of the Web is driving major changes in how we create network-based products and services and is inexorably turning us into Web-oriented businesses. Businesses that want to be successful on this network without understanding its fundamental nature and capabilities are only delaying the time it takes to reach the full potential the Web offers."&lt;/em&gt;&lt;/blockquote&gt;

&lt;p&gt;Unfortunately, technology always moves faster than businesses can adapt, and the situation hasn't gotten any better, quite the opposite.  Fortunately, the on-ramp to WOA for most organizations should be far less traumatic that many systemic shifts in the past, such as the one from structured systems to object-orientation.  Even more helpful for enterprises looking to start down the WOA route, many SOA products already offer support for core WOA capabilities -- especially around REST -- even though it's a far cry from what the potential could be.  The &lt;a href="http://blogs.zdnet.com/Hinchcliffe/?p=43"&gt;REST support in Java EE 5&lt;/a&gt; and &lt;a href="http://www.pluralsight.com/community/blogs/dbox/archive/2005/07/14/13352.aspx"&gt;Windows Communication Server&lt;/a&gt; (aka Indigo) are good examples.&lt;/p&gt;

&lt;p&gt;Here are just some the things possible for companies that open up their data and functionality in a WOA model:&lt;/p&gt;

&lt;h2&gt;Some Business Scenarios Possible with WOA&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Information in a SOA becomes crawlable, searchable, and discoverable.&lt;/strong&gt; The WOA model for information architecture is very different than traditional SOA.  A fully-formed WOA consists of enterprise data stored in millions of granular, deeply-linked network resources (XML, ATOM, text, images, documents, etc.) with addressable URLs.  Hence this full Web of data is visible on the network and crawlable. One of the most amazing implications of WOA is that information network-enabled in this way can be found via corporate search engine, &lt;em&gt;even if no application has yet been written to access the data in question.&lt;/em&gt;  This is also a key aspect of a distant cousin of WOA, &lt;a href="http://blogs.zdnet.com/Hinchcliffe/?p=143"&gt;Enterprise 2.0&lt;/a&gt; where leverage of existing, unexploited knowledge assets is one of the core benefits.  The resulting URLs can then be fed into mashups, dashboards, and any other application that can consume links, which is a large percentage these days.  Consequently, the information landscape fundamentally changes and is made much more consumable with WOA. The implications of this are hard to understate since search is one of the key capabilities that made the Web so successful. And yes, of course, there are also implications for security and multiple-levels of access. This will be where the value of IT comes in to resolve the issue in systematic, enterprise-wide manner.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Web widgets provide a new way to make SOA distributable and self-service.&lt;/strong&gt;  Users and developers can project information and functionality wherever they need it almost instantly using Web widgets, which are connected to the WOA resource landscape underneath them.  Ideal for portals, dashboards, and &lt;a href="http://blogs.zdnet.com/Hinchcliffe/?p=106"&gt;enterprise mashups&lt;/a&gt;, widgets have become a key building block on the Web and the enterprise are very behind.  Widgets are an important WOA story because they project consumption of Web resources via these small, portable applications.  Widgets are harder to develop on traditional SOA based on WS-I Basic Profile (SOAP, &lt;a title="" href="http://www.w3.org/TR/wsdl" &gt;WSDL&lt;/a&gt;, UDDI) because the browser can't directly process it without too much work.  The consumption barrier is too high with traditional SOA and very low with WOA.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Open APIs that expose WOAs directly to partners.&lt;/strong&gt;  Instead of having a handful of integration points with a few partners, open Web APIs are showing how Web-facing WOA can offer up enormous opportunities to let partners onboard themselves, help themselves to a selected set of data, and integrate into business processes.  This also puts the entire burden and cost of partner integration on the other end of the network, since the WOA is already developed, secure, and ready to use.  &lt;a href="http://blogs.zdnet.com/Hinchcliffe/?p=77"&gt;48% of CIOs said they wanted to open up their SOAs&lt;/a&gt; to trading partners last year and WOA is generally the best way to do that.&lt;/li&gt; 
&lt;li&gt;&lt;strong&gt;Enterprise mashups have the data they need to flourish.&lt;/strong&gt; Any SOA practitioner will tell you about the tipping-point problem.  This is how to get enough services so that you're interesting to the rest of the organization, and can actually solve their problems. These days it's getting easier and easier to WOA enable databases, data warehouses, and existing applications and making this happen is increasingly straightforward with a rapidly growing set of tools to do just that.  Good examples of WOA enablers include &lt;a href="http://solutions.mysql.com/solutions/item.php?id=741"&gt;MySql's xAware&lt;/a&gt; or &lt;a href="http://snaplogic.com"&gt;SnapLogic&lt;/a&gt; that can then be used to build applications using enterprise mashup platforms such as &lt;a href="http://jackbe.com"&gt;JackBe&lt;/a&gt;, &lt;a href="http://www.serena.com/Mashups/"&gt;Serena's Mashup Composer&lt;/a&gt;, IBM's highly anticipated &lt;a href="http://www-01.ibm.com/software/lotus/products/mashups/"&gt;Lotus Mashups&lt;/a&gt;, or even the reliable old &lt;a href="http://pipes.yahoo.com"&gt;Yahoo! Pipes&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Get users involved directly with SOA.&lt;/strong&gt;  One powerful strength of the Web is its ability to enable ordinary people to richly engage with networks such as the Internet.  This has worked extremely well with Web pages, but not with Web data, until recently.  The rapid growth in popularity of Web widgets, dashboards, start pages, &lt;a href="http://web2.socialcomputingmagazine.com/the_6_essential_things_you_need_to_know_about_googles_opens.htm"&gt;OpenSocial&lt;/a&gt;, Facebook apps, and other forms of portable, service-enabled application functionality has driven interest for the same things inside the enterprise.  While our enterprise platforms are busy catching up to this reality, users are ready to start engaging directly with WOA and composing feeds, lightweight services, widgets, and social applications into meaningful business solutions.  But only if we can keep up with what's happening and enable it.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I'll be the first to admit that most IT organizations would find many of the examples above somewhat distressing.  The shift in control, the increase in openness, the different way of thinking about architecture, the countless security issues and governance concerns will likely prevent movement to WOA at a rapid pace for many businesses.  However, I believe these scenarios offer too much competitive advantage for them not to be a major goal for IT organizations over the next 18-24 months.  Worker productivity, innovation, growth, and even marketshare are going to be directly driven soon by whether a company has an open API or not, whether WOA services are in place to unleash data to workers, and so on.&lt;/p&gt;

&lt;p&gt;Here are some other key statements from SOA practitioners and experts alike over the last few weeks:&lt;/p&gt;

&lt;p&gt;ZDNet's Joe McKendrick had this to say in "&lt;a href="http://blogs.zdnet.com/service-oriented/?p=1166"&gt;WOA wins hands down in a SOA popularity contest&lt;/a&gt;":&lt;/p&gt;

&lt;blockquote&gt;&lt;em&gt;"SOA may benefit from WOA (and Web 2.0 in general) because it enables business end users to see and experience online services via composite mashups and cloud computing. SOA could be sold as an internal cloud that provides online services inside the walls of the enterprise. In this regard, WOA makes SOA real to perplexed business users.  Plus, enterprise SOA implementations may function as islands of integration that will eventually be assimilated into a larger WOA, while still retaining boundaries."&lt;/em&gt;&lt;/blockquote&gt;

&lt;p&gt;Also be sure to catch Joe's new "&lt;a href="http://www.fastforwardblog.com/2008/09/04/everybody-loves-web-oriented-architecture/"&gt;Everyone Loves Web-Oriented Architecture&lt;/a&gt;" for an irreverent and informative look at WOA.  His comments from Steve Bjorg that WOA came before SOA are priceless.&lt;/p&gt;

&lt;p&gt;Joe also cited the Information Week article on WOA by Roger Smith titled "&lt;a href="http://www.informationweek.com/news/software/soa/showArticle.jhtml;jsessionid=VDRYN05D4RMMUQSNDLRSKHSCJUNN2JVN?articleID=209904293"&gt;A Simpler Approach to SOA&lt;/a&gt;", who reported:&lt;/p&gt; 

&lt;blockquote&gt;&lt;em&gt;"A growing number of companies are finding that lower-visibility Web-oriented architecture (WOA) developments, spawned through grassroots movements, are a better route to the service-oriented architecture. WOA, like SOA, is an architectural approach to system design, though WOA is resource-oriented rather than service-oriented. What's the difference? While the core SOA design unit is a reusable service that fulfills a distinct business function, resource-oriented services are more limited and data-focused."&lt;/em&gt;&lt;/blockquote&gt;

&lt;p&gt;Well-known SOA expert David Linthicum recently &lt;a href="http://weblog.infoworld.com/realworldsoa/archives/2008/08/woa_or_whatever.html"&gt;weighed in&lt;/a&gt; on Infoworld with:&lt;/p&gt;

&lt;blockquote&gt;&lt;em&gt;"What's attractive about WOA is the fact that it's just sexier and easier to understand than SOA. Moreover, it incorporates many new other cool buzzwords such as cloud computing and mashups. I think what's most attractive is that it represents the movement of critical and core business processes from the datacenter to the cloud. This trend will continue, but it's going to be a slow migration over time, with some very visible short term successes, typically around outsourced infrastructure such as the new array of infrastructure services offered by Amazon."&lt;/em&gt;&lt;/blockquote&gt;

&lt;p&gt;David and I discussed this latter point last night in an upcoming SOA Expert Podcast episode and we agree: The biggest story for WOA will probably be its cross-firewall implications for API divisions that monetize SOA and provide scalable, self-service trade partnering capabilities, though the inside of the business will be a big story too.  I'll update this post with a link as soon as that's out.&lt;/p&gt;

&lt;p&gt;So we'll see how WOA fares over the next few months, but regardless of the success of the term (I suspect it will stick), the ideas behind WOA are going to remake IT and business over the next few years and I'll continue to cover it here.  Please share your WOA thoughts in comments below.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Please read my popular &lt;a href="http://hinchcliffe.org/archive/2008/02/27/16617.aspx"&gt;What is WOA?&lt;/a&gt; article and &lt;a href="http://hinchcliffe.org/archive/2008/04/08/16627.aspx"&gt;12 Things You Need To Know About REST and WOA&lt;/a&gt; for a deeper examination of what WOA is and why it's often a better way to do SOA.&lt;/strong&gt;&lt;/p&gt;&lt;img src ="http://hinchcliffe.org/aggbug/16676.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Dion Hinchcliffe</dc:creator><title>12 Things You Should Know About REST and WOA</title><link>http://hinchcliffe.org/archive/2008/04/08/16627.aspx</link><pubDate>Tue, 08 Apr 2008 09:41:00 GMT</pubDate><guid>http://hinchcliffe.org/archive/2008/04/08/16627.aspx</guid><wfw:comment>http://hinchcliffe.org/comments/16627.aspx</wfw:comment><comments>http://hinchcliffe.org/archive/2008/04/08/16627.aspx#Feedback</comments><slash:comments>230</slash:comments><wfw:commentRss>http://hinchcliffe.org/comments/commentRss/16627.aspx</wfw:commentRss><trackback:ping>http://hinchcliffe.org/services/trackbacks/16627.aspx</trackback:ping><description>&lt;p&gt;There have been a number of interesting tracts written lately about that increasingly popular topic in the world of SOA and Web services: &lt;a title="" href="http://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm" &gt;REST&lt;/a&gt;.  In particular, the one that is circulating around social bookmarking sites and SOA blogs the most in the last month is Stefan Tilkov's excellent &lt;a href="http://www.infoq.com/articles/tilkov-rest-doubts"&gt;Addressing Doubts about REST&lt;/a&gt;.  The article tackles the continuing skepticism that SOA practioners have had about the integration approach that has become the dominant one on the Web and is now making significant inroads in the enterprise (more on my findings on enterprise adoption of REST here soon).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Key SOA Trend:&lt;/strong&gt; As of March 2008, leading industry analysts -- such as &lt;a href="http://apsblog.burtongroup.com/2008/03/looking-for-soa.html"&gt;Anne Thomas Manes&lt;/a&gt; -- &lt;a href="http://blogs.zdnet.com/service-oriented/?p=1075"&gt;are concluding that &lt;/a&gt; "SOA is not working in most organizations."&lt;/p&gt;
&lt;p&gt;Compellingly, Stefan goes far beyond the simple and often misleading &lt;a title="" href="http://www.w3.org/TR/soap/" &gt;SOAP&lt;/a&gt; vs. REST debates and makes a number of excellent points about the REST approach ranging from encapsulation and transaction boundaries to documentation and tool support.  But what struck me most is that these largely technical concerns, while very important, still don't strike directly to the heart of what makes REST, and &lt;a href="http://hinchcliffe.org/archive/2008/02/27/16617.aspx"&gt;Web-Oriented Architecture&lt;/a&gt; in general, so significant to the practice of effective large scale software integration and composition.  Specifically, the more I look at working examples of large scale SOA on the Web, the more I'm aware of the fundamentally different mindset and approach that are used by those that have an urgent business need to achieve deep levels of integration between many customers and trading partners.&lt;/p&gt;
&lt;p style="text-align:center;"&gt;&lt;img alt="Integration Models in Software - Structured, Object-Oriented, Service-Oriented (SOA), and Web-Oriented (WOA)" title="Integration Models in Software - Structured, Object-Oriented, Service-Oriented (SOA), and Web-Oriented (WOA)" src="http://hinchcliffe.org/img/integration-software-models.png"/&gt;&lt;/p&gt;
&lt;p&gt;So what are the big differences between traditional SOAP-based, top-down SOA and lightweight, bottom-up WOA?  In the end, it's as much architectural and philosophical as it is technical.  I'll also be clear and note that while successful large-scale SOA on the Web tends to favor REST, REST drives many of the concepts described below, rather than promoting them explicitly.  In other words, REST resides at the core of Web-Oriented Architecture, which in turn describes a set of related approaches for creating a robust and bustling network ecosystem of loosely cooperating entities that typically compete for consumption via "architecture of the fittest."  Here are some of the key things we've learned over the last half-decade that REST has been used widely to build WOAs:&lt;/p&gt;
&lt;h2&gt;12 Things You Should Know About REST and WOA&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;REST posits an interconnected information ecosystem, not an isolated set of point Web services.&lt;/strong&gt; REST services are (usually) XML resources that are deeply linked together using URIs (via connectors in REST parlance) into a tapestry thousands and thousands of other Web resources.  This is the model used by the Web itself, which uses the same model (thousand and thousands of HTML resources deeply linked with URLs).  The key concept here is that REST resources can be linked with other Web resources made by the same, or entirely different, providers.  If you build a REST Web service and publish it, it's highly likely that in a short while you'll be a referenced resource in another REST service.  While this sort of data transparency seems in direct opposition to widely cherished beliefs in the software development community around concepts like encapsulation and separation of implementation from interface (aka &lt;a href="http://en.wikipedia.org/wiki/Information_hiding"&gt;information hiding&lt;/a&gt;), it turns out that the "side effects" of this kind of transparent information architecture are many, varied, and usually highly desirable.  The Web has taught us that publicly visible deep links are enormously important to system architecture, even as important as the data itself, enabling vital scenarios like discovery, search, analytics, transparency, participation, increased consumption, high levels of scalability, and well, robust ecosystems of participating components that can openly consume (and sometimes operate) on this data.  As a final note, REST services can in fact still completely separate interface and implementation while at the same time prescribing a specific set of interaction scenarios.&lt;/li&gt;
&lt;li&gt;&lt;div style="
  border: solid 1px #000;
  background-color: #FAF8CC;
  margin-left: 10px;
  margin-top; 5px;
  width: 210px;
  font-size: 1.3em;
  padding-right: 5px; 
  padding-bottom: 10px;
  padding-left: 9px;
  padding-top: 5px;
  float: right;"&gt;&lt;em&gt;"...the interconnected galaxy of data itself is now the central construct that is consumed and operated upon by network components."&lt;/em&gt;
&lt;/div&gt;
&lt;strong&gt;A focus on &lt;em&gt;Design for Consumption&lt;/em&gt; instead of &lt;em&gt;Design for Integration&lt;/em&gt;.&lt;/strong&gt; While some SOA traditionalists might disagree, there is a tendency to focus excessively on the imaginary integration point, or seams, of an SOA using the traditional &lt;a href="http://en.wikipedia.org/wiki/WS-I_Basic_Profile"&gt;WS-I Basic Profile&lt;/a&gt; world and I've had long conversations in the SOA community about tools for schema conversion, data translation and mapping, and other complicated scenarios to make two endpoints talk effectively.  In this view, both sides of the conversation must have the same exact lens on how to approach the integration process, or agree to disagree.  I've called this the "tyranny of SOAP's mustUnderstand flag" and this, combined with the fact that you almost always had to have the same programming language and Web service toolkit at the exact same revisions on each side of the conversation, it results in practice in surprisingly low levels of practical interoperability.  Traditional SOA is designed, by intent, to diverge and fragment both because of the design of SOAP but also the proliferation of dozens of heavyweight WS-* standards that put a very heavy consumption tax on the conversation.  The XML Schemas (or XSD) used in &lt;a title="" href="http://www.w3.org/TR/wsdl" &gt;WSDL&lt;/a&gt; have also turned out to be a rather poor choice for meaningful descriptions of information that pass across integration points.  This is in sharp relief to the world of REST and WOA where extremely simple standards ensure that whatever programming language and toolkit is being used, as long as it can process simple HTTP and XML, can interoperate quickly and easily while referencing the services API documentation.  In other words, WOA enables integration between anything that can process the Web while SOA enables integration only between the (increasingly rarified) stacks standards and protocols that a given traditional Web service endpoint supports.  Thus REST posits a world of integrating entities containing an almost infinite diversity in participants that couple well and scale best because of extreme simplicity and very low barriers to consumption.  In contrast, there are only a handful of SOA toolkits that have the levels of sophistication to handle the fuller vision of heavyweight SOA, and unless you're using them, you can't come to their party.  Finally, another way to look at this is that REST is near the top of the &lt;a href="http://web2.socialcomputingmagazine.com/tolerance_and_experience_continuums.htm"&gt;tolerance continuum&lt;/a&gt; and thus will always be significantly more open, inclusive, and egalitarian from a consumption perspective.  If maximizing opportunities for integration is your goal, the right approach for you should be clear.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;REST security is egalitarian and is as secure as the Web itself.&lt;/strong&gt; Some theorists will raise the concern that using protocols such as HTTPS to secure REST is like using a single blunt instrument to solve a delicate and sophisticated set of problems.  In practice, the protocol that has successfully protected the majority of e-commerce transactions on the Web is good enough for most applications.  If different or more sophisticated means are needed, you can enable them as well, but it's clear that the large SOA practitioners on the Web are &lt;em&gt;not&lt;/em&gt; adopting standards like WS-Security.  For example, Amazon's popular &lt;a href="http://www.amazon.com/S3-AWS-home-page-Money/b/ref=sc_fe_l_2?ie=UTF8&amp;node=16427261&amp;no=3440661&amp;me=A36L942TSJ2AJA"&gt;S3 service&lt;/a&gt; uses simple, straightforward &lt;a href="http://www.ietf.org/rfc/rfc2104.txt"&gt;HMAC-SHA1 signatures&lt;/a&gt; to handle the authentication of each and every request to its REST API.  Balancing security with ease of consumption requires a careful tightrope walk when it comes to successful software integration and the security solutions for Web services being using on a large scale today are &lt;em&gt;not&lt;/em&gt; the ones we expected 5 years ago.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Service interaction directly by the client is a first class citizen in WOA.&lt;/strong&gt;  You might be reading this and thinking it's a no-brainer.  But client consumption is a surprisingly slippery subject in the world of traditional SOA.  For one thing, many SOA architects still refrain from thinking of the application client as a place where services are consumed directly, at least as a primary architectural concern.  The client in this view can be the browser, mobile device, native application, or whatever is being used.  However, the rise of rich user interfaces as well as the &lt;a href="http://blogs.zdnet.com/Hinchcliffe/?p=106"&gt;mashup software development model&lt;/a&gt; has driven the requirement for many Web services to be accessible directly from the client as a first order design concern.  However, this is where traditional SOA has had significant issues.  SOAP, the fundamental SOA protocol, does not have direct support in any of today's Web browsers making direct consumption problematic for even simple SOA services, and quite difficult for WS-* style services.  Even worse, the &lt;a href="http://hinchcliffe.org/archive/2007/12/23/16592.aspx"&gt;latest new rich Internet application platforms&lt;/a&gt; such as Adobe's Flex, which are have become true software development environments in their own right , often have surprisingly poor support even for such important standards as XML.  That's not to say that adapters, bridges, proxies, and other solutions can't be applied to existing SOAs to project them into the client erna.  But all of these bring their own architectural tradeoffs and needless (and expensive) complexity including more layers of data mapping, translation, and run-time performance.  Like other fundamental protocols such as RSS and ATOM, which are directly consumable by virtually all clients today, the very best SOAs make service consumption by the client a first class citizen and its services highly consumable in any rich Internet application, Web mashup, mobile device, or from wherever it needs to be accessed.  This is key aspect of WOA's Design for Consumption, like &lt;a href="http://en.wikipedia.org/wiki/Design_for_manufacturability"&gt;Design for Manufacturing&lt;/a&gt; did for a generation of engineering processes and directly enables many important new scenarios we are looking for in software integration and composition today.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Service contracts are simpler and suppler in a REST model.&lt;/strong&gt; Coming from a formal software engineering background, I myself was on the fence on whether the lack of a traditional interface contract actually inhibits the high volume consumption of REST services, which as we've discussed, is supposed to be one of its great strengths.  This is one area where traditional SOA appears strong on its face, using WSDL to describe and elaborate on the precise nature of the methods, structures and data types being passed back over the integration point.  While the topic of the &lt;a href="http://hinchcliffe.org/archive/2005/05/10/215.aspx"&gt;impedance between most programming languages and service contract formats&lt;/a&gt; is beyond the scope of this discussion, suffice to say that we've learned over time that WSDL generally encourages tools to be &lt;em&gt;far too finicky&lt;/em&gt; about a service contract and tends to create a brittleness that doesn't need to be there.  I've &lt;a href="http://hinchcliffe.org/archive/2006/08/05/8489.aspx"&gt;written about&lt;/a&gt; minimal surface area dependencies for Web services before and it turns out that the everyday pragmatic consumption of REST is just not hindered by lack of machine readable contracts.  For a variety of reasons, this tends to encourage a dependency on just the parts of the service begin used, and not the entire service.  While the formal computer science crowd will have concerns about building reliable systems on top of services that change over time and lack formalized, machine consumable contracts, the reality is that in an environment that increasingly seems to be heading for a much higher number of informal services produced by a much higher number of sources, the lack of formal contracts is increasingly a feature.  In fact, &lt;em&gt;contract by example&lt;/em&gt; is sufficient for most applications, although mature offerings meant for transactional use do tend to have a formal API description, just not always machine readable.  The early industry SOA assumption that most users of Web services would only consume them when aided by sophisticated tools has not been borne out on the Web.  In fact, the world of ad hoc integration via mashups has further shown this not to be an issue.  However, solutions such as WADL &lt;a href="http://www.infoq.com/news/2007/03/WADL"&gt;seem to be gaining currency&lt;/a&gt; when you absolutely need a contract for a REST service, though most developers I know using REST are more than content to just interact with the service itself or use a wrapper library that is provided by the service creator or the community that's grown around the SOA or API itself.&lt;br/&gt;&lt;br/&gt;&lt;a href="http://hinchcliffe.org/archive/2005/06/06/308.aspx"&gt;&lt;img border="0" alt="Checking a Web service contract before invocation" title="Checking a Web service contract before invocation" src="http://hinchcliffe.org/img/sim.jpg"/&gt;&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;&lt;div style="text-align:center;"&gt;&lt;strong&gt;Figure 1: All Web services and REST resources have a contract, implicit or explicit.&lt;/strong&gt;&lt;/div&gt;&lt;br/&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;REST strongly complements traditional SOA, if you must have it.&lt;/strong&gt;  Though increasingly, you don't have to have it.  REST generally has much better consumption scenarios, is faster, more reliable, and more likely to be usable by those on the other end of the network conversation.  Wrapping SOAP and other SOA-style services in REST is a workable solution, depending on what you're doing.  Heavyweight service-orientation is at the bottom of the tolerance continuum and can make sense of a specific set of requirements, but chances are that REST will give you most flexibility, options, and uptake.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;REST and WOA enables and does not violate the principles of service-orientation.&lt;/strong&gt; Thomas Erl, one of the leading SOA thinkers in the industry, has identified &lt;a href="http://www.soaprinciples.com/p3.asp"&gt;eight principles of service-orientation&lt;/a&gt; that are generally agnostic of the technology used to implement a SOA while directly supporting the reported benefits of a workable service-oriented approach including easier interoperability, high levels of reuse, more flexibility in design, and so on.  These principles include &lt;em&gt;abstraction&lt;/em&gt;, &lt;em&gt;loose-coupling&lt;/em&gt;, &lt;em&gt;service-contract&lt;/em&gt;, &lt;em&gt;reusability&lt;/em&gt;, &lt;em&gt;autonomy&lt;/em&gt;, &lt;em&gt;statelessness&lt;/em&gt;, &lt;em&gt;discoverability&lt;/em&gt;, and &lt;em&gt;composability&lt;/em&gt;.  All SOA implementations tend to comply with or violate these principles to a varying degree either intentionally or unintentionally depending on their requirements and other vagaries.  In this way, each SOA implementation has countless accumulated design decisions built into it that embody the architects', implementors', and vendors' net assumptions for the best way to realize the services that comprise that SOA.  REST and WOA bring their own unique emphasis around what important in a service landscape, but critically, these do not violate a single of the essential architectural principles of service-orientation and often enables them unique and powerful ways.  I'll explore these individually as I am able in upcoming posts since the statelessness and service-contract principles are very interesting areas for many SOA implementors to understand in a REST world.&lt;/li&gt;
&lt;li&gt;&lt;div style="
  border: solid 1px #000;
  background-color: #FAF8CC;
  margin-left: 10px;
  margin-right; 5px;
  margin-top; 5px;
  width: 210px;
  font-size: 1.3em;
  padding-top: 5px;
  padding-right: 5px; 
  padding-bottom: 10px;
  padding-left: 9px;
  float: right;"&gt;&lt;strong&gt;Industry Perspective&lt;/strong&gt;&lt;br/&gt;&lt;br/&gt;Enterprise IT and SOA experts David Linthicum and Dana Gardner have recently weighed in on WOA on both &lt;a href="http://weblog.infoworld.com/realworldsoa/archives/2008/04/woa_vs_soa.html"&gt;Infoworld&lt;/a&gt; and &lt;a href="http://blogs.zdnet.com/Gardner/?p=2631"&gt;ZDNet&lt;/a&gt;.
&lt;/div&gt;&lt;strong&gt;We have reached a possibly final state of deconstruction between data and function. &lt;/strong&gt;  I only say final since the Web is increasingly having the last word when it comes to the largest and most successful examples of just about any type of system you can describe and we don't see anything emerging beyond it.  And Web has an intrinsic model that is exerting a &lt;a href="http://web2.socialcomputingmagazine.com/hackingwebnetworkeffect.htm"&gt;network effect&lt;/a&gt; of its very own; if one builds something now that doesn't align closely with the grain of the Web then it will get largely sidelined until it is somehow woven into it.  In other words, build a Web service that's not Web-oriented and chances are good it will stagnate.  But build one that's Web-oriented and thousands of people will likely beat a path to your door (there are &lt;a href="http://web2.socialcomputingmagazine.com/running_an_online_business_profitably_in_the_web_20_era.htm"&gt;other success factors here of course&lt;/a&gt;, such as having best in class data).  But there's a very big discussion lurking here with the essential idea is that we've nearly come full circle from the days of object-orientation where objects were code that was very tightly coupled to the data it operated upon.  At the time, it was an architectural concept, not just for local information hiding.  We moved from there to distributed stateful objects, then distributed stateless objects, then components, network services, and many other models.  Services and code, however, tended to have the upper hand overall and mostly stood in front of the data or the database.  But we've undergone a thorough inversion of this model because of &lt;a href="http://web2.socialcomputingmagazine.com/the_web_20_zeitgeist_2006_edition.htm"&gt;the growth of Web architecture&lt;/a&gt; and the interconnected galaxy of data itself is now the central construct that is consumed and operated upon by network components (code running on servers and clients).  This is a very different worldview that we have had in most of the traditional software industry, but the Web itself has essentially trumped the conversation and provided us with what appears to be the most workable model yet for the architecture of highly federated systems and composite applications.  And this new lens is very Web-oriented.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;REST drives WOA but WOA extends beyond REST.&lt;/strong&gt;  I realize that WOA isn't a fully accepted industry term yet, but I do favorite it to terms like &lt;a href="http://alexbarnett.net/blog/archive/2006/11/04/REST-Web-Services-and-ROA.aspx"&gt;resource-oriented architecture (ROA)&lt;/a&gt;.  WOA does indeed start with REST but also encompasses and intentionally extends into other, closely related models for designing and distributing composite systems and services.  A good example is the rise of the Web widget as one of the newer and more interesting "component models" for enabling distribution and consumption of REST-based services.  The &lt;a href="http://code.google.com/apis/maps/"&gt;Google Maps widget&lt;/a&gt; is one pre-eminent example of how WOA goes well beyond simple REST and describes a complete and integrated "package" for a WOA capability that offers an open API via Javascript which provides deep access to remote Web services.  All this and it's also in a nice and clean browser-side API that even includes best-of-breed visual functionality.  In this architectural worldview, you take a much broader perspective on opening up and offering services that provides delivery all the way to the "last inch" and gives developers data and functionality in a format that allows an SOA to be consumed in the simplest and lowest barrier fashion.  The reward for Google has been one of the highest rates of uptake within 3rd party composite Web applications (aka mashups) of any API on the Web.  The SOA model here is infused with the latest open Web-based user interface approaches to the degree that even a default presentation reference model, ready for production, is included as part of the SDK.  That's as a complete, holistic, and pragmatic a view of SOA as you're likely to see since the most useful and productive consumption models in service interaction are emphasized while at the same time tightly aligning with the architectural and application model of the Web.  This is what WOA at its finest can represent.  Off the shelf WOA components like this are springing up and being used all over the Web (tens of thousands of them can be found on &lt;a href="http://widgetbox.com"&gt;Widgetbox&lt;/a&gt; and the &lt;a href="http://www.google.com/ig/directory?synd=open"&gt;Google Gadgets directory&lt;/a&gt;), but are very hard to find in a traditional SOA environment.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;REST is deeply infused into the fabric of the Web today.&lt;/strong&gt;  Not only is every single hosted Web page presently in existence already a read-only REST Web service (in REST parlance, transferring the representation of the state of the page via HTTP using the GET verb), but the latest and most influential Web standards, such as the highly regarded Atom Publishing Protocol, are inherently REST-based as well.  Thus the overwhelming majority of pure data Web services on the Web today are REST-based, particularly the several hundred million RSS endpoints that are currently live right now.  I've heard multiple times the story of how an enterprise switched from SOAP-based services to open syndication models for example, because many more tools support simple data pulls over HTTP, never mind the other advantages we've already seen above.  We are just not seeing that sort of organic uptake and pervasive adoption with traditional SOA technologies.  That is not only because of the aforementioned network effect but it also takes into account the very important lessons that we've learned from the Web.  And one paramount lesson, as we'll see, is not controlling the other side of the conversation, which is one the last big pieces of the WOA picture.  Which is....&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;REST enables an inversion of control that drives adoption and integration.&lt;/strong&gt;  This is somewhat similar to the &lt;a href="http://hinchcliffe.org/archive/2005/02/24/183.aspx"&gt;inversion of control&lt;/a&gt; we see in things like dependency injection, in that the more direct control we give up over the integration process, the most integration we get because we've enabled the scenarios for it out in the "cloud" of the network.  In a very similar way that the hyperlink itself -- and the URI in REST -- allows anyone external to the linked resource to connect information together, without a finger being lifted by the originating resource, the REST model allows what some call outside-in integration with the potential of almost entirely allowing integration to happen entirely external to the integrated system.  While you might be thinking that surely our SOA approaches up until now have enabled this, the practice has been creating an escalating stairway of barriers to hurdle:  You must process all protocols layered in the SOAP envelope to participate, you must have a contract in WSDL, there's a strong preference for information in XML, you should use the same programming language/platform as the service provider to avoid translation bugs, and so on.  These and many other requirements impose a great deal of unnecessary control on both sides of the conversation but particularly on the consumption side.  We seem to be learning that the very best models for integration impose as little control as possible.  REST informs us that we must have a common representation of state, but it could be XML, or JSON, or images, or video.  But beyond that, we are not constrained as long as the representation will fit over HTTP.  And in this way, control over integration is inverted to the consumer of the service, who can engage in a thousand new scenarios not possible when all the aforementioned constraints are made.  REST can set Web sites, businesses, applications, and every other silo you imagine as free as we know how to do it.  As simple as possible, but no simpler and thus the network can integrate itself and we can achieve the advantages of pull instead of push, fluidity instead of impedance, a bazaar of consumption instead of a cathedral of integration.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;REST and WOA can handle systems of arbitrary complexity and size.&lt;/strong&gt; The systems built today from Amazon's Web services and many others show that hundreds of thousands of customers can integrate effectively and operate simultaneous on the &lt;a href="http://web2.socialcomputingmagazine.com/is_web_20_the_global_soa.htm"&gt;Global SOA&lt;/a&gt; and run their businesses using REST and WOA.  This is the "my Web site is bigger than your enterprise" realization that is making enterprises look hard at what's actually working on the greater Web.  REST and WOA are not just ready for prime-time, they &lt;em&gt;are&lt;/em&gt; prime-time.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;There are literally dozens of models for building services to connect systems together.  However, HTTP is at the core of many of the more promising ones, including REST.  Here's &lt;a href="http://web2.socialcomputingmagazine.com/creating_open_service_apisthat_last_and_anyone_can_use.htm"&gt;an overview of the most common service models&lt;/a&gt; for SOA today.&lt;/strong&gt;&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;However, many readers of this article are doubtless still wondering if REST and WOA are really the end-all, be-all for service-oriented architectures.  For now, we're seeing it as one of the best available options despite a great deal of work yet to figure out how to apply it fully to the world of the enterprise.  Is it ideal for every single type of application and scenario?  Of course not. Your mileage will vary entirely depending on your requirements and your understanding of how REST deeply informs system architecture.  However, it's increasingly emerging on the short list for those integrating systems of even the very largest size and complexity as well as down to the simplest and most nimble application.  We've also learned a lot about the strengths and its weaknesses of this Web services model, however, as a fundamental part of the Web (since REST is nothing more than HTTP applied to data), REST along with WOA is the model that underpins many of the largest and most successful networks (and SOAs) in history.&lt;/p&gt;
&lt;p&gt;Finally, I'll be &lt;a href="https://www1.gotomeeting.com/register/773770787"&gt;delivering a complimentary Webinar&lt;/a&gt; on this subject matter next week, on Thursday, April 17th, to present the full scope of WOA and how it can be used to drive adoption, better business outcomes, and make SOA work in the enterprise.  I do hope you attend.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;What are your concerns? What do you think REST is capable or incapable of doing for your applications.  Please share your story below in comments.&lt;/em&gt;&lt;/p&gt;
&lt;p style="text-align:center;"&gt;&lt;a href="https://www1.gotomeeting.com/register/773770787"&gt;&lt;img border="0" src="http://hinchcliffe.org/img/soa_webinar_graphic_ad.png"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src ="http://hinchcliffe.org/aggbug/16627.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Dion Hinchcliffe</dc:creator><title>What Is WOA? It's The Future of Service-Oriented Architecture (SOA)</title><link>http://hinchcliffe.org/archive/2008/02/27/16617.aspx</link><pubDate>Wed, 27 Feb 2008 21:37:00 GMT</pubDate><guid>http://hinchcliffe.org/archive/2008/02/27/16617.aspx</guid><wfw:comment>http://hinchcliffe.org/comments/16617.aspx</wfw:comment><comments>http://hinchcliffe.org/archive/2008/02/27/16617.aspx#Feedback</comments><slash:comments>345</slash:comments><wfw:commentRss>http://hinchcliffe.org/comments/commentRss/16617.aspx</wfw:commentRss><trackback:ping>http://hinchcliffe.org/services/trackbacks/16617.aspx</trackback:ping><description>&lt;p&gt;The need for businesses to open up their silos of information and internal capabilities to their internal customers has become an &lt;a href="http://blogs.zdnet.com/Hinchcliffe/?p=77"&gt;increasingly pressing issue&lt;/a&gt; as organizations strive to increase operational efficiencies and innovate more effectively with existing resources in the business and technical climate of early 2008.  And in the last couple of years, as exposing uniquely powerful sets of data to online business partners has moved into the mainstream in the form of &lt;a href="http://hinchcliffe.org/archive/2008/01/10/16613.aspx"&gt;open Web APIs&lt;/a&gt;, opening up our IT systems across the Internet has become a competitive imperative as well.  Unfortunately, despite two decades of experiments in heavyweight software engineering (the alphabet soup of EAI, SOA, ESB) for solving these types integration problems, we've seen relatively marginal improvements for most implementors despite heavy investments by businesses large and small.  In short, integration between the systems running our business still isn't happening at the levels we need.  However in the last several years, promising developments from the Web are pointing a way to a better model that seems to overcome many of the adoption and effectiveness issues of traditional SOA and is gaining wider adoption yearly (&lt;em&gt;see sidebar below, right&lt;/em&gt;).&lt;p&gt;

&lt;p&gt;Most of us would agree that we still can't easily get access to the data and the systems we need to in order to get our daily work done.  Workers still spend a great deal of time copying and pasting data between their various applications, data is batched and then exported and imported between IT systems around the world millions of times per day, and information just isn't getting to the places that we want it to without unacceptable amounts of manual labor.  Even though &lt;a href="http://webservices.xml.com/lpt/a/1292"&gt;Service-Oriented Architecture (SOA)&lt;/a&gt; initiatives around the world have the right goals, most efforts have fallen profoundly short of our desired levels of integration and improved business agility.&lt;/p&gt;
&lt;p align="center"&gt;&lt;img src="http://hinchcliffe.org/img/woa_soa_visual.png" alt="WOA REST Web 2.0 SOA Convergence Visualization"/&gt;&lt;/p&gt;

&lt;p&gt;However, the news isn't all bad, the fascinating story is that there is a place today where the deep integration of our systems and information on a large scale has largely been solved and is a foregone conclusion in most cases.  And that place is at the leading-edge of the World-Wide Web, sometimes referred to as Web 2.0.  This success story has taken a while however and it's also managed to &lt;a href="http://blogs.zdnet.com/Hinchcliffe/?p=135"&gt;fly under the radar of most enterprise architects and IT vendors&lt;/a&gt; in the process.  The left-hand turn that Web services took early on in the Internet story (circa 1999-2000) with &lt;a title="" href="http://www.w3.org/TR/soap/" &gt;SOAP&lt;/a&gt;, &lt;a title="" href="http://www.w3.org/TR/wsdl" &gt;WSDL&lt;/a&gt;, UDDI, and WS-I Basic Profile turned out to be definitely &lt;em&gt;not&lt;/em&gt; the right answer for the vast majority of integration scenarios (we'll see why below), despite the continued prevalence of these approaches today in most enterprises.&lt;/p&gt;

&lt;p&gt;In contrast, the vast living laboratory of the Web has provided a singularly different answer, than has a fundamentally different focus though it remains a close cousin to traditional SOA.  This much more Web-oriented approach is something that many have called Web-Oriented Architecture (WOA) and is based on the immense tensile strength of the World Wide Web itself and its underlying architectural fundamentals.  And it's based on the basic concepts and rich outcomes that have made the Web far and away the largest open network on the planet as well as the &lt;a href="http://web2.socialcomputingmagazine.com/is_web_20_the_global_soa.htm"&gt;largest SOA presently in existence.&lt;/a&gt;  At the leading end of this is the &lt;a hef="http://web2.socialcomputingmagazine.com/the_web_20_mashup_ecosystem_ramps_up.htm"&gt;Web mashups story&lt;/a&gt; with &lt;a href="http://blogs.zdnet.com/Hinchcliffe/?p=106"&gt;enterprise mashups&lt;/a&gt; being one of the major improvements to the IT landscape that WOA is heralding.&lt;/p&gt;

&lt;p&gt;So to loosely paraphrase a famous line from history, I come to praise SOA, not to bury it.  In the process I hope to explain WOA as simply as I can.  This is still important because WOA just isn't standard fare yet for discussion in many IT circles while it's something that folks that build online services out on the globally scalable consumer Web increasingly take for granted.  There are few vendors (though growing) that have lined up behind this pragmatic, effective, efficient, and highly popular approach, further limiting the body of formal knowledge and support available to practitioners who want to transplant this profoundly useful and simple way of connecting our systems together.&lt;/p&gt;

&lt;p&gt;&lt;img style="padding-left: 11px;" align="right" src="http://blogs.zdnet.com/images/restwoa.jpg"/&gt;You may have noticed I've left &lt;em&gt;"easy"&lt;/em&gt; out of my lists of adjectives describing WOA.  And that's because I don't believe it's easy to set aside the last decade of evolving mindsets, habits, investments, tools, and skill sets for a better alternative, no matter how compelling or promising.  And WOA is more than just a way of building Web services, it's also an ecosystem mindset and as such can at times be less accessible to non-system thinkers, particularly if said alternative is not well documented in the industry.  And though significant headway has been made recently, particularly with an excellent spate of books such as Sum Ruby's superb &lt;a href="http://www.oreilly.com/catalog/9780596529260/"&gt;RESTful Web Services&lt;/a&gt;, the grassroots, emergent nature of WOA has not lent itself well to extensive formal documentation.  Despite the improvements in the available literature, I still find that a succinct, direct, and complete explanation of WOA is lacking and here's my attempt to boil it down to the essential principles.  I then contrast it with traditional SOA so that the differences and similarities are clearly highlighted.  Here's what I've come up with:&lt;/p&gt;

&lt;h2&gt;What is WOA? The Basic Tenets&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Information in a WOA is represented in the form of &lt;em&gt;resources&lt;/em&gt; on the network and are accessed and manipulated via the protocol specified in the URI, typically HTTP.&lt;/li&gt;
&lt;li&gt;Every resource on the network can located via a globally unique address known as a Universal Resource Identifier or URI complying with &lt;a href="http://tools.ietf.org/html/rfc3986"&gt;RFC 3986&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Resources are manipulated by HTTP verbs (GET, PUT, POST, DELETE) using a technique known as &lt;a href="http://en.wikipedia.org/wiki/Representational_State_Transfer"&gt;Representational State Transfer&lt;/a&gt; or &lt;a title="" href="http://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm" &gt;REST&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Manipulation of network resources is performed solely by &lt;em&gt;components&lt;/em&gt; on the network (essentially browsers and other Web servers).&lt;/li&gt;
&lt;li&gt;Access to resources must be layered and not require more than local knowledge of the network.&lt;/li&gt;
&lt;li&gt;It is the responsibility of the components to understand the representations and valid state transitions of the resources they manipulate.&lt;/li&gt;
&lt;li&gt;The &lt;a href="http://hinchcliffe.org/archive/2005/05/16/231.aspx"&gt;service contract&lt;/a&gt; of WOA resources is implicit; it's the representation that is received.&lt;/li&gt;
&lt;li&gt;WOA resources contain embedded URIs that build a larger network of granular representative state (i.e. order resources contain URLs to inventory resources).&lt;/li&gt;
&lt;li&gt;WOA embodies Thomas Erl's &lt;a href="http://hinchcliffe.org/archive/2005/08/27/1817.aspx"&gt;essential Principles of SOA&lt;/a&gt;, though in often unexpected ways (such as having a contract, albeit implicit).&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;WOA Implementation Guidelines&lt;/h2&gt;

&lt;p&gt;The basic tenets above paints a picture of a galaxy of nearly infinite granular information resources integrated into a deeply interconnected set of dynamic connections that can be processed individually for a given task, in part (for integrated applications), or as a whole (such as enabling a comprehensive directory or search engine of all data and metadata.)  In other words, the Web model provides a single, open, and unified information architecture that is consistent, easily consumed, extremely scalable, securable, very reusable, resilient, and highly federated.  The Web itself is the single largest example of this and increasingly, enterprises are adapting their existing IT systems and legacy silos to this model, discovering the advantages of this ecosystem model for information resources and enterprise architecture.&lt;/p&gt;

&lt;strong&gt;&lt;a href="http://web2.socialcomputingmagazine.com/a_timeless_way_of_building_software.htm"&gt;Read an exploration&lt;/a&gt; of why SOA and Web 2.0 both reflect two aspects of a "timeless way of building software".&lt;/strong&gt;

&lt;p&gt;But the basic tenets previous list are at the architectural level.  How does an SOA practitioner ensure they are implementing a WOA model as they build WOA Web services and resource-enable existing services and IT systems.  Here are the key guidelines to be aware of:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Every WOA resource should have the same unambiguously and globally unique URI on the local (SOA) network as well as the World Wide Web.&lt;/li&gt;
&lt;li&gt;In general, URIs should be descriptive of the resource to the extent possible.  For example, &lt;em&gt;http://domain.com/blogs/feeds/sruby.atom&lt;/em&gt; is strongly preferrable to &lt;em&gt;http://domain.com/resources/12345678&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;The type of resource representation (XHTML, XML, MP3, AVI, etc.) should be encoded in the URI itself.  Using the .xml extension at the end of a URI is a common convention, for example.&lt;/li&gt;
&lt;li&gt;A set of resources of a particular type should expose all known URIs in some manner (a WOA resource that provides granular, paged navigation for example) to enable linking, discovery, enumeration, browsing, and consumption in general.&lt;/li&gt;
&lt;li&gt;Query string parameters are generally not considered part of the URI possibly excepting resources that represent algorithmic or functional outputs. Move query strings to the URI whenever possible.&lt;/li&gt;
&lt;li&gt;Encourage URI self-reliance by limiting information that is communicated via HTTP headers when it can be moved to the URI.  The Web cannot propagate header information, but links can.&lt;/li&gt;
&lt;li&gt;Resources should link to related resources via embedded URIs instead of making local copies.  This is the core of the &lt;a href="http://en.wikipedia.org/wiki/Hypermedia"&gt;hypermedia&lt;/a&gt; concept that makes the Web and WOA provide its unique capabilities.&lt;/li&gt;
&lt;li&gt;WOA resources must careful to preserve &lt;a href="http://en.wikipedia.org/wiki/Idempotent"&gt;idempotency&lt;/a&gt; for state transition consistency.&lt;/li&gt;
&lt;/ul&gt;

&lt;strong&gt;&lt;a href="http://hinchcliffe.org/archive/2006/08/05/8489.aspx"&gt;Read a write-up&lt;/a&gt; of how to design a loosely coupled and highly resilient WOA/Client with minimum dependencies and best practices.&lt;/strong&gt;

&lt;h2&gt;The major differences between traditional SOA and WOA&lt;/h2&gt;

&lt;p style="padding-right: 5px;"&gt;&lt;div style="
  border: solid 1px #000;
  background-color: #FAF8CC;
  margin-left: 5px;
  width: 210px;
  font-size: 1.05em;
  padding: 6px;
  float: right;"&gt;&lt;div align="center"&gt;&lt;strong&gt;Is WOA really the future of SOA?&lt;/strong&gt;&lt;/div&gt;&lt;br/&gt;Here are some key datapoints on WOA adoption and trends:&lt;br/&gt;&lt;ul&gt;&lt;li&gt;The majority of new Web services on the open Web (which is the largest SOA in existence) are now released in the form of either simple XML over HTTP or REST and not based on traditional SOA approaches.  &lt;em&gt;Source:&lt;/em&gt; API survey of ProgrammableWeb listings.&lt;/li&gt;&lt;li&gt;Creating any basic Web page automatically creates a simple read-only WOA Web service.  Bonus points if you're using XHTML.  This highlights an absolutely key fact: The Web &lt;strong&gt;is&lt;/strong&gt; WOA and competing Web service models, even if superior, would have a very tough time gaining similar adoption (and have been trounced on the greater Web.)&lt;/li&gt;&lt;li&gt;The latest Web development platforms, such as Ruby on Rails, have already decided to deprecated SOAP and expose REST Web sevices for all apps by default.&lt;/li&gt;&lt;li&gt;Amazon famously tested the popularity of REST/WOA versus SOAP and the vast majority of customers (tens of thousands) chose the REST/WOA flavor.&lt;/ul&gt;&lt;/div&gt;One of the more helpful ways of understanding WOA is to see how it's different than SOA since there is considerable overlap between these two models of using the network to integrate, interoperate, and collaborate.  While both approaches leverage HTTP, self-describing data formats such as XML, are concerned about the use of open standards, and can be used to build systems of arbitrary complexity, much of the similarity ends there.  Here are some of the most significant contrasts between the two approaches:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;SOAs tend to have a small and well-defined set of endpoints through which many types of data and data instances can pass.  WOAs tend to have a very large and open-ended number of endpoints; one for each individual resource.  Not an endpoint for each type of resource, but a URI-identified endpoint for each and every resource instance.&lt;/li&gt;
&lt;li&gt;Traditional SOA builds a messaging layer above HTTP using SOAP and providing unique and sometimes prohibitive constraints to the Web developer, while WOA finds HTTP and related transfer mechanisms to be the ideal layer of abstraction for most applications.&lt;/li&gt;
&lt;li&gt;SOA was designed from the top-down by vendors to be tool friendly, while WOA was emerged form the bottom up from the Web naturally and has the best support in simple procedural code and an XML parser.&lt;/li&gt;
&lt;li&gt;SOA uses WS-Security and other sophisticated standards for security, while WOA tends to just use HTTPS.&lt;/li&gt;
&lt;li&gt;SOA must contend with the vagaries of XML Schemas for service contracts, while WOA largely ignores the issue and lets Web services naturally represent whatever formats are desired.&lt;/li&gt;
&lt;li&gt;Traditional SOA is fairly cumbersome to consume in the browser and in mashups while WOA is extremely easy to consume just about anywhere.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I should close by emphasizing that I enjoy and use traditional SOA technologies like SOAP, WSDL, and XSD frequently.  But as more and more of the consumer Web moves to a more Web-oriented model, the evidence continues to mount that approaches based on WOA are easier to implement, scale better, and result in much greater uptake and usage scenarios.  Traditional SOA is facing a crises of identity at this point, particularly given fairly lackluster results for most, and WOA may just be the prescription we need to make SOA deliver the robust outcomes that we were formerly expecting of it.  Especially read the article I wrote last year (below in the reading section on eleven new ideas for SOA architects) to show the promise of and a new vision for user-controlled SOA and other aspects that WOA enables and that traditional SOA tends to constrain.&lt;/p&gt;

&lt;p&gt;Other vital reading on the convergence and evolution of SOA, WOA, and Web 2.0:&lt;/p&gt;
&lt;ul&gt;
 &lt;li&gt;&lt;a href="http://www.intertwingly.net/blog/2006/08/08/WOA-vs-ROA"&gt;WOA versus ROA by Sam Ruby&lt;/a&gt;
 &lt;li&gt;&lt;a href="http://blogs.zdnet.com/Hinchcliffe/?p=107"&gt;The story of Web 2.0 and SOA continues&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="http://hinchcliffe.org/archive/2007/01/20/12675.aspx"&gt;Eleven Emerging Ideas for SOA Architects in 2007&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href="http://edgeperspectives.typepad.com/edge_perspectives/2006/04/soa_versus_web_.html"&gt;SOA Versus Web 2.0? by John Hagel&lt;/a&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;Note: I reserve the next few days to clean up and revise this article.  In the meantime, please share your SOA vs. WOA stories and opinions below.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update:&lt;/strong&gt; ZDNet's Joe McKendrick provides some coverage of these ideas in a &lt;a href="http://blogs.zdnet.com/service-oriented/?p=1072"&gt;new post&lt;/a&gt;.&lt;/p&gt;&lt;img src ="http://hinchcliffe.org/aggbug/16617.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Dion Hinchcliffe</dc:creator><title>Creating Open Web APIs: Exploring REST and WOA in Rails 2.0</title><link>http://hinchcliffe.org/archive/2008/01/10/16613.aspx</link><pubDate>Thu, 10 Jan 2008 17:27:00 GMT</pubDate><guid>http://hinchcliffe.org/archive/2008/01/10/16613.aspx</guid><wfw:comment>http://hinchcliffe.org/comments/16613.aspx</wfw:comment><comments>http://hinchcliffe.org/archive/2008/01/10/16613.aspx#Feedback</comments><slash:comments>285</slash:comments><wfw:commentRss>http://hinchcliffe.org/comments/commentRss/16613.aspx</wfw:commentRss><trackback:ping>http://hinchcliffe.org/services/trackbacks/16613.aspx</trackback:ping><description>&lt;img style="padding-left: 10px; padding-top: 5px;" align="right" src="http://hinchcliffe.org/img/onlineplatformplay.png"&gt;&lt;p&gt;In my &lt;a href="http://blogs.zdnet.com/Hinchcliffe/?p=157"&gt;recent 2008 predictions&lt;/a&gt; for the future of Web services and open APIs for enterprise applications, I said that we'd finally see a large scale movement to newer, lightweight Web-based models for opening up our software systems and integrating them together.   In other words, heavyweight SOA has finally fallen out of favor and lightweight SOA -- sometimes known as &lt;a href="http://blogs.zdnet.com/Hinchcliffe/?p=43"&gt;Web-Oriented Architcture (WOA)&lt;/a&gt;, is in.&lt;/p&gt;
&lt;p&gt;However, this sea change has long since taken place on the Web and this year will see best practices in this area take another major step forward as we'll examine below.  The recent &lt;a href="http://blogs.zdnet.com/Hinchcliffe/?p=107"&gt;convergence of the Web, SaaS, SOA&lt;/a&gt;, and other approaches has also made the boundaries between our architectures and systems increasingly intertwine and blur. As part of this evolution, we have also watched the gains that successful firms like Amazon and Facebook have made by opening up their products on the Web.  And strategically, as an industry, we've begun to find it a lot smarter to think in terms of &lt;a href="http://www.web2journal.com/read/170768.htm"&gt;reusable, interconnected open platforms&lt;/a&gt; instead of single-play software applications.  Along this journey, we have begun a major return to the roots of the globally linked structure of the Web.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The rest of this post consists of two sections.  One conceptual and one technical:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
   &lt;li&gt;The &lt;a href="#issues_and_motivations"&gt;issues around and motivations&lt;/a&gt; for the move to new Web development platforms and architectures.&lt;/li&gt;
   &lt;li&gt;A &lt;a href="#rails_rest_api_walkthrough"&gt;tutorial and walkthrough of how to use Rails&lt;/a&gt; to rapidly implement Web apps with open &lt;a title="" href="http://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm" &gt;REST&lt;/a&gt; APIs.&lt;/li&gt;
&lt;/ul&gt;
&lt;a name="issues_and_motivations"&gt;&lt;h2&gt;The next generation of Web development platforms and open APIs&lt;/h2&gt;&lt;/a&gt;
&lt;p&gt;The daily reinforcement and continuous growth in the fundamental power of HTTP and URL link structure, which is directly driving the Web's overall &lt;a href="http://web2.socialcomputingmagazine.com/web_20s_real_secret_sauce_network_effects.htm"&gt;network effect&lt;/a&gt;, has starting giving rise to a new generation of software architects and product designers. This generation has grown up deeply influenced by it and they tend to think about the creation of software in novel, new, highly Web-oriented ways.  Though the classical software industry has a long and proud heritage of its own around methodologies, architectural approaches, and design patterns -- proven in the crucible of real-world implementations of years past -- in this decade the Web has managed to exert its own unique, irresistible, and pervasive influence on virtually all aspects of producing software.  For example, agile processes have been pushed to the limit and beyond by the forces imposed by the realities of the &lt;a href="http://blogs.zdnet.com/Hinchcliffe/?p=15"&gt;Perpetual Beta&lt;/a&gt;.  And the scale of even average sized applications on the Web are now the largest we've ever seen.  The absolute necessity of cost-effective operations and the marketplace requirements of embracing the &lt;a href="http://blogs.zdnet.com/Hinchcliffe/?p=130"&gt;new business models for Web 2.0 applications&lt;/a&gt; -- including advertising, user generated content, and rich user experiences -- have also changed the fundamental technical and commercial ground rules for success.  As a whole, these changes have been driving a need for new software platforms that are explicitly designed to help us efficiently produce scalable, compelling online applications while also addressing the reality of modern-day Web apps.&lt;/p&gt;
&lt;img style="padding-left: 10px;" align="right" src="http://hinchcliffe.org/img/weblanguagecomparison1.png"/&gt;&lt;p&gt;Many of us who have to create the next generation of Web applications have been taking a hard look at the new platforms that have been created for the modern era of very large-scale networked software applications.  And I'll be very clear here: While a great many of the old ideas and techniques in software development are as applicable today as they were ten years ago, there are also an whole new set of constraints and enablers for which we have to be very good at optimizing.  As the Web begins its 2nd major wave of maturity -- and depending on who you listen to -- there is a considerably less tolerance for older, inefficient methods for developing Web applications; vigorous online competition for marketshare and increasingly online-savvy businesses have a much better sense of what is possible and how much it should cost and when it should be delivered.&lt;/p&gt;
&lt;p&gt;These factors as a whole have pushed us into a new era of productivity-oriented platforms that started years ago with languages like Tcl and Perl and quickly moved on to Python, PHP, Ruby.  Ultimately we ended up where we are today, with advanced, highly-efficient frameworks for these languages such as Ruby on Rails and CakePHP.  These tools now let us create Web applications literally &lt;em&gt;10 to 20 times&lt;/em&gt; more efficiently than the general purpose language platforms of the 20th century, and with both traditional software engineering as well as new Web 2.0 best practices already built in.  These improvements have only spurred what can only be called a "radical" movement in the software business, which started with open source software (the peer production of software) starting in the 90s, and where we have arrived, with a dramatic departure from the way we used to look at software languages and platforms in terms of how vertical a software development platform could be before it lost general appeal.&lt;/p&gt;
&lt;p&gt;These new efficiency gains and vertical focus, however, are almost exclusively aimed at the twins goals of developer productivity and good design.  These are both admirable and important goals since programmer time always been one of the leading costs in producing software.   Software applications also spend most of their lifetimes in maintenance mode and clean application architectures from the outset can greatly facilitate updates and revisions.  However, over the same time frame, the run-time efficiency of our programming environments, partially obscured by a little help from &lt;a href="http://www.useit.com/alertbox/980405.html"&gt;Moore's Law and Nielsen's Law&lt;/a&gt;, has been in a major decline. This has been largely intentional, when it comes to supporting improved developer productivity, or entirely unfortunate, such as the general failure of the software industry to &lt;a href="http://hinchcliffe.org/archive/2005/01/10/148.aspx"&gt;figure out how to help software designers fully leverage&lt;/a&gt; the now ubiquitous generation of multi-core processors.&lt;/p&gt;
&lt;img style="padding-left: 10px;" align="right" src="http://hinchcliffe.org/img/weblanguagecomparison2.png"/&gt;&lt;p&gt;Out of all this there has grown a distinct and growing tension between the need to rapidly and inexpensively produce quality software and the requirement for it to scale cost-effectively to millions of users.  The simple fact is, which you can readily see in the &lt;em&gt;Hard Metrics&lt;/em&gt; diagram to the right, is that the previous generation of programming languages and platforms is up to 40x faster than what many of would prefer to use today to develop Web applications.  Yet the more you go to the left on both diagrams, the more that programming platform becomes extremely expensive and time-consuming to develop with. Why is this?  There are two primary reasons.&lt;/p&gt;
&lt;p&gt;One is that the more popular, older programming languages tend to be relatively low level and general purpose and were designed for a different, older set of constraints.  This has given us baggage that is often not very applicable to the modern Web-based world.  Second, we've become very good at understanding the idioms and "syntactic sugar" that makes developers more productive for Web development and we've put that into the latest generation of programming languages and Web frameworks.  Unfortunately, the combined newness of these new Web development platforms and their preference for coding time efficiency in favor of run-time efficiency has conspired to make the results they produce relatively slow and resource inefficient compared to what is potentially possible.  Newness in this case is also a kind of performance tax since we just haven't had enough time learning how to make these new platforms perform well at run-time, similar to early versions of &lt;a title="Java" href="http://java.sun.com" &gt;Java&lt;/a&gt; before the advent of the Just-In-Time (JIT) compiler.  Fortunately, efforts like &lt;a href="http://rubydotnet.googlegroups.com/web/Home.htm"&gt;Ruby .NET&lt;/a&gt; have made some notable headway in this space recently, but are not commonplace yet.&lt;p&gt; 
&lt;p&gt;The intent of the rest of this article is to explore the new release of Ruby on Rails 2.0 and examine it in the context of the trends above.  The ultimate 10 million dollar question in the Web development platform arena is: Are the developer productivity benefits, including the embodiment of many current Web application best practices, that are conferred by new generation Web development platforms like Rails worth their cost in terms of operational efficiency?  Increasingly, whether you're a corporate IT executive or a programmer at an Internet startup, you're going to be facing this difficult decision when you choose your target platform.  Questions like "&lt;em&gt;is it worth 5x-10x the programmer time to get run-time efficient software?&lt;/em&gt;",  or "&lt;em&gt;should I just increase the investment in more processor cores and bandwidth in the data center?&lt;/em&gt;" will keep you up at night.  Making the wrong choice has potentially serious long-term consequences in terms of what it will ultimately take to maintain and operate your application.  A programming platform's implications for operations are particularly pronounced since Web apps require more operational resources on the server-side the larger they grow, unlike traditional, installed stand-alone applications.&lt;/p&gt;
&lt;p&gt;One way of thinking about the problem is that it's almost never a good idea to bet against significant improvements in computing and network bandwidth.  So far we've not yet seen much to indicate that large, regular improvements won't continue for the foreseeable future.  Another is assuming that a platform should be used in a slavishly monolithic fashion for an entire application.  In fact, as an insightful interview with Alex Payne, a lead developer of one of most well-known Rails success stories, &lt;a href="http://twitter.com"&gt;Twitter&lt;/a&gt;, shows it often makes sense to move the slowest parts of the app into something faster. This is such a common situation in software development that it's long been codified as the &lt;a href="http://hinchcliffe.org/archive/2005/01/11/150.aspx"&gt;Alternate Hard/Soft Layers pattern&lt;/a&gt;.  And while these two considerations alone will go a long way towards helping one decide which direction to take, one must also look to where the industry is going as a whole.  The new productivity-oriented platforms are here to stay and adopting strategies to use their strengths effectively while being proactive in addressing their weaknesses, is the best route to success with 21st century Web applications.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Where's the interface? REST doesn't have a contract description language and essentially uses &lt;a href="http://en.wikipedia.org/wiki/Duck_typing"&gt;duck typing&lt;/a&gt;.  &lt;a href="http://hinchcliffe.org/archive/2006/08/05/8489.aspx"&gt;Read about best practices for WOA/Client development&lt;/a&gt;.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;So all of these issues form the lens through which we must look at the modern Web 2.0 applications arena.  But let's take an actual look at what we're talking about here.  How efficient can these new development platforms really be?  And do they are actually encourage us down the right paths in term of modern best practices in the Web 2.0 era?  Let's validate this by actually building, hands-on, an entire Web application using one of these new productivity-oriented programming platforms, specifically using the newly released &lt;a href="http://weblog.rubyonrails.org/2007/12/7/rails-2-0-it-s-done"&gt;Ruby on Rails 2.0&lt;/a&gt;.  Those following along will need a little bit of technical skill, but you'll see that these new platforms are tremendously efficient from a developer perspective.  In fact, we'll have an application up and running in literally a few minutes after you get your Rails 2.0 environment installed.&lt;/p&gt; 
&lt;h2&gt;Building a WOA-compliant Web Application in Rails 2.0&lt;/h2&gt;
We're about to get our hands on Rails 2.0 and build a complete data-driven Web application.  But first we have to understand a little bit about REST and WOA since that's the "return to the roots of the Web" story I alluded to in the beginning.  Nick Gall originally coined the term WOA, which &lt;a href="http://ironick.typepad.com/ironick/2006/08/sam_ruby_thinks.html"&gt;he defines for us here&lt;/a&gt;.  It's also called a resource-oriented architecture, but at the core of both conceptions is an approach called REST, which &lt;a href="http://hinchcliffe.org/archive/2005/02/12/171.aspx"&gt;I've previously defined with specifics&lt;/a&gt; for those of you not familiar with it.  But the key idea is that REST is just a way of using the fundamental protocol of the Web, the Hypertext Transport Protocol (HTTP), to exchange information with anyone else on the Web.  REST treats the information on the Web as URL-addressable resources, which includes traditional Web pages but also pure data including XML, video, and audio.  REST, which is really  just a style of using HTTP, leverages the architecture of the World Wide Web in a natural, organic manner.  In other words, REST is the best way we currently know of to open up our Web applications to the rest of the world, an approach I have called the &lt;a href="http://blogs.zdnet.com/Hinchcliffe/?p=35"&gt;Global SOA&lt;/a&gt; in the past.&lt;/p&gt;
&lt;p&gt;In contrast to object-oriented models for software, or the procedural models used by traditional Web services such as SOAP, REST only uses four methods, those built into HTTP itself: GET, POST, PUT, and DELETE,  which themselves operate on data resources located at URI endpoints located on Web servers holding the data (typically a relational database under the covers).  Consequently, REST applications tend to have a much larger (and transparent) set of surface area dependencies directly on sets of addressable Web data instead of on bundles of procedural methods through which XML schema instances are passed.&lt;/p&gt;
&lt;p&gt;Since platforms like Rails embody many of our latest ideas about how best to develop for the Web, it should come as little surprise that the principle creator of Rails, David Heinemeier Hansson, recently observed that the latest release of Rails consists mainly of "&lt;em&gt;a slew of improvements to the RESTful lifestyle&lt;/em&gt;."  One of the most remarkable things about Rails is how it pays more than lip service to this essential resource-oriented view of the Web.  As you shall see, since open APIs are one of the hot topics in the Web applications business at the moment, it's nice to know that every Rails app automatically gets its very own RESTful API.  So, let's see this for ourselves...&lt;/p&gt;
&lt;a name="rails_rest_api_walkthrough"&gt;&lt;h2&gt;Building an Open Web API in Rails 2.0&lt;/h2&gt;&lt;/a&gt;
&lt;h2&gt;Step 1: Getting on Rails 2.0&lt;/h2&gt;
&lt;p&gt;To explore developing a Rails 2.0 app and creating/using its open Web API, you'll need to install four pieces of software on your test computer.&lt;/p&gt;
&lt;ol&gt;
  &lt;li&gt;&lt;strong&gt;Install the Ruby programming language.&lt;/strong&gt;  Version 1.8.6 is highly recommended.  Here are links to the &lt;a href="http://rubyforge.org/frs/?group_id=167"&gt;Ruby Windows installer&lt;/a&gt;, &lt;a href="http://hivelogic.com/articles/ruby-rails-mongrel-mysql-osx/"&gt;Mac OS 10.4 instructions&lt;/a&gt;.  Ruby is already installed standard on 10.5 (Leopard).&lt;p/&gt;&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Use the Ruby Gems updater&lt;/strong&gt; from a command-line or terminal session to pull in Rails 2.0 from over the Internet:&lt;br/&gt;&lt;br/&gt;
&lt;code&gt;gem install rails -y&lt;/code&gt;&lt;br/&gt;&lt;br/&gt;
You'll know you did this right if the output of the command:&lt;br/&gt;&lt;br/&gt;&lt;code&gt;rails --version&lt;/code&gt; is:&lt;br/&gt;&lt;br/&gt;&lt;code&gt;Rails 2.0.2&lt;/code&gt; or higher.  Warning: If you have an earlier version of Rails installed, it will be upgraded automatically.&lt;p/&gt;&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Install a database of your choice&lt;/strong&gt;.  &lt;a href="http://dev.mysql.com/downloads/"&gt;MySql&lt;/a&gt; or &lt;a href="http://www.postgresql.org/download/"&gt;Postgres&lt;/a&gt; are recommended but even SQL Server or Oracle will work just fine, though you will probably have to install their Gems separately.  Rails is for designing database-driven Web apps so make sure write down your user account and password for the database. Make sure you've created a named database instance.  Don't worry about application tables for now, we'll have Rails take care of that for us later.&lt;p/&gt;&lt;/li&gt;
   &lt;li&gt;&lt;strong&gt;Connect the database to your Rails application.&lt;/strong&gt; First we create a skeleton app and then we'll tell it about our database instance.  Note: Getting the database connection information and credentials right after you install everything is often the hardest part about getting Rails up and running.&lt;br/&gt;&lt;br/&gt;
First, let's create the skeleton application we're going to be using for the rest of our work.  Go to a local directory of your choice and type the following from a command line:&lt;br/&gt;&lt;br/&gt;
&lt;code&gt;rails railsapp&lt;/code&gt;&lt;br/&gt;&lt;br/&gt;
This will lay down the entire application structure for a Rails app, including a built-in Web server, WEBrick.&lt;p/&gt;
Inside &lt;code&gt;railsapp&lt;/code&gt; there will be a &lt;code&gt;config&lt;/code&gt; directory with a file called &lt;code&gt;database.yml&lt;/code&gt;.  Open it in your favorite editor and fill out the &lt;code&gt;development:&lt;/code&gt; section of the file with your database credentials and save it.&lt;p/&gt;
Start WEBrick in a separate command-line instance by typing the following, and be prepared to stop and start it occasionally as certain application changes are made:&lt;br/&gt;&lt;br/&gt;
&lt;code&gt;cd railsapp&lt;/code&gt;&lt;br/&gt;
&lt;code&gt;ruby script/server&lt;/code&gt;&lt;p/&gt;&lt;/li&gt;
   &lt;li&gt;&lt;strong&gt;Download &lt;a href="http://curl.haxx.se/download.html"&gt;cURL&lt;/a&gt;, a command line HTTP invoker.&lt;/strong&gt;  Put it in a path you can reach from your command line instance.  We'll be using cURL to simulate a RESTful Web API client and invoke our Web application's REST API upon a data resource we've previously created via as a user the HTML interface we've built in Rails.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Now we're ready to start development and testing of our Rails 2.0 application.  Keep WEBrick running in one command line window so you can see its debug output (it will show you all the HTTP requests that go back and forth), and have another command line in the &lt;code&gt;railsapp&lt;/code&gt; directory ready to invoke various Rails commands.&lt;/p&gt;
&lt;h2&gt;Creating Our Open Web Application in Rails 2.0&lt;/h2&gt;
&lt;p&gt;For the purposes of this demonstrator, we're going to build a very simple employee tracking application in Rails.  We're going to use the newer syntax in Rails for easy creation of a full Web application with employee record creation, viewing, updating, and deletion.  Rails will even create the database tables for us, all the user interface screens (albeit they will be unstyled), unit tests, and even a complete RESTful API, our final end goal.&lt;/p&gt;
&lt;p&gt;Astonishingly, we're going to create all of this using only two short commands at the command-line.  You'll see why Rails is one of the most productive Web development platforms available and this step in particular shows some of the radical ease of use that Rails proponents (myself included) are consistently impressed with.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Step 1:  Create the basic employee tracking application&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Rails use a well-designed &lt;a href="http://en.wikipedia.org/wiki/Model-view-controller"&gt;Model-View-Controller architecture&lt;/a&gt; and in our first command, were going to ask it to create all three items for us for our employee tracking database as well as matching unit tests and cross-platform database scripts.  To keep it simple, we're only going to track two fields for the employee: their name and their extension.  You are welcome to add additional fields but will have to deal with the additional fields in the steps below.&lt;/p&gt;
&lt;p&gt;In the &lt;code&gt;railsapp&lt;/code&gt; directory, type the following command:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;ruby script/generate scaffold emp name:string extension:integer&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;You will see a lot of output showing the files that the Rails framework creates to handle the employee data we've just specified.  The command itself invoked the &lt;code&gt;generate&lt;/code&gt; facility of Rails to create a new scaffold for a model called 'emp' which has two fields, an employee name typed as a text string and an extension typed as an integer.  A scaffold is an initial, working application skeleton with basic functionality including database persistence and a matching set of HTML forms for the CRUD.&lt;/p&gt;
&lt;p&gt;Now, believe it or not, the employee tracking application is now mostly finished, the only thing we need to do it to update the database so that it has the schema for the employee records.  You can use Rails' &lt;code&gt;rake&lt;/code&gt; facility to get this done.  This will require that you have correctly set up your &lt;code&gt;database.yml&lt;/code&gt; file, and you will have to debug any connection issues to get this step to work.  To migrate our employee model, named 'emp' to the database, type the following in the &lt;code&gt;railsapp&lt;/code&gt; directory:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;rake db:migrate&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Now, you can run the application by going to the emps directory on the WEBrick instance.  Note that &lt;code&gt;emp&lt;/code&gt; as been pluralized automatically by rails, so our applications is located at the &lt;code&gt;emps&lt;/code&gt; endpoint.  To access our new Rails 2.0 Web app, point your browser to:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;http://localhost:3000/emps&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;You should see the listing screen of the employee tracking database that looks like the one below:&lt;/p&gt;
&lt;p&gt;&lt;img src="http://hinchcliffe.org/img/emps1.jpg"/&gt;&lt;/p&gt;
&lt;p&gt;Click on &lt;em&gt;New emp&lt;/em&gt; to create a new employee, and enter the data as seen below (aside: Roy Fielding is co-inventor of HTTP and the person who created the &lt;a href="http://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm"&gt;original vision around REST&lt;/a&gt;), and click on &lt;em&gt;Create&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://hinchcliffe.org/img/emps2.jpg"/&gt;&lt;/p&gt;
&lt;p&gt;The data entered is then transmitted from the browser to the server and stored in the back-end database. You can then view it, destroy it, or add more employees with the user interface that was generated for us by Rails.&lt;/p&gt;
&lt;p&gt;We've now completed a simple but fully functional Rails application from beginning to end.  But what we've come here to see is the fully RESTful open Web API that was created for us along the way.  For this we'll need to use cURL to issue the API calls via HTTP to simulate another online program integrating live with our Web application.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Step 2a:  Invoke the REST API to GET the employee resources&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Now we're going to exercise all the HTTP verbs on our open Web API to see how it works.  The diagram below shows the overall lifecycle of a REST-based resource using our &lt;code&gt;emp&lt;/code&gt; example.  The good news is that Rails automatically offers URL addressable resources for all the data in a Rails Web application.  This access can be controlled and channeled as needed but it's open by default for whichever views already have visual access via HTML forms.  This means Rails developers get a RESTful API for their applications simultaneously as they develop their user interface.&lt;/p&gt;
&lt;div style="text-align:center;"&gt;&lt;img src="http://hinchcliffe.org/img/restinteractionvisual.png"/&gt;&lt;/div&gt;
&lt;p&gt;Let's go ahead use the REST API to pull the data for the employee that we added above.  We'll use the handy HTTP utility, cURL, to interact with the Rails application via HTTP.  Note that the URL we'll use now has the '.xml' extension added to it.  This tells Rails that we're trying to access the XML representation of the resource instead of using the HTML user interface (in other words, we're playing the role of a program instead of a human user.)&lt;/p&gt;
&lt;p&gt;&lt;code&gt;curl http://localhost:3000/emps.xml&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Enter the text above in a local command-line or shell with the cURL binary in the execution path. You should see output that looks similar to the following below.  It's an XML representation of the employee data in list format, pulled fresh from the server via the REST API, with the &lt;code&gt;emps&lt;/code&gt; tag as the enclosing list structure holding individual &lt;code&gt;emp&lt;/code&gt; instances.&lt;/p&gt;
&lt;p&gt;&lt;pre class="yb"&gt;
&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;
&amp;lt;emps type="array"&amp;gt;
  &amp;lt;emp&amp;gt;
    &amp;lt;created-at type="datetime"&amp;gt;2008-01-11T01:02:53+01:00&amp;lt;/created-at&amp;gt;
    &amp;lt;extension type="integer"&amp;gt;1234&amp;lt;/extension&amp;gt;
    &amp;lt;id type="integer"&amp;gt;1&amp;lt;/id&amp;gt;
    &amp;lt;name&amp;gt;Roy Fielding&amp;lt;/name&amp;gt;
    &amp;lt;updated-at type="datetime"&amp;gt;2008-01-11T01:02:53+01:00&amp;lt;/updated-at&amp;gt;
  &amp;lt;/emp&amp;gt;
&amp;lt;/emps&amp;gt;
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;It's idiomatic in Rails to use the &lt;code&gt;id&lt;/code&gt; attribute as the primarily key for application data.  In fact, this convention is required for a lot of the magic in Rails to happen automatically and the &lt;code&gt;rake&lt;/code&gt; migration way back in Step 1 already took care of adding this column to the database for us.  That means we can use the &lt;code&gt;id&lt;/code&gt; as the final addition of our employee resource URIs for updating, getting, and deleting individual employee resources.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Step 2b:  Update an employee resource through the REST API via PUT&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Let's go ahead and update Roy Fielding's phone extension through the REST API.  Since we can tell from the employee list above that Roy's &lt;code&gt;id&lt;/code&gt; is '1', we can use that to let the API know which record we'd like to update.  You only have to send two parts of the resource in the API call, the &lt;code&gt;id&lt;/code&gt; and the attributes we'd like to update.&lt;/p&gt;
&lt;p&gt;Create a file called &lt;code&gt;put.xml&lt;/code&gt; with the following contents:&lt;/p&gt;
&lt;p&gt;&lt;pre class="yb"&gt;
&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;
&amp;lt;emp&amp;gt;
  &amp;lt;extension type="integer"&amp;gt;5678&amp;lt;/extension&amp;gt;
  &amp;lt;id type="integer"&amp;gt;1&amp;lt;/id&amp;gt;
  &amp;lt;name&amp;gt;roy fielding&amp;lt;/name&amp;gt;
&amp;lt;/emp&amp;gt;
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;Invoke cURL with the following parameters to actually update the phone extension in the resource on the server (and consequently in the database.)  The -H parameter sets the header so that Rails knows that an XML representation of the resource is being sent to it.  -T makes the HTTP invocation a PUT operation, and the URL of the resource is http://localhost:3000/emps/1.xml where the number 1 corresponds to the &lt;code&gt;id&lt;/code&gt; of the resource:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;curl -v -H "Content-Type: application/xml; charset=utf-8" -T put.xml http://localhost:3000/emps/1.xml&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Step 2c:  Add an employee resource through the REST API via POST&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Now we'll add a new employee to our application over the network using the REST API.  This employee will be Tim Berners-Lee, so we'll create another XML file called &lt;code&gt;post.xml&lt;/code&gt; that looks like the following:&lt;/p&gt;
&lt;p&gt;&lt;pre class="yb"&gt;
&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;
&amp;lt;emp&amp;gt;
  &amp;lt;extension type="integer"&amp;gt;1212&amp;lt;/extension&amp;gt;
  &amp;lt;name&amp;gt;Tim Berners-Lee&amp;lt;/name&amp;gt;
&amp;lt;/emp&amp;gt;
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;To send this via a POST operation through the REST API using cURL, issue the following on the command line.  The &lt;code&gt;--data-ascii&lt;/code&gt; parameter identifies the file to send via HTTP to our REST API.  Because the resource does not yet exist, the URL is the base of the resource type, http://localhost:3000/emps.  Rails conveniently returns the XML representation of the added resource so the &lt;code&gt;id&lt;/code&gt; generated on the server for the newly added record can be obtained in the client without a second call to the server.  Add Tim Berners-Lee to our employee tracking application via the API:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;curl -v -H "Content-Type: application/xml; charset=utf-8" --data-ascii @post.xml http://localhost:3000/emps.xml&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;A browse of the employees list via cURL or the employee tracking apps Web forms will see that Tim Berners-Lee has now been added to the application, including the database, via the REST interface.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Step 2d:  Delete an employee resource through the REST API via DELETE&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Now we'll go ahead and remove Roy Fielding from the database using our REST API.  This process is straightforward and uses the HTTP verb DELETE.  You can issue this via cURL using the following command:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;curl --request DELETE http://localhost:3000/emps/1.xml&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;You can now verify through the employee tracking Web forms that Roy Fielding's employee record has been permanently removed from the database.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;We've seen how Rails 2.0 makes it enormously simple to create a database-driven Web application, expose it via a REST API, and manipulate it via a REST-capable client in a clean, no-nonsense manner.  Developing similar capability in C++, Java, or .NET environments is currently much more difficult.  What you see above however, is only the beginning; Rails 2.0 has added a lot of other support for more sophisticated uses of REST and HTTP.  I'll cover these in one of my upcoming posts as soon as I am able.  The key point here is that the next generation of Web application platforms puts almost staggering amounts of power in the hands of the average Web developer while providing powerful capabilities like properly formed REST APIs automatically.  This further puts the latest best practices for Web apps into places it wouldn't otherwise happen.  Open APIs will help power the next generation of online success stories and for this and other reasons, Rails should be on the short list for those considering new Web development efforts.  That is, only if they are prepared to do what's necessary to address Ruby's and Rails' shortcomings in run-time performance.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Still trying to exactly understand why Rails is such a compelling option? &lt;a href="http://web2.socialcomputingmagazine.com/ruby_on_rails_11_web_20_on_rocket_fuel.htm"&gt;Read an analysis&lt;/a&gt; of why platforms like Rails are a major improvement over previous generations of Web application platforms.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;If you have any trouble getting the code to work, please contact me at &lt;a href="mailto:dion@hinchcliffeandco.com"&gt;dion@hinchcliffeandco.com&lt;/a&gt;.&lt;/p&gt;&lt;img src ="http://hinchcliffe.org/aggbug/16613.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Dion Hinchcliffe</dc:creator><title>The state of RIA moves forward: Ajax, Silverlight, and JavaFX</title><link>http://hinchcliffe.org/archive/2007/12/23/16592.aspx</link><pubDate>Sun, 23 Dec 2007 15:33:00 GMT</pubDate><guid>http://hinchcliffe.org/archive/2007/12/23/16592.aspx</guid><wfw:comment>http://hinchcliffe.org/comments/16592.aspx</wfw:comment><comments>http://hinchcliffe.org/archive/2007/12/23/16592.aspx#Feedback</comments><slash:comments>132</slash:comments><wfw:commentRss>http://hinchcliffe.org/comments/commentRss/16592.aspx</wfw:commentRss><trackback:ping>http://hinchcliffe.org/services/trackbacks/16592.aspx</trackback:ping><description>&lt;img align="right" src="http://hinchcliffe.org/img/ria_masterclass.002.png"&gt;&lt;p&gt;I've just returned from Europe after delivering our new three day masterclass on Web 2.0 combined with the very latest in Rich Internet Application techniques for Web application development. We tried to create a highly innovative learning event that covered the latest in Internet design patterns and business models while at the same time tying tightly it with execution at the architecture and technology level.  After covering Ajax fundamentals and then adding in an injection of the very latest cutting edge RIA technologies from Microsoft and Sun, I believe we delivered one of the most leading-edge, fast-moving, and educational three days of high concept and hands-on Web application development.&lt;/p&gt;
&lt;p&gt;Delivering on this vision required a serious review of the latest alpha and beta code drops for Silverlight 1.1/2.0 and JavaFX as well as a deep dive into ASP .NET Ajax.  We found that these RIA platforms and frameworks are really starting to get ready for prime time even in their "under construction" state.  The capabilities that are germinating in these new platforms are fascinating and are clearly poised to move the RIA industry state-of-the-art forward significantly.  This is the story of what we learned along the way...&lt;/p&gt;
&lt;p&gt;Lately, we've been struck by the challenge in the magnitude of the diversity in knowledge that must be acquired and mastered before one can deliver online offerings that are successful, much less highly competitive.  The Web is currently the world's the best place to create and offer an online software product and lack of potent RIA approaches were one of the key missing ingredients that held back the potential of genuine online software applications.  Furthermore, the real upside potential of the Web is scale and more scale to a readily accessible audience of many hundreds of millions of potential users.  The delivery models are now just about here while the audience and demand continues to grow (SaaS, or Software-as-a-service, is on target to be the dominant software model by 2011/2012.)&lt;/p&gt;
&lt;p&gt;The challenge currently is creating RIA applications that can deliver in terms of a competitive user experience while still enabling the other key aspects of Web apps that drive their success.  These key aspects including ensuring a strong &lt;a href="http://web2.socialcomputingmagazine.com/web_20s_real_secret_sauce_network_effects.htm"&gt;network effect&lt;/a&gt;, turning the Web app into an reusable 3rd party platform via open APIs, avoiding the various standard issues with RIAs (loss of SEO, poor GUI conventions, significant reductions in page views, etc.) and last but far from least, a workable long-term business model beyond tons of unmonetized traffic.&lt;/p&gt;
&lt;p&gt;&lt;img align="right" src="http://hinchcliffe.org/img/ria_masterclass.001.png"&gt;The masterclass itself included a half-day of heavy duty Web 2.0 principles and then 2.25 days of intensive RIA study.  The Web 2.0 portion focused on the main principles as originally espoused by O'Reilly Media when they defined the term and which also forms of the backbone of our popular strategic &lt;a href="http://web20university.com"&gt;Web 2.0 University&lt;/a&gt; courses.  We then consistently tied back the strategic principles to the discussions of the various RIA approaches (Ajax, Silverlight, and JavaFX), such as discussing &lt;a href="http://blogs.zdnet.com/Hinchcliffe/?p=80"&gt;widget delivery models&lt;/a&gt; for RIAs and organizing Web applications around a true Web-Oriented Architecture (WOA) with granular URLs/URIs and creating an applications public and private APIs in &lt;a title="" href="http://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm" &gt;REST&lt;/a&gt; or JSON form.  In formal Web 2.0 terms, this is the &lt;em&gt;Lightweight Programming and Business Models principle&lt;/em&gt;, which can really help technical folks begin to map the overarching ideas to specific patterns and practices.  We also had a good group of experienced developers as students, most with some RIA experience, which allowed us to really kick the tires on these technologies.  Finally, we also said we'd create RIA scorecard at the end of the course to see how capable the class as a whole found these various RIA technologies for building Web 2.0 apps.  So far so good...&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Web-Oriented Architecture (WOA) in support of RIA architectures was a fundamental concept that we revisited repeatedly in the masterclass.  Read an &lt;a href="http://blogs.zdnet.com/Hinchcliffe/?p=27"&gt;intro to WOA&lt;/a&gt; as well as our &lt;a href="http://hinchcliffe.org/archive/2006/08/05/8489.aspx"&gt;conception of WOA/Client.&lt;/a&gt;&lt;/strong&lt;/p&gt;
&lt;p&gt;The four RIA models that we covered and compared in-depth were 1) "bare metal" Ajax (without the assistance of a framework or library, 2) &lt;a href="http://asp.net/ajax/"&gt;ASP .NET Ajax&lt;/a&gt;, 3) &lt;a href="http://silverlight.net"&gt;Silverlight 1.0 and 1.1/2.0&lt;/a&gt;, and 4) Sun's &lt;a href="http://www.sun.com/software/javafx/index.jsp"&gt;JavaFX&lt;/a&gt;.  Given that &lt;a href="http://ajaxpatterns.org"&gt;AjaxPatterns.org&lt;/a&gt; currently lists over &lt;a href="http://ajaxpatterns.org/Frameworks"&gt;200 Ajax frameworks&lt;/a&gt;, picking the Ajax framework for the course came down to the practicality of time and we selected ASP .NET Ajax from Microsoft since we were already going to have the development tools in place for Silverlight, which are almost identical to the ones used for ASP .NET Ajax.  Some of you will ask why we didn't cover Flex or Flash, and the answer is mostly that we didn't have a request for it in this course.  We will be adding a &lt;a href="http://www.adobe.com/products/flex/"&gt;Flex and &lt;a href="http://openlaszlo.org"&gt;OpenLaszlo&lt;/a&gt; section shortly to this and bring it out to four total days that will cover the full gamut of the major ways to design and build an RIA.&lt;/p&gt;
&lt;h2&gt;Comparing and Contrasting Pure Ajax, ASP .NET Ajax, Siliverlight and JavaFx&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;img align="right" src="http://hinchcliffe.org/img/ria_masterclass.003.png"&gt;&lt;p&gt;&lt;strong&gt;Pure Ajax&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Not for the faint of heart, building a Rich Internet Application with plain nuts-and-bolts Ajax requires fairly good working knowledge of a slew of browser technologies including the Document Object Model, JavaScript, DHTML techniques, XmlHttpRequest, timer management, CSS, and Web services/SOA/WOA.  While the most compact and high performance result can come out of this, most Web developers will be looking for at least some assistance to elide browser differences, provide a component model and useful components, and handle plumbing, infrastructure, and assist in debugging, which is still in a largely deplorable state in browsers, despite advances such as &lt;a href="https://addons.mozilla.org/en-US/firefox/addon/1843"&gt;Firebug&lt;/a&gt;.  Pure Ajax has a lot of draw however, since it's based on 100% open standards and does not tie you to anyone else's code or to any vendors or organizations (other than standards bodies.)  We had everyone build a "bare metal" Ajax application based on the &lt;a href="http://www.google.com/webhp?complete=1&amp;hl=en"&gt;Google Suggest concept&lt;/a&gt; to see what it's like to develop an RIA using only the capabilities that are built into every common browser today, and no external code, utilities, or libraries.  Most attendees felt this model was going to work best for embedded apps but that it required a lot of effort.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;ASP .NET Ajax&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;A powerhouse of an Ajax framework that I've been &lt;a href="http://hinchcliffe.org/archive/2005/09/18/2192.aspx"&gt;writing about&lt;/a&gt; for a few years now, this framework brings a distinctively Microsoft flavor to the Ajax arena.  Although ASP .NET Ajax has a competent set of controls and even a full Javascript base class library, the strength of this framework is that it's designed to solve some of the tougher issues in building dynamic applications that are fed by server-side APIs.  The UpdatePanel is the "crown jewel" of the ASP .NET Ajax framework (&lt;a href="http://dotnetslackers.com/articles/atlas/The_UpdatePanel_opened_what_happens_behind_the_scenes.aspx"&gt;a good overview here&lt;/a&gt;) that is so compelling that it even has its &lt;a href="http://dotnetslackers.com/articles/ajax/BookReviewAspNetAjaxUpdatePanelControl.aspx"&gt;own book&lt;/a&gt; on the subject.  The essential job of the UpdatePanel?  Specifically, handling the complexity of managing the updates of the visual elements of an Ajax application that are bound to remote Web services.  However, despite the rich functionality designed specifically to simplify the Ajax development process, the GUI editor for ASP .NET Ajax in Visual Studio 2008 is somewhat confusing for the new user and is one of the minor disappointments in an otherwise excellent Ajax product.  ASP .NET Ajax is fairly egalitarian in terms of browser support and the applications it generates run on most major browsers.  For the masterclass, we did an in-depth overview of the platform and built an application that used the UpdatePanel.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;img align="right" src="http://hinchcliffe.org/img/ria_masterclass.004.png"&gt;&lt;p&gt;&lt;strong&gt;Silverlight 1.0 and 1.1/2.0&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Microsoft has been working for years on a Flash competitor that will provide developers with a large set of options for developing capable and compelling RIAs.  While Siliverlight 1.0 only had basic capability in terms of simple animation and media support using Javascript as the primary scriptiong language, Siliverlight 1.1/2.0 (now officially version numbered as 2.0 &lt;a href="http://blogs.msdn.com/tims/archive/2007/11/29/silverlight-1-1-is-now-silverlight-2-0.aspx"&gt;a few weeks ago according to Tim Sneath&lt;/a&gt;) is a completely different animal.  Silverlight 2.0 offers a complete .NET common language run-time in the browser including managed versions of Javascript and Python that will compile to binary on client and run extremely quickly.  Obviously, by supporting Python (and Ruby as well, though not in the current alpha distribution) in the client, Silverlight's CLR in the browser now also support the Dynamic Language Runtime (DLR), making Silverlight have the richest support for RIA client-side languages currently available.  Of course, sporting a lightweight version of .NET and its libraries comes at some cost, particularly download and installation time, but it's surprising at how much they fit into a relatively small footprint that comes in at only a few megabytes.  Combine that will some of the neatest RIA apps I've seen (visit a few of these &lt;a href="http://blogs.msdn.com/tims/archive/2007/07/07/from-a-to-z-50-silverlight-applications.aspx"&gt;50 different Silverlight demo apps&lt;/a&gt;), and Silverlight is well positioned to offer high performance RIAs that provides the broadest set of developer choices as well as potential creative inputs.  Because it will ultimately support so many languages, libraries and code can be reused from a much broader source than has been possible before in RIAs.  Silverlight also has incredible tool support with nearly seamless integration fo Visual Studio 2008 for developers and Expression Blend 2 for designers, which can operate on the same files depending on what you work on: the code or the creative parts of a Silverlight application.  In the course, students used Visual Studio 2008 and Expression Blend 2 December Beta to create controls and applications.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;img align="right" src="http://hinchcliffe.org/img/ria_masterclass.005.png"&gt;&lt;p&gt;&lt;strong&gt;JavaFX&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Far from being left out of the emerging RIA story, Sun has created a very interesting new entry in the RIA space. Designed to leverage the full breadth and depth of the extremely mature and robust &lt;a title="Java" href="http://java.sun.com" &gt;Java&lt;/a&gt; platform, JavaFX is a scripting language that doubles as a declarative programming model.  With the express goal of making it significantly easier to create Rich Internet Applications than it is now with current Java technologies, JavaFX offers some serious productivity-oriented features including: A highly efficient Model-View-Controller (MVC) data binding construct in the scripting language itself, declarative event triggers for assertions and CRUD, and even some cutting edge features such as extents (a notation to let you see all class instances of a certain type) and other mechanisms that will give one some concerns about the sacrifice of long-term code maintenance to the altar of code efficiency, but it's a pretty well thought-out model.  You can see some of the &lt;a href="https://openjfx.dev.java.net/downloads.html#demos"&gt;JavaFX&lt;/a&gt; demo applications here.  For the masterclass, we examined an existing JavaFX application and explored how easy it was to declaratively modify the view of the RIA by changing the data model as well as add new features, triggers, and data bindings.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
While highly efficient Web development platforms have emerged in recent years -- such as the &lt;a href="http://web2.socialcomputingmagazine.com/ruby_on_rails_11_web_20_on_rocket_fuel.htm"&gt;rise of Ruby on Rails&lt;/a&gt; -- to show how much improvement there is to make to our often too general purpose programming environments, it's fascinating to see that the latest approaches, particularly Silverlight and JavaFX have explicit strategies that both focus on productivity-orientation as well as leveraging the vast existing sets of code, tools, and talent.  Declarative approaches are the clearly favored here too, and though procedural coding is also fully supported in ASP .NET Ajax, Silverlight, and JavaFX, much of what RIAs need in terms of design fits extremely well with the declarative model that harkens all the way back to HTML, which forms the pure Ajax duo of XHTML (declarative structure) and JavaScript (application behavior.)&lt;/p&gt;
&lt;p&gt;All in all, the state of the RIA is clearly getting ready to take a major stride forward in 2008 while the options for design Web 2.0 applications with RIA technologies continues to expand significantly.  The RIA scorecard that the inaugural class created showed there all four options have strengths in different areas with Silverlight currently taking the highest overall score.&lt;/p&gt;
&lt;p&gt;Note: For those of you that would like to hold a Web 2.0 Apps RIA Masterclass at your facility or attend one our public deliveries in 2008, &lt;a href="mailto:info@web20university.com"&gt;please contact us&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Help form a picture of the state of the RIA industry&lt;/h2&gt;
&lt;p&gt;Please take 60 seconds of your time and participate in the RIA survey below so we can get a sense of where things are going in the RIA industry.  Only participants (and the subscribers to the Hinchcliffe Advisory) will get a copy of the data, so it's worth your time, plus you can get a free subscription. Survey closes on January 31st, 2008 and the results will be issued in February.&lt;/p&gt;
&lt;p style="text-align: center;"&gt;&lt;a href="http://www.surveymonkey.com/s.aspx?sm=MFCsXmnW43O1W8jKam_2fSzA_3d_3d"&gt;&lt;img border="0" src="http://hinchcliffe.org/img/ria_survey.007.png"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src ="http://hinchcliffe.org/aggbug/16592.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Dion Hinchcliffe</dc:creator><title>Eleven Emerging Ideas for SOA Architects in 2007</title><link>http://hinchcliffe.org/archive/2007/01/20/12675.aspx</link><pubDate>Sat, 20 Jan 2007 15:29:00 GMT</pubDate><guid>http://hinchcliffe.org/archive/2007/01/20/12675.aspx</guid><wfw:comment>http://hinchcliffe.org/comments/12675.aspx</wfw:comment><comments>http://hinchcliffe.org/archive/2007/01/20/12675.aspx#Feedback</comments><slash:comments>337</slash:comments><wfw:commentRss>http://hinchcliffe.org/comments/commentRss/12675.aspx</wfw:commentRss><trackback:ping>http://hinchcliffe.org/services/trackbacks/12675.aspx</trackback:ping><description>&lt;img align="right" src="http://hinchcliffe.org/img/consumersoatrends.png"/&gt;&lt;p&gt;As I &lt;a href="http://blogs.zdnet.com/Hinchcliffe/?p=78"&gt;highlighted recently on ZDNet&lt;/a&gt;, 48% of CIOs will be looking to actually start using their SOAs to connect to external partners this year.  Unfortunately, we've been building landscapes of Web services for quite a few years now and for many, the tipping point for SOA adoption seems as elusive as ever.  While trying to understand why this is, one common explanation I offer is that the A in SOA is often missing.  When you ask server-side developers in a given organization what they are developing, they usually say Web services.  When you talk to architects in the same organization, they usually say they are building SOAs.&lt;/p&gt;
&lt;p&gt;This highlights a discernible and common disconnect between the tactical reality of delivering applications on deadline and the strategic goal of delivering carefully crafted services that are generic enough to be reusable, tested with all the technology stacks in the organization, and meet all other criteria of having well architected enterprise services.&lt;/p&gt;
&lt;p&gt;This is where the World Wide Web continues to teach us effective techniques for service consumption and adoption.  Amazon has tens of thousands of consumers of its various and sundry Web services that range from e-commerce to the compelling &lt;a href="http://aws.amazon.com/s3"&gt;S3 storage platform&lt;/a&gt;.  And they're making money doing it as well.  The &lt;a href="http://blogs.zdnet.com/Hinchcliffe/?p=74"&gt;rise of mashups&lt;/a&gt; too has shown how easily that simple, composable services can be made into workable browser-based composite applications.  All of these has given us the conception of &lt;a href="http://hinchcliffe.org/archive/2006/08/05/8489.aspx"&gt;Web-Oriented Architecture (WOA)&lt;/a&gt;, which I've been writing about here on this blog for a while now.  This is using the basic Web formats and protocols such as HTTP, XML, REST, and JSON as the "Unix Pipe of the Web" -- to quote a colorful phrase of Ray Ozzie's -- as the fundamental glue between systems.  This allows widgets, Ajax applications, and mashups to be wired together so quickly it can almost be done in real-time with the latest tools.&lt;/p&gt;
&lt;p&gt;Finally, we have Web 2.0 (&lt;a href="http://blogs.zdnet.com/Hinchcliffe/?p=71"&gt;most recent formal definition here&lt;/a&gt;), a way of leveraging the fundamental strengths of the Web to turn applications into platforms, exploit the potency of network effects, and otherwise take advantage of networks as true software platforms in their own right.  However, the rules of networked platforms are very different than the ones we are familiar with on the computing-oriented platforms we know traditionally such as operating systems like Windows, Linux, and the application stacks that sit upon them.  As it turns out, being a fundamentally communication-oriented platform, our networks impose a whole new set of rules for success that we are just now finally beginning to understand well.  Surprisingly, among these, is the recent realization embodied by &lt;a href="http://en.wikipedia.org/wiki/Reed's_law"&gt;Reed's Law&lt;/a&gt;, which states that the instrinsic value of a network is much, much higher if the network is used in a social manner.  Thus, in some important way, social networks tend to more fully leverage the value of networked applications and services.&lt;/p&gt;
&lt;p&gt;Steeped in formal standards, byzantine product stacks, and software engineering principles, these are strange ideas for SOA architects to accept, much less embrace.  Then there is the matter of usefully applying these ideas to create an effective service-oriented architecture that can be easily consumed by internal and external customers, and indeed, is &lt;em&gt;preferred&lt;/em&gt; to use instead of reinventing the wheel.  For the truth is, if the services most of us are building now were so much better than letting development projects just build it themselves, they would be beating a path to the nearest internal SOA representative to save themselves the cost and time.  And while that is happening in some cases, SOA adoption studies and anecdotal evidence tells us it's just not happening enough.&lt;/p&gt;
&lt;p&gt;So, in the spirit of lessons learned and to incorporate our most recent understanding of what works and what doesn't, I thought I'd put together a suitably provocative list of what SOA architects should be seriously thinking about in 2007:&lt;/p&gt;
&lt;h2 style="color: #1E90FF;font-size:1.7em;" align="center"&gt;&lt;strong&gt;Eleven Emerging Ideas for SOA Architects in 2007&lt;/strong&gt;&lt;/h2&gt;
&lt;ol&gt;
  &lt;li&gt;&lt;strong&gt;Making services consumable in the browser.&lt;/strong&gt;  Increasingly, the common Web browser is the place where meaningful service integration is taking place.  Because of this, building services that aren't easily consumable in the browser can be a death knell for the service because that puts its consumers in the business of building and maintaining adapters or using a Javascript &lt;a title="" href="http://www.w3.org/TR/soap/" &gt;SOAP&lt;/a&gt; stack -- if you can find one -- before the service can be used and measurable work accomplished.  Ultimately, non-browser friendliness greatly reduces possible consumption scenarios for SOAs as we'll see in some of the points below.  This doesn't' mean throw away your WS-* services.  But it does mean you should automatically offer a &lt;a title="" href="http://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm" &gt;REST&lt;/a&gt; or JSON version as well.&lt;/li&gt;&lt;p/&gt;
  &lt;li&gt;&lt;strong&gt;Considering syndication over "service-izing."&lt;/strong&gt;  The browser is an important consumption point but so too are the growing syndication ecosystems of which the blogosphere is the largest example.  More and more tools are willing to consume RSS and ATOM, often in preference to SOAP, including the forthcoming version of Vista where syndication-friendliness is a core value.  Carefully consider offering your services in RSS form or even ATOM, which has a two-way REST model.  This will further increase consumption scenarios and therefore adoption.  Content syndication is growing into a very potent force inside and outside the enterprise and plugging an SOA -- strategically or tactically -- into one of these ecosystems has terrific upside potential.  Not every SOA service can or should be converted to a syndication model, but if you aren't considering this option with each service you create, you should be; there are tens of millions of RSS feeds available today, starting from zero in the beginning of 2003.  How many SOAP services presently exist worldwide? Only a tiny, tiny fraction of this and there are &lt;a href="http://blogs.zdnet.com/Hinchcliffe/?p=27"&gt;good reasons&lt;/a&gt; for it.&lt;/li&gt;&lt;p/&gt;
   &lt;li&gt;&lt;strong&gt;Deeply embracing URI addressability.&lt;/strong&gt;  Of all the things in this list, this might be the most important one.  The hyperlink is the fundamental unit of thought on the Web and it should be in your service designs and (hopefully granular) schemas as well.  Giving each discrete piece of information, every service, and all content a globally addressable URI instantly gives a service, and the data it carries back and forth across its interface, access to countless new consumption and reuse scenarios.  The most important of these is the &lt;a href="http://web2.wsj2.com/web_20s_real_secret_sauce_network_effects.htm"&gt;leveraging of network effects&lt;/a&gt; via -- often social -- link propagation along with the ability to make all URI addressed information potentially crawlable, thereby making it transparent via search.  The possibility of letting people find your service via an intranet or Web search engine because of the great content it has might seem a little odd at first but then again, that's what makes things work so well on the Web.  You can learn about &lt;a href="http://en.wikipedia.org/wiki/Uniform_Resource_Identifier"&gt;URIs on Wikipedia&lt;/a&gt;, and they can be a SOA's best friend.&lt;/li&gt;&lt;p/&gt;
   &lt;li&gt;&lt;strong&gt;Using Ajax as the &lt;a href="http://hinchcliffe.org/archive/2005/08/18/1675.aspx"&gt;face of your SOA.&lt;/a&gt;&lt;/strong&gt;  This point emphasizes yet more service-consumption in the browser.  Why?  Because the browser model, with our newest high-speed corporate networks, fast desktops, and latest browsers, has finally becoming a very capable way of distributing software and associated updates.  No admin rights are required to run an Ajax application in the browser, no plug-ins must be distributed, and users find the experiences they offer compelling.  And the Ajax technique requires Web services into order function because an Ajax app is nothing more than a Web page brought to life by Javascript.  And if the page upon which the Ajax application resides ever reloads, the application is then forced to quit immediately.  Because of this, Ajax software has a major dependence on quality Web services while running, Ajax and SOAs can go hand in hand and potentially complement each other very well.&lt;br/&gt;&lt;br/&gt;Finally, I'll point out, as I did in item #1, one key barrier to this unified vision of browser front-end and services back-end is that many SOA services today are just not Ajax consumable. Worse, virtually none are easily consumable by emerging Flash platforms for RIAs such as Flex or OpenLaszlo without a lot of work (or cost), because these platforms have very limited XML processing capabilities such as poor namespace support.  This highlights a growing need to sort out the &lt;a href="http://webservices.sys-con.com/read/155799.htm"&gt;tolerance continuums&lt;/a&gt; that are probably too shallow in many enterprises.  Note: It's still not easy to develop Ajax apps yet, and so it's worth reading my &lt;a href="http://web2.wsj2.com/seven_things_every_software_project_needs_to_know_about_ajax.htm"&gt;Seven Things Every Software Project Needs to Know About Ajax&lt;/a&gt; for more info about the challenges of applying this fast growing Web services-powered browser application model.&lt;/li&gt;&lt;p/&gt;
  &lt;li&gt;&lt;strong&gt;Monetizing Your SOA.&lt;/strong&gt;  On the SOA projects I've been on, many of those who own the systems being opened up as services don't like the results in the short term: more customer service, additional bandwidth and hardware to support unpredictable external use, more testing, and so on.  Figuring out ways to meter usage, institute chargebacks, and even charging outright fees to external trading partners and customers allows the necessary negative feedback to discourage irresponsible or profligate use of services.  This works well on the Web and the most successful APIs online are metered in some way.&lt;/li&gt;&lt;p/&gt;
  &lt;li&gt;&lt;strong&gt;Enable users as service consumers.&lt;/strong&gt;  This also cuts across some of the items above but is best exemplified by the &lt;a href="http://blogs.zdnet.com/Hinchcliffe/?p=74"&gt;software mashup phenomenon&lt;/a&gt;, which describes a method of quickly combining two or more sources of content into a new high-value application.  For just the same reason that we have a PC on everyone's desk at work is the reason why almost everyone should be consuming the services in your SOA.  Only most users don't have access to the Microsoft Office equivalent of a tool that allows them to mashup or wire together the services you have been producing over the years. The good news is that products specifically geared at enabling the consumption of SOAs by end-users are emerging including &lt;a href="http://blogs.zdnet.com/Hinchcliffe/?p=78"&gt;IBM's QEDWiki&lt;/a&gt;, &lt;a href="http://blogs.zdnet.com/Hinchcliffe/?p=69"&gt;JackBe's Presto&lt;/a&gt;, and &lt;a href="http://blog.programmableweb.com/2007/01/17/what-are-tools-for-mashups/"&gt;many others&lt;/a&gt;.  In a few years, it's likely that end-users will be one of the largest direct consumers of your services, particularly via syndication.  Enable it and encourage it; it's just another way to make your SOA invaluable to the business and generally popular as well.&lt;/li&gt;&lt;p/&gt;
  &lt;li&gt;&lt;strong&gt;Virtualization, fast scaling, and on-demand architectures.&lt;/strong&gt;  All of the things driving down the economics of software hosting will allow your SOA to scale up to the Web.  Many enterprises view their SOAs and enterprise systems as big, but not compared to the scale of the Web, particularly if provisioning is unmediated (thousands of informal users of your APIs.)  Fast adoption is one of the worst nightmares for an SOA that is not well capacity planned and scaled.  Just like &lt;a href="http://radar.oreilly.com/archives/2006/07/cloudy_with_a_chance_of_server_1.html"&gt;operations has become a core competency&lt;/a&gt; of SaaS and Web 2.0 sites, so too is it in the highly spiky usage model of on-demand services where a &lt;a href="http://blogs.zdnet.com/Hinchcliffe/?p=54"&gt;successful network effect can cripple your availability and response times.&lt;/a&gt;&lt;/li&gt;&lt;p/&gt;
  &lt;li&gt;&lt;img align="right" src="http://hinchcliffe.org/img/usergeneratedsoftware.png"/&gt;&lt;strong&gt;Offering an SOA as visual services via widgets.&lt;/strong&gt;  The &lt;a href="http://blogs.zdnet.com/Hinchcliffe/?p=51"&gt;rise of widgets&lt;/a&gt; on the Web, making it easy for anyone to put a piece of functionality on their Web page, was a big item in 2006.  Widgets also have access to back-end infrastructure (i.e. an SOA) and are snippets of Javascript or Flash badges that allow little bits of data-driven functionality such as stock tickers, corporate news, and other information to reside in any Web page and be fed by back-end services.  This is another effective way to put a "face" on an SOA and get it used in many different completely unexpected ways.  And because just about anyone can drop a widget onto a Web page, this further unleashes all users -- instead of a few IT staffers -- to help deploy the functionality and data held within an SOA to the far reaches of an enterprise.  &lt;strong&gt;Additional note:&lt;/strong&gt; If you're not sure this will be important, check out the hundreds of services available as widgets already on &lt;a href="http://widgetbox.com"&gt;WidgetBox&lt;/a&gt;.&lt;/li&gt;&lt;p/&gt;
  &lt;li&gt;&lt;strong&gt;Considering JSON as a service option.&lt;/strong&gt;  XML is NOT very fast as I've &lt;a href="http://hinchcliffe.org/archive/2005/08/10/1540.aspx"&gt;written about&lt;/a&gt; here before, particularly if there is lots of numeric information in the network payload.  &lt;a href="http://en.wikipedia.org/wiki/Json"&gt;JSON&lt;/a&gt;, the Javascript Object Notation, has risen through the ranks quickly in the last year as a highly compact way to send information on the wire to a Web application.  Even the co-inventor of XML, the venerable Tim Bray, &lt;a href="http://www.tbray.org/ongoing/When/200x/2006/12/21/JSON"&gt;has acknowledged&lt;/a&gt; the many valid use cases of JSON in networked applications.  JSON may not be for you as an architect but your Rich Internet Application developers may very well feel the desire to place pins in your effigy as they try to figure out how to get your sophisticated XML payloads to parse quickly enough -- or in many cases -- to parse at all using the emerging Flash platforms.  JSON is fast, compact, and is supremely easy to consume in the browser via Javascript's eval() function.&lt;/li&gt;&lt;p/&gt;
  &lt;li&gt;&lt;strong&gt;Encouraging and discovering emergent solutions.&lt;/strong&gt;  Like many are discovering out on the Web, being directly connected to your customers is a completely different proposition than shipping software on a CD.  Many SOA practitioners are well aware of this of course, but even the most battle-hardened SOA practitioner would have to go aways to be aware of how extreme it's become online.  I've come to describe this tight process of co-evolution via realtime feedback, harnessing user contributions, and becoming a platform that others actually build upon something known as &lt;a href="http://web2.wsj2.com/product_development_20.htm"&gt;Product Development 2.0&lt;/a&gt;.  It's not hard to see what happens when users are tightly coupled into the systems that they use and begin using this connection to shape their needs.  Even if your corporate SOA doesn't work this way today, it can be made to fairly easily with online metrics and monitoring, though like many SOA issues, governance and control soon become significant issues.  Just remember, sites like &lt;a href="http://flickr.com"&gt;Flickr&lt;/a&gt; deploy changes to production every 30 minutes while monitoring usage and making more changes in almost continuous real-time feedback loops.  Other sites are literally letting their users shape the services available from the application itself such as Google with its &lt;a href="http://www.google.com/ig/directory?synd=open"&gt;Web Gadgets&lt;/a&gt; offering.&lt;br/&gt;&lt;br/&gt;Going further, the concept of &lt;a href="http://blogs.zdnet.com/Hinchcliffe/?p=75"&gt;Enterprise 2.0&lt;/a&gt; is the front line where much of this particular change will begin taking place in the enterprise, with freeform, social, emergent tools like blogs and wikis that are so general purpose they can used in an almost limitless number of ways.  Make no mistake; emergent application platforms are not an edge case trend and are already taking place in your organization with things like the guerrilla deployment of wikis that I'm increasingly seeing in the field.  Understanding how an SOA fits into all this (as IBM has, which has labeled their new end-user mashup tool &lt;a href="http://blogs.zdnet.com/Hinchcliffe/?p=78"&gt;QEDWiki&lt;/a&gt;, "the Face of SOA") will be essential for fully leveraging a service-oriented architecture in this environment.&lt;/li&gt;&lt;p/&gt;
  &lt;li&gt;&lt;strong&gt;Leveraging the Global SOA.&lt;/strong&gt; More and more I'm coming across impressive applications that marry the datasets contained within enterprises with the incredibly rich landscape of information out on the Web.  And they are primarily impressive because of the data brought in from the Web.  I've espoused the concept of the &lt;a href="http://web2.wsj2.com/is_web_20_the_global_soa.htm"&gt;Global SOA&lt;/a&gt;, most notably in &lt;a href="http://flickr.com/photos/dionh/76573497/"&gt;a cover story&lt;/a&gt; for the SOA Web Services Journal, that describes the Web as the richest set of services currently available to anyone, inside or outside the enterprise.  It simply no longer makes sense to have an SOA that does not have access to the Global SOA on the Web where hundreds of high-value APIs are available and millions of lesser ones in the form of RSS and ATOM.  Infoworld's David Linthicum &lt;a href="http://weblog.infoworld.com/realworldsoa/archives/2007/01/more_validation.html"&gt;had some good comments&lt;/a&gt; about the convergence of Web 2.0 and the Global SOA, and here is &lt;a href="http://www.web2journal.com/read/233612.htm"&gt;my own exposition&lt;/a&gt; with a good diagram that shows the overlap.  The challenges around the governance issues of figuring out how to bring in external services safely and provisioning them for use as part of your enterprise SOA.  Those who do this successfully can potentially garner an even great uptake on SOA usage as the number of high-value services available internally ramps up quickly.&lt;/li&gt;
&lt;/ol&gt;
Most of these items highlight a big trend this year: consumerization of the enterprise as the most effective ideas of the Web 2.0 era begin to flow into enterprises after being proven in laboratory of the Web.  There's lot of ideas here, please share your own on what you think about the directions that SOA practitioners will actually take.&lt;img src ="http://hinchcliffe.org/aggbug/12675.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Dion Hinchcliffe</dc:creator><title>A Search for REST Frameworks for Exploring WOA Patterns -- And Current Speaking Schedule</title><link>http://hinchcliffe.org/archive/2006/09/10/9275.aspx</link><pubDate>Sun, 10 Sep 2006 12:45:00 GMT</pubDate><guid>http://hinchcliffe.org/archive/2006/09/10/9275.aspx</guid><wfw:comment>http://hinchcliffe.org/comments/9275.aspx</wfw:comment><comments>http://hinchcliffe.org/archive/2006/09/10/9275.aspx#Feedback</comments><slash:comments>150</slash:comments><wfw:commentRss>http://hinchcliffe.org/comments/commentRss/9275.aspx</wfw:commentRss><trackback:ping>http://hinchcliffe.org/services/trackbacks/9275.aspx</trackback:ping><description>&lt;p&gt;&lt;a href="http://blogs.zdnet.com/Hinchcliffe/?p=28"&gt;&lt;img style="padding: 2px;" border="0" align="right" src="http://hinchcliffe.org/img/onlinewebcomponents.jpg"/&gt;&lt;/a&gt;The common patterns for assembling large systems out of smaller systems have been well documented in recent years, with one of the very best examples being Gregor Hohpe's &lt;a href="http://eaipatterns.com/"&gt;Enterprise Integration Patterns.&lt;/a&gt;  But as Web sites grow in size and scale -- my favorite quote here being Dare Obasanjo's "&lt;a href="http://www.25hoursaday.com/weblog/PermaLink.aspx?guid=29b15dde-1c17-4c48-b29d-0104ffefb423"&gt;My Website is Bigger Than Your Enterprise&lt;/a&gt;" -- we're increasingly seeing a push both in the direction of "Web-ness" as well as a preference for radical simplicity in messaging patterns (REST instead of &lt;a title="" href="http://www.w3.org/TR/soap/" &gt;SOAP&lt;/a&gt;/WS-*).  That doesn't necessarily mean that the grids, server farms, and new &lt;a href="http://www.azulsystems.com/products/compute_appliance.htm"&gt;384 processor core "superservers"&lt;/a&gt; are neccessarily getting any easier to take advantage of or manage.  But we &lt;em&gt;are&lt;/em&gt; finally learning how to build systems that are broadly consumable by the limitless variety of the Web's populace, as well as &lt;a href="http://blogs.zdnet.com/Hinchcliffe/?p=54"&gt;scale on-demand&lt;/a&gt; and perform better across the board.&lt;/p&gt;
&lt;p&gt;Service-oriented architecture has become the end-game for designing and integrating systems-of-systems within the enterprise.  This model as most people know it usually involves SOAP with one or more of the &lt;a href="http://hinchcliffe.org/archive/2005/04/05/192.aspx"&gt;many, many WS-* protocols&lt;/a&gt; added to it.  However, as we look at bigger and more complex integration scenarios on the Web, this model doesn't seem to be quite as popular or effective.  The advent of Rich Internet Applications (RIAs) such as Ajax, Flex, OpenLaszlo, Avalon, and so on, doesn't favor it too much either, since &lt;a title="" href="http://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm" &gt;REST&lt;/a&gt; tends to be the most consumable Web service type in RIAs by a good margin.  And the browser, the preferred application delivery model these days, doesn't speak SOAP at all without serious help, never mind WS-*.  I've &lt;a href="http://web2.wsj2.com/is_web_20_the_global_soa.htm"&gt;often quoted the statistic&lt;/a&gt; that 80% of all software development should be based on SOA by 2008.  If true, this means we clearly have important trends in opposition.  What is a software architect to do?&lt;/p&gt;
&lt;p&gt;The issue seems to be one that has plagued us in the software business for decades; namely a seemingly incessant urge to predefine all of our solutions before we're even sure what the problem is.  The principles of &lt;a href="http://blogs.zdnet.com/Hinchcliffe/?p=15"&gt;agile software development&lt;/a&gt; tell us that we won't understand the problem until we're done developing the software, and that to attempt to design too much up front will result in software (and by extension, standards) that have the &lt;em&gt;wrong features&lt;/em&gt;.  What this means for the heavyweight standards business is left for the reader, but I'll quote here Groove's George Moromisato when he says that "the chance of any standard being adopted is inversely propotion to its complexity. " Consequently SOAP, and some of the other Web service protocols developed &lt;a href="http://blogs.zdnet.com/Hinchcliffe/?p=43"&gt;early on&lt;/a&gt; in the history the Web, seems to suffer from this very problem.&lt;/p&gt;
&lt;p&gt;Enter the growing trend of &lt;a href="http://blogs.zdnet.com/Hinchcliffe/?p=27"&gt;Web-Oriented Architecture (WOA)&lt;/a&gt;, an approach to Web services architecture that is, if anything, underprescribed, loose, and therefore very situationally adaptable. WOA has a tolerant, resilient, but steel-reinforced core based on the fundamental protocols of the Web (HTTP, XML, and URI.)  And the big advantage of all this is the following: almost certainly the highest levels of interoperability, scalability, and consumability.  The latter refers to the fact that REST-based architecture can be used in many more places and many in more ways than traditional SOAs can.&lt;/p&gt;
&lt;p&gt;The issue with REST and WOA however continues to be a lack of good description for the lay programmer.  Advocates of traditional SOA can point to many well-defined standards documents, descriptions, and reference models.  REST and WOA don't have many of those things, each being more of a "style" instead of a standard.  Yet, REST and WOA don't go farther than their underlying standards allow and have a malleability and range of motion that over-specified approaches can't possibly match.  Unfortunately, Roy Fieldings classic description of REST in &lt;a href="http://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm"&gt;Chapter 5 of his dissertion&lt;/a&gt; remains impenetrable to the vast majority of developers, though I'm personally working on a couple of projects that might help resolve that.&lt;/p&gt;
&lt;h2&gt;A quest for REST frameworks to explore WOA&lt;/h2&gt;
&lt;p&gt;While Nick Gall excellently &lt;a href="http://ironick.typepad.com/ironick/2006/08/sam_ruby_thinks.html"&gt;brought us&lt;/a&gt; the vision and concept of WOA, I'm currently focusing on articulating the concept of WOA client patterns, or the best ways to build well-behaved clients in Web-Oriented Architectures.  I talk frequently to folks building large systems out on the Web and I've been noticing recurring problems and solutions when they build well-defined, resilient clients that work effectively in the chaotic, unpredictable environment of the Web.  From this, I've tried carefully to collect some of the core patterns together and place them into a handful of high level buckets which I've coined &lt;a href="http://hinchcliffe.org/archive/2006/08/05/8489.aspx"&gt;WOA/Client&lt;/a&gt; and &lt;a href="http://architecturejournal.net/2006/issue8/F5_Patterns/"&gt;published recently&lt;/a&gt; in The Architecture Journal.&lt;/p&gt;&lt;p&gt;Since then, I've slowly begun describing the interior of each pattern.  As I do this, I've been attempting to build capable RESTful services that I can create simple, useful reference models for others to see these patterns in action.  Surprisingly, I'm still finding that while tooling for REST continues to improve, there still isn't as much out there as I'd like to see.  And though fortunately, REST generally doesn't require much to implement, I'm especially looking for that Ruby on Rails-style of simplicity for connecting the service directly to a data-driven source of information.  And as you will see below, that's fortunately where we're starting to see some particularly good news.&lt;/p&gt;
&lt;h2&gt;Some REST frameworks and approaches&lt;/h2&gt;
While there are &lt;a href="http://web2.wsj2.com/creating_open_service_apisthat_last_and_anyone_can_use.htm"&gt;dozens of well-known methods&lt;/a&gt; for connecting distributed systems together, protocols based on HTTP will be the ones that stand the test of time.  And since HTTP is the fundamental protocol of the Web, those protocols most closely aligned with its essential nature will likely be the most successful.  So WOA describes architectures based on HTTP, and WOA/Client is the best practices on the client side for participating in a WOA (&lt;em&gt;disclaimer:&lt;/em&gt; this latter part is the result of my personal research and is nothing 'official.')  In that vein, I've been building REST services to host on this site to demonstrate the power and efficacy of simple, contract-based Web clients that pull data from multiple sources, weave them together into useful forms, and then distribute updates and changes back to their source services.  This will be a &lt;em&gt;very&lt;/em&gt; common model of service consumption in the near future, particulary in the browser, and the world of &lt;a href="http://blogs.zdnet.com/Hinchcliffe/?p=49"&gt;mashups&lt;/a&gt; is the most clear example of this in the 'wild.'&lt;p&gt;
&lt;p&gt;&lt;a href="http://restlet.org"&gt;&lt;img border="0" align="left" src="http://hinchcliffe.org/img/restlet.gif"/&gt;&lt;/a&gt;While I host this site on .NET primarily because SOAP based services are so easy to implement in .NET, it's clear that the open source and Java communities have considerably richer support for REST today.  The most advanced framework for REST that I've been able to find is Jerome Louvel's deep and powerful &lt;a title="Java" href="http://java.sun.com" &gt;Java&lt;/a&gt;-based &lt;a href="http://www.restlet.org/"&gt;Restlet framework&lt;/a&gt;, available under the CDDL license.  It provides full support for REST-based resources, representations, connectors, filters, and routers and also offers excellent examples of REST architectures in the well-written and detailed &lt;a href="http://www.restlet.org/tutorial"&gt;tutorial&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://sourceforge.net/projects/rest-art"&gt;&lt;img border="0" align="right" src="http://hinchcliffe.org/img/REST-art.PNG"/&gt;&lt;/a&gt;At the other end of the spectrum is &lt;a href="http://sourceforge.net/projects/rest-art"&gt;REST-art&lt;/a&gt;, a simple and admittedly early-release of a basic, straightforward REST-enabling framework.  Currently listed at the top of Sourceforge's project search for REST, REST-art was created by Thibault Ducray, who says "&lt;em&gt;REST-art is a Java library (jar) based on the REST principles (services uses URIs, XML data, http verbs GET, POST, PUT, DELETE). It gives the ability to develop Web Services without using huge (and sometime commercial) SOAP frameworks.&lt;/em&gt;"&lt;/p&gt;
&lt;p&gt;&lt;a href="http://sourceforge.net/projects/cweb"&gt;&lt;img border="0" align="left" src="http://hinchcliffe.org/img/cognitiveweb.png"/&gt;&lt;/a&gt;Another sophisticated RESTful framework is the &lt;a title="SourgeForge" href="http://www.sourceforge.org" &gt;SourceForge&lt;/a&gt; project &lt;a href="http://sourceforge.net/projects/cweb"&gt;Cognitive Web&lt;/a&gt;, which has seemingly advanced capabilities that go well beyond the basics of REST and WOA.  The home page of the Cognitive Web says that the project is a, "&lt;em&gt;framework for building, deploying and managing well-described REST-ful Web services, including REST-ful Web Services realizations for RSS, XML Topic Maps, Structured Arguments, and Workflow.&lt;/em&gt;"&lt;/p&gt;
&lt;p&gt;But one of the most interesting REST frameworks I've seen is &lt;a href="http://sqlrest.sourceforge.net/"&gt;sqlREST&lt;/a&gt;, an easy-to-use framework that allows a set of relational database tables to be exposed as REST-compliant Web services.  While not a production-ready release, it's the concept of sqlREST that is the most interesting; an automatic mapping of database information in relational format to an interactive view of the same data in XML/HTTP format, REST-style.  As data-driven Web applications become more and more common, having an easy way to turn your Web application into an open platform will be a useful (&lt;a href="http://web2.wsj2.com/creating_web_20_applications_seven_ways_to_fully_embrace_the.htm"&gt;and essential&lt;/a&gt;) technique for growth.  sqlREST makes this possible with little development effort.&lt;/p&gt;
&lt;p&gt;Finally, Matt Biddulph did a terrific job last November &lt;a href="http://www.xml.com/pub/a/2005/11/02/rest-on-rails.html"&gt;writing up how&lt;/a&gt; Ruby on Rails can be used to quickly and effectively build REST services with Rails using the built-in REXML facility.  Ruby on Rails is famously known for &lt;a href="http://web2.wsj2.com/ruby_on_rails_11_web_20_on_rocket_fuel.htm"&gt;reducing abstraction impedance across the board&lt;/a&gt;, and Matt's tutorial reminds us again how useful Rails is for making routine, yet normally complicated, programming tasks easy, at least once you learn the Rails way.&lt;/p&gt;
&lt;p align="center"&gt;&lt;a href="http://webservices.sys-con.com/read/233612.htm"&gt;&lt;img border="0" src="http://hinchcliffe.org/img/soaweb20convergence.jpg"/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;Speaking Schedule on Web 2.0, SOA, and WOA&lt;/h2&gt;
&lt;p&gt;I cover all this material, and a lot more, in my talks on the next generation of Web, IT, and business.  While a few of my presentations are very technical and will cover the intricacies of &lt;a href="http://web2.wsj2.com/continuing_an_industry_discussion_the_coevolution_of_soa_and.htm"&gt;SOA/Web 2.0 co-evolution&lt;/a&gt; or how to build &lt;a href="http://web2.wsj2.com/ajax_behaving_badly_and_other_misconceptions.htm"&gt;scalable Ajax&lt;/a&gt; applications using WOA, I also talk about how the latest trends and service models on the Web are changing the way we work, live, and otherwise interact with each other.  If you're going to any of these events, please be sure to stop me and introduce yourself.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;"21st Century Professional and Civil Society" Conference - Dallas, Texas&lt;/strong&gt; - &lt;em&gt;Saturday, September 16th, 2006&lt;/em&gt; -  I'll be speaking on the role of Web 2.0 trends and technologies and how they will affect professional and civic life in the 21st century.  As well as covering the basic of Web 2.0 and moderating a panel, I'll be covering the innovative application of Web 2.0  platforms such as blogs and wikis to document important events like the genocide in Darfur to the &lt;a href="http://web2.wsj2.com/finding_the_real_web_20.htm"&gt;great story&lt;/a&gt; of  the use of emergent collaboration on the Web to locate one hundred thousand Hurricane Katrina survivors in a short few days.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://interop.com/newyork"&gt;&lt;img style="padding: 4px;" border="0" align="right" src="http://hinchcliffe.org/img/interop.png"/&gt;&lt;/a&gt;&lt;strong&gt;&lt;a href="http://interop.com/newyork"&gt;Interop New York 2006&lt;/a&gt; - New York City, New York&lt;/strong&gt; - &lt;em&gt;Tuesday, September 19th, 2006&lt;/em&gt; - I'll be giving one of my usual Web 2.0 in the enterprise presentations, which are invariably pretty popular.  The session description says: "&lt;em&gt;From a buzzword last year, to the thematic rallying cry of 700+ startups this year, and now apparently heading for mainstream adoption, Web 2.0 is the topic du jour for the consumers and businesses both. This session attempts to demystify the trend with practical description and examples along with a succinct explanation of Web 2.0. The second half explores how Web 2.0 is being used by companies in various ways to improve internal productivity and innovation, not to mention how to involve customers and reinvent the concept of customer service and marketing.&lt;/em&gt;"&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.thenewnewinternet.com/conference/refer/refer/Web2"&gt;&lt;img style="padding: 4px;" border="0" align="right" src="http://hinchcliffeandcompany.com/img/tnnismall.png"/&gt;&lt;/a&gt;&lt;strong&gt;&lt;a href="http://www.thenewnewinternet.com/conference/refer/refer/Web2"&gt;The New New Internet&lt;/a&gt; - Tyson's Corner, Virginia &lt;/strong&gt; - &lt;em&gt;Tuesday, September 20th, 2006&lt;/em&gt; - I'll be moderating some panels for this Web 2.0 conference which I'm helping organize in the Washington, DC area.  We have Michael Arrington's TechCrunch, Harvard Business School's Andrew McAfee (of &lt;a href="http://blogs.zdnet.com/Hinchcliffe/?p=57"&gt;Enterprise 2.0&lt;/a&gt; fame), &lt;a href="http://blogs.technet.com/michael_platt/"&gt;Michael Platt&lt;/a&gt; from Microsoft's Architecture Strategy Group and a bunch of other great speakers.  I do hope to see you there, it'll be the first major Web 2.0 in the enterprise conference on the East Coast and at the tony Ritz-Carton right in middle of the Silicon Beltway.&lt;/il&gt;
&lt;li&gt;&lt;img border="0" align="right" style="padding: 4px;" src="http://hinchcliffe.org/img/cips.png"/&gt;&lt;strong&gt;&lt;a href="http://www.cips.ca/news/national/news.asp?aID=2301"&gt;CIPS (Canadian Information Processing Society) Winnipeg ‘06/’07 Kick-Off Dinner&lt;/a&gt; - Winnipeg, Canada&lt;/strong&gt; - &lt;em&gt;Wednesday, September 21st, 2006&lt;/em&gt; -  I'll be the evening's speaker and the subject will be Social Computing, a topic about how the widespread use of Web 2.0 technologies tends to create long term changes in the societies that apply them, particularly a shift from push to pull-based models for management and self-organization.  Fascinating stuff.  This is a topic I've covered quite a bit in recent months including most notably on &lt;a href="http://blogs.zdnet.com/Hinchcliffe/index.php?p=21"&gt;ZDNet&lt;/a&gt;, where it was Slashdotted, and at the &lt;a href="http://web2.wsj2.com/the_webpowered_control_shift_social_computing.htm"&gt;SOA Web Services Journal&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://hinchcliffeandcompany.com/ajaxworlduniversity.html"&gt;&lt;img style="padding: 4px;" border="0" align="right" src="http://hinchcliffeandcompany.com/img/bootcampsmall.png"/&gt;&lt;/a&gt;&lt;strong&gt;&lt;a href="http://hinchcliffeandcompany.com/ajaxworlduniversity.html"&gt;AjaxWorld University Bootcamp&lt;/a&gt; - Santa Clara, California&lt;/strong&gt; - &lt;em&gt;Monday, October 2nd, 2006&lt;/em&gt; - I'll be leading up an all-day, high-intensity bootcamp on how to build "addictive" Ajax applications using the latest frameworks and design patterns.  We'll cover Dojo, Prototype, Script.aculo.us, as well as learn how to design irresistible user interfaces with concepts inspired by Kathy Sierra's Addictive User Experiences material.  It will be the fastest way to learn Ajax best practices you can find anywhere. I hope to see you there.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://ajaxworldexpo.com"&gt;&lt;img style="padding: 4px;" border="0" align="right" src="http://hinchcliffe.org/img/ajaxworldexpo.png"/&gt;&lt;/a&gt;&lt;strong&gt;&lt;a href="http://ajaxworldexpo.com"&gt;AjaxWorld Conference and Expo&lt;/a&gt; - Santa Clara, California&lt;/strong&gt; - &lt;em&gt;Tue.-Wed, October 3rd-4th, 2006&lt;/em&gt; - Not only will the top 70 or so folks in Ajax and RIAs be there but a mini-conference on Ruby on Rails and Flex will be on site too.  The list of well-known folks speaking is amazing and combined with the bootcamp above, should be the biggest Ajax event of the year.  Disclaimer: I'm the conference chair of AjaxWorld this year.  I'll also be speaking at a session titled Leveraging the Web 2.0 Movement.  Description: "The emerging Web 2.0 movement is emphasizing the same things as SOA -- which is rapidly emerging as the best practice for building services, reusing IT assets, and providing open access to data and functionality. Web 2.0 and SOA are in fact beginning to converge. Web 2.0 describes the Internet as a "&lt;a href="http://web2journal.com/read/164532.htm"&gt;Global SOA&lt;/a&gt;" while at the same time laying out practices for building lighter weight SOAs based on REST and RSS. Furthermore, Web 2.0 and online services are expected to become the dominant application model with behemoths like Microsoft and Google fighting for dominance. More interestingly, this phenomenon is actually happening now and helping businesses deliver more value to their customers every day. This fact-filled session will discuss the latest trends citing industry sources, case studies, and other well-known examples."&lt;/li&gt;
&lt;li&gt;&lt;a href="http://office20con.com"&gt;&lt;img style="padding: 4px;" border="0" align="right" src="http://hinchcliffe.org/img/office20con.png"/&gt;&lt;/a&gt;&lt;strong&gt;&lt;a href="http://office20con.com"&gt;Office 2.0 Conference&lt;/a&gt; - San Francisco, California&lt;/strong&gt; - &lt;em&gt;Tuesday, October 12th, 2006&lt;/em&gt; - Ismael Ghalimi has organized a terrific conference with a leading cast of speakers on the topic of the next generation of Web-based business software.  Ismael calls this concept &lt;a href="http://itredux.com/blog/office-20/"&gt;Office 2.0&lt;/a&gt; and it's rife with important SaaS, Ajax, and Web-based implications for the software business.  I'll be moderating a panel on Tuesday morning titled &lt;em&gt;Making Office 2.0 Enterprise Ready.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;That's it for now, expect some more WOA/Client patterns soon, particularly a rigorous exploration of contract checking with a sample REST service, instead of the SOAP one we did last time.  I'll also be updating my publishing schedule soon; we have some exciting material on SOA/Web 2.0 converence as well as REST coming in a couple of months as well.&lt;/p&gt;&lt;img src ="http://hinchcliffe.org/aggbug/9275.aspx" width = "1" height = "1" /&gt;</description></item></channel></rss>