Monday, October 26, 2009

SOA Manifesto

I've just gotten through reading the SOA Manifesto and reactions from (among others) Jim Webber and Stefan Tilkov and I can't help feeling the whole thing is a missed opportunity.

In particular you'll notice is that the manifesto doesn't deal with the "what is a service" issue and so fails to deal with the Service Oriented Ambiguity issue. Although Martin Fowler covers multiple ways of viewing services in his post I think two are probably most relevant when considering the manifesto:

  1. Business Level SOA (B-SOA) - Services for business capabilities/functions (think Strategic Design in DDD, Enterprise SOA). This approach focuses on bringing IT and the business together and in my view should lead to large and loosely coupled autonomous services.
  2. Technical Level SOA (T-SOA) - Services here are the individual endpoints. These end-points could be Web Services (RPC/WS-*), they could be resources (REST), they could be messaging endpoints, or they could be something else.Each B-SOA service exposes one or more T-SOA services.

Stefan Tilkov has a good blog entry about the two which is worth a read, and with these two types of SOA in mind its worth looking at the values in the manifesto to see how each apply in each context (context is king).

Values In Context

Whether considering T-SOA or B-SOA I agree with the first and last values, favouring business value and evolutionary refinement are difficult to argue with. Intrinsic interoperability also makes sense in either case, especially as it is so vague, which leaves us with three other values:

  1. Strategic goals over project-specific benefits - At the B-SOA level this is certainly true but at the T-SOA level its a tradeoff as Stefan points out.
  2. Shared services over specific-purpose implementations - From a T-SOA angle this could be taken to refer to the argument that you should design your endpoints to be reusable in different contexts, such as when you go for an entity service based approach. However there are arguments against too much premature focus on reuse and use is far more important than reuse. I also think that reuse becomes less key if you view each T-SOA service as being within the context of a B-SOA service. In addition I'm not really sure what this value means when considering the B-SOA services themselves, probably not much.
  3. Flexibility over optimization - This one is very vague. You could read it about designing your T-SOA services to handle real variations in behaviour/data (patterns like Workflodize come to mind) and if so it is obviously entirely valid. However I think this is coming back to reuse again, specifically designing each T-SOA service to support reuse by making them more general purpose/agnostic. In addition at the T-SOA level optimisation does have to be considered because it is at this level that QOS becomes a consideration, but in many cases considering optimizations of individual T-SOA services won't involved sacrificing flexibility. So I'm not sure how to take this one, in addition I'm unclear as to what this statement means in terms of B-SOA, again probably not much.

So although I can nod my head to most of the points in the manifesto someone with a completely different views on SOA could do exactly the same, and even if we did have the same views we'd need to be clear which type of SOA we were considering when thinking about the manifesto.

That's is a pity and I can't help feeling that maybe Martin Fowler had it right in 2005:

So what do we do? For a start we have to remember all the time about how many different (and mostly incompatible) ideas fall under the SOA camp. These do need to be properly described (and named) independently of SOA. I think SOA has turned into a semantics-free concept that can join 'components' and 'architecture'. It's beyond saving - so the concrete ideas that do have some substance need to get an independent life.

With this in mind I actually think that Steve Jones could be right, the term SOA is overloaded and too often used just for T-SOA so maybe its time to separate out the notion of B-SOA completely by using a term like Business Service Architecture.

Share This - Digg It Save to del.icio.us Stumble It! Kick It DZone

Tuesday, September 22, 2009

RESTful Web Services Cookbook - Review of Rough Cut

I've just finished reading the rough cut of RESTful Web Services Cookbook by Subbu Allamaraju and Mike Amundsen and thought I'd write a very quick review.

Ultimately the book fills a gap in the market by providing practical advice on designing high quality HTTP/REST solutions and I found the recipe approach really accessible.

Its also an easy read so if you've been toying with REST but haven't found it very easy to get your head around then I'd definitely recommend having a look. I know that when I started learning REST I wasted large amounts of time reading unhelpful and downright misleading content so its good to have a book that should help you avoid falling into any obvious traps.

In summary, highly recommended.

Share This - Digg It Save to del.icio.us Stumble It! Kick It DZone

Saturday, September 12, 2009

WCF and REST

I'm on a project that was using WCF and we've managed to make the transition to using REST (well, to be honest so far its just POX).

REST is a joy and I really find it such a pleasant experience compared to RPC let alone WS-*.

However WCF and REST just are not good bed fellows. Some of the problems are that it doesn't support linking out of the box, content negotiation isn't there, no support for common HTTP/REST patterns, it limits the design/granularity of your resource handlers (think MVC controllers), and the REST starter kit (at least when I looked at it) was appalling.

There are also lots of annoyances that you only discover when you come to use it and unfortunately, as Seb discovered when he developed our REST framework on top of WCF, WCF lacks some key extension points meaning you end up having an extremely painful time getting the functionally you need.

The point of this post isn't to beat up on WCF, its just to make you aware of the issues. If all you want to be able to do is a bit of simple CRUD then you might find WCF to be a good solution, however just be aware that it isn't designed to scale out to handle more interesting problems or more RESTful solutions.

On the bright side the WCF team did contact me and Seb and we did give feedback which apparently will feed into a release post-WCF 4. My feeling is that if they don't make massive improvements then WCF will lose out on the REST battle, especially as there are some great REST frameworks appearing in .NET-land.

Share This - Digg It Save to del.icio.us Stumble It! Kick It DZone

Saturday, July 11, 2009

E-VAN Blog and Videos

Jan has already posted about it but we have a new E-VAN blog which includes links to the recording of the excellent presentation Alan Dean gave on REST and a link to the next one that Ian Robinson and Jim Webber are giving (please submit questions/topics for this one, it's going to be superb).

Share This - Digg It Save to del.icio.us Stumble It! Kick It DZone

Wednesday, June 24, 2009

E-VAN - Alan Dean talking on REST (6th July 2009)

First off if you didn't watch Udi Dahan talk on the SOA then you missed a treat, a real pro speaking on a topic that he and a very few others in the .NET space are way ahead of the rest of us on. Brilliant stuff and the video is now online at Vimeo.

Next E-VAN

We've also now planned the next couple of E-VANs which will focus on REST, the first will be with Alan Dean where he will cover facts and fallacies related to REST.

Alan is a real authority on REST and he's got a great talk ready so this is a great chance to find out more about REST. In addition if you have any particular questions for Alan, or topics you'd like to discuss in detail, then you can add them to the existing topic on the google group.

Start Time on Monday July 06 (7:00PM GMT)

In France/Germany/Belgium: 9:00PM
In UK is: 8:00PM
EST in the US is: 3:00PM (EST)
PST in the US is: 12:00PM (Midday)

The session will last around 90 minutes and on timings see this world clock site or more information.

Attendee URL

http://snipr.com/virtualaltnet (Live Meeting)

Future E-VANs

Stefan Tilkov has kindly agreed to do another E-VAN one on REST at the start of August. In addition we are going to see if we can organize another one for mid-July, creating a bit of a REST theme for the next month or so which we hope you'll enjoy.

We've also got a couple of people in mind that we want to get on looking further into August and beyond, more to come on that once myself and Jan contact the people :P

Feedback - Tell us how to do better

So far I think the E-VAN is going well, great people talking about interesting topics. Live Meeting has been a bit flaky and time zones are a pain but other than that I'm pretty happy with it.

However we want to know where you guys think things can improve so if you get a chance we'd be interested in hearing your feedback using the new google group. I'm interested to see if we can get more open discussions going and to explore whether an online book club is a good idea...

Share This - Digg It Save to del.icio.us Stumble It! Kick It DZone

Sunday, May 24, 2009

Book Review - SOA Patterns (First 5 Chapters)

I'll cut straight to the chase, I definitely recommend SOA Patterns to anyone interested in SOA.

Even though its currently only available in MEAP, and is a bit rough and ready, and isn't complete, it's still great stuff and well worth your time.

Now I've said that I'll give a quick run through. Essentially the author, Arnon Rotem-Gal-Oz, has decided to focus on the practical aspects of SOA and in particular with a focus on the software architecture aspects of SOA. It thus doesn't cover the business aspects of SOA, which is fine with me as those topics are covered elsewhere.

With that tight focus in mind Arnon has already managed to pack in a range of very interesting and valuable patterns. Each pattern includes the problem, solution, technology mapping and quality attributes. There is already the feeling of a pattern language about it which I think will evolve as later chapters are added, this should allow you to describe a complex system with just a few high level patterns or to dig into more detail by discussing the lower level patterns they compose.

You can actually read a few of the patterns online, see the linked PDFs and also the Blogjecting Watchdog pattern, and the anti-pattern called The Knot is also worth a read.

In addition Jan has posted a review of the book.

Share This - Digg It Save to del.icio.us Stumble It! Kick It DZone

Sunday, May 17, 2009

Next Europe VAN - 1st June 2009 - Questions for Udi Dahan

Udi Dahan has been kind enough to agree to do the next Europe VAN and suggested that we all put forward our questions for him to answer.

Its a great chance to ask him about DDD/SOA/CQS/messaging/NServiceBus, or any other topic, so if you have any questions post them here or on the associated thread on the DDD/ALT.NET forums.

Jan and I will aggregate the questions on the 25th May (after adding our own!) and then submit them to Udi so make sure you've submitted yours before then. Just to confirm, you need to get your questions to us no later than Monday the 25th May or we'll ignore them.

Details

Here's the details of the live meeting:

Start Time: Monday, June 01, 2009 07:00 PM GMT

End Time: Monday, June 01, 2009 08:30 PM GMT

Attendee URL: http://snipr.com/virtualaltnet (Live Meeting)

Calendar

This meeting should also be in the VAN Calendar, this allows Google calendar users to get a reminder before the big event.

Share This - Digg It Save to del.icio.us Stumble It! Kick It DZone

Sunday, May 10, 2009

Book Review - RESTful .NET

Since we are using REST on top of WCF on my current project I was glad to see that this book had been written as I was hoping it would answer some questions I had.

However my first issue with this book was the title. As I say we're using WCF but WCF isn't the only way to implement REST in .NET, however the book does not take the time to evaluate alternatives (including building RESTful applications on top of ASP.NET MVC) so RESTful WCF would have been a more accurate title.

In fact if we wanted to truly represent the books focus I think we would call it WCF REST because the primary focus is on WCF. There was a lot of WCF detail in here, starting from chapter 2, and personally I found some if quite boring especially where the author has chosen to put in property listings of some key WCF classes. I just don't find that sort of content all that useful and I'd have expected a lot of it to be in an appendix at best.

However the WCF focus has some other implications. Take HATEOS which is an important part of REST, my company has been lucky enough to have Sebastien Lambla and Alan Dean in our office and both emphasized its importance. However there is almost no discussion of it in the book, and the reason for this becomes clear on page 246 where the author states that although hypermedia is important in REST it isn't covered in the book because WCF has poor support for it. As I say we're using WCF so I knew that WCF's support for links in normal representations was non-existent, but I do consider it a flaw of the book and in my view the author would have been better stating this big problem up-front or tried to add framework to make linking a lot easier (something Seb did for us).

Strangely the author actually states that he actually avoids discussing custom infrastructure code because it takes away from learning about the technology (page 97). Personally I would prefer the book if had a focus on REST and how to get the advantages of REST using WCF, low level WCF plumbing/architecture is a necessary evil not something I want to read much about and more importantly if we need extra framework then I'd like to see it discussed.

I also thought it was doubly odd that chapter 9 discussed "Using Workflow to Deliver REST Services", all centred around Windows Workflow, when to me when I see the words workflow in a REST book I'm again thinking of HATEOS (the RESTbucks example at InfoQ shows this approach brilliantly and will form part of a rival book).

Before wrapping up I also wanted to identify one bit of the book where the advice is very questionable. Chapter 10 is called "Consuming RESTful XML Services Using WCF" and one approach described is to take the interface attributed with ServiceContract and use it client side. Just to be clear we're talking about making class like channel.CreateAuthority(authority) and then letting WCF work out what HTTP request to make. You won't want to be doing that.

Anyway I personally wouldn't recommend this to anyone wanting to learn about REST, instead I'd recommend (for now) RESTful Web Services. If however you are using WCF and REST, and feel you already understand REST, then this book will give you some insight into support for REST in WCF.

Share This - Digg It Save to del.icio.us Stumble It! Kick It DZone

Wednesday, May 06, 2009

E-VAN Videos Reminder

Just to remind people that Jan has put the videos for the first two E-VAN presentations online:

http://www.vimeo.com/user1286822

Mark Nijhof's excellent presentation on FubuMVC will be up as soon as its available and we'll announce the next presentation as soon as we organize it :P

Share This - Digg It Save to del.icio.us Stumble It! Kick It DZone

Sunday, February 15, 2009

Next Europe VAN - 25th February 2009

After a bit of discussion Jan and I have decided that for now it seems to make sense to run the Europe VAN every two weeks, we have discussed having more open discussions on alternate weeks but we'll have to see if there is an appetite for that.

Seb has agreed to do the next one on REST and his OpenRasta framework.

Start Time: Wednesday Feb 25, 2009 7:00 PM GMT

End Time: Wednesday, Feb 25, 2009 09:00 PM GMT

Attendee URL: http://snipr.com/virtualaltnet (Live Meeting)  

Share This - Digg It Save to del.icio.us Stumble It! Kick It DZone

Monday, February 09, 2009

Europe VAN - DDD with Greg Young (9th Feb)

The delayed first E-VAN is on now with Greg Young, discussing DDD and CQS. The URL is: http://snipr.com/virtualaltnet (Live Meeting).

NOTE: This one was a success and Greg did a superb job explaining DDD and messaging, really enjoyable stuff.

Share This - Digg It Save to del.icio.us Stumble It! Kick It DZone

Sunday, February 08, 2009

P&P Guidance - Positive Progress

I put up a post a while back about the P&P REST guidance which I considered to be quite flawed. The reaction from the P&P team was superb and Greg Young, Sebastien Lambla and myself immediately got involved in an e-mail exchange with them regarding this and other guidance.

They've shown they are incredibly open to feedback and we're still involved in this exchange but it looks like the result may be changes to the existing article and/or new articles.

One thing I hadn't realized before this started is that P&P actually have three different sites:

  1. Guide – http://www.codeplex.com/AppArchGuide
  2. Knowledge Base – http://www.codeplex.com/AppArch
  3. Community Site – http://www.codeplex.com/AppArchContrib

The community site is quite open so even if our examples use open source frameworks they can still be published on it. I'm therefore planning on writing one example using WCF, NHibernate and Castle where the two primary areas covered will be:

  1. REST - Although the current example says its using REST I think this is arguable.
  2. Domain Model - I'll be using DDD patterns but I've tried to explain that DDD isn't always appropriate (e.g. if you don't have access to domain experts). Regardless I'm obviously a big fan of object-oriented domain models and the barrier to entry is so low with modern ORM's that I think its a no-brainer to use one in the example.

I'm not saying I've chosen the best technologies, in particular using WCF is highly questionable, but since I'm not trying to say this is the "best" way to do things I'm comfortable with the choices especially as I'd expect other guidance to be given over other approaches (perhaps using an MVC style approach).

Share This - Digg It Save to del.icio.us Stumble It! Kick It DZone

Monday, February 02, 2009

First Europe VAN

The first Europe VAN went off without a hitch and was an amazing success. Ha, yeah sorry about that.

Good news is next one is BOUND to be better and we are trying again very soon. Next time we'll come armed with a backup plan too, possibly involving one us loading up the Dark Knight DVD so we can all watch it for an hour or two.

Share This - Digg It Save to del.icio.us Stumble It! Kick It DZone

Sunday, February 01, 2009

First Europe VAN

Just a reminder that the first Europe VAN is tomorrow:

Start Time: Monday, Feb 02, 2009 7:00 PM GMT

End Time: Monday, Feb 02, 2009 09:00 PM GMT

Attendee URL: http://snipr.com/virtualaltnet (Live Meeting)

Greg Young has been kind enough to agree to speak and I'm hopeful it'll go well as we've had a couple of dry runs so it's looking good, even if I was perturbed to found out Jan speaks better English than me.

Share This - Digg It Save to del.icio.us Stumble It! Kick It DZone

Thursday, January 22, 2009

P&P - Web Service with REST Application Pattern

It was interesting that all the fuss over Oxite had a positive impact. Unfortunately Microsoft are also now giving us their views on REST (WCF REST starter kit, argh) and more recently REST with a domain model in Two-Tier Service Application Scenario (REST) which J.D. Meier calls the Web Service with REST Application Pattern.

If you understand REST/DDD, or like Fowlers original meanings for his patterns, or believe that "Business Process Objects" with methods like "Promote (object[] data)" could be improved on then you might want to look away now. Come on though I've piqued your interest, have a look, it makes you feel dirty but yet at the same time makes you glad you now realize that perhaps there are other ways to build applications.

Might be interesting to see how this relates to the old design documents MS used to pass out, pretty sure its not that different except resource is now used in some places instead of service. Service + procedural code + database, rock on.

Anyway I'm going to go back to writing my own comments on it to put on the page, its going to take me a while...

Share This - Digg It Save to del.icio.us Stumble It! Kick It DZone