Some comments on efficient SOA method composition
A couple of posts back I started talking about composing SOAPY operations efficiently, by shipping intent to the service.
An interesting debate ensued in my comments:
Kristofer (the guy behind the Huagati tools for DBML and EDMX, and it seems a man after my own heart) got all excited and suggested the name LINQ to WCF.
Frank de Groet, also liked the idea from the perspective of the potential latency savings but was concerned about getting agreement between platforms on how to share expressions. A valid concern, but I don’t think its insurmountable.
Mikael Henriksson added this: “That's why architecting a service based application can sometimes be a bit difficult from a usability perspective…”, which I guess means Mikael thinks that a facility like what I described would make it easier to create useful services. I'm sure it's no surprise that I totally agree with this hypothesis :)
Artem, on the other hand, had some strong objections. Now I won’t try to speak for him because I think (given that we disagree) I’d do a disservice to his arguments. But he and I debated questions like these:
- Why not just expose an operation that composes the methods if a client needs it?
- How could you do this without missing out on custom WCF rules and interceptors if you compose ‘under’ the layer where this interception takes place?
- What exactly would we be doing if the server re-wrote the client's expressions? is that a form of AOP?
All good questions. Check out the comments for more.
And finally my mate Jimmy Zimmerman chimed with this:
“
Statement: Is this "sexy" from a technology perspective? Absolutely.
Statement: Is this a bad idea? Absolutely.
”
Which on first reading looks pretty damning. But as I found out over lunch yesterday, he is merely warning against taking this idea too far, by straying from pure operation composition into a land where predicates, order bys, and conditional logic can be applied intermingled in the expression.
Check out his follow-up post to hear his concerns.
Hmm… I love these kind of healthy debates.
Anyone got anything else to add?
- Anonymous
July 31, 2009
Funny you write this. I actually started playing around today with a linq provider to support this concept. More for my personal curiosity I was approaching this from the wire protocol perspective (e.g. how would an combinatorial expression actually look on the wire) than really caring about the lambda itself, that's just a fun distraction. On the other hand, I happen to be sick enough of a human being that other engineers have to stop me from diving straight at the core WCF Message class when coding :)if anyone is interested in watching the flaming wreckage that is soon to be my ego, they're welcome to pay attention to:http://www.blitzkriegsoftware.net/Blog.asp?FLAG=6&ID=117Uhhhhgggg Alex. You've got me on another one of our intellectual obsessions agian :) - Anonymous
July 31, 2009
The comment has been removed