Yossi Dahan [BizTalk]


Wednesday, October 29, 2008

About "Dublin"

Microsoft have announced "Dublin" in September, but up until now (PDC) there' has been very little information about how that is going to look now.

Over at PDC are finally able to see some sessions as well as visit the various .net booths and get first hand look at the "bits" and ask questions about the new technologies.

However, at this time of writing this, I have not yet attended any Dublin sessions, which really means anything I write here currently is stipulating on some stuff I've seen and heard "in the corridors of PDC".

I have, however, spent enough time at WCF/WF booth to probably make them call me various names behind my back (I'm sure) :-) and I think have got at least an idea of what Dublin is.

Over the next couple of days we will hear and see more, as well as get the chance to play with "the bits" handed over yesterday afternoon, so I'm hoping to be able to give a fuller view of what it is (and correct any inaccuracies posted here now)

So - clearly at this point I can only speculate based on the stuff I've seen, so you can think of this post as me sharing with you the (slow) process of learning what Dublin is (or, of course, you can stop reading now).

"Dublin". to begin with it is an "add on" (or extension, if you prefer) to IIS manager; once installed you get another set of options when administrating a virtual directory.

These options, as you can imagine, are directly related to configuring, managing and monitoring WAS hosted WCF services; and so here's the first important point - Dublin is not a new host, it is a management layer on top of the existing host - WAS.

Another point is coming out of this - and again I'm stipulating and mostly trying to make sense of the stuff I've seen over the last couple of days - if "Dublin" is not a new host - where does WF fit in? well - MS are pushing really hard the message - WCF+WF (or WCF activated Workflow).

Until now I mostly thought of WF as a workflow capability one can add into one's application as an integral process; sure WF can work with WCF very well and there is , and have been for a while now, a good story around this and several examples; but, I guess coming from my BizTalk perspective, I thought that if you needed a long running, WCF activated, process you'd use BizTalk; now MS are pushing a different alternative - WF+WCF solution hosted in WAS.

The thing is that this is not a new option; as I've said - it has been around for some time now, the difference is mostly strategic I think - there's still a lot of place for BizTalk (more than I though last week, admittedly) - but if you need a fairly light weight solution for WCF activated workflow this is definitely a good option.

Back to "Dublin" - if WCF + WF have been around for a while - what is new? well - as I've suggested the main feature you'd see or hear about is administration - using Dublin's extension to IIS you would be able manage your deployed services more easily; this includes things like configuring the tracking and persistence databases, configuring tracking settings on your services (and workflow), and - I'm told - possibly configuring a lot of aspects of your endpoints (although this was not demonstrated).

So - one way to think about it, and I hope I'm not doing any mis-justice, is an improved and extended WCF configuration editor embedded into IIS (as well as supporting some aspects of WF configuration).

Another aspect, possibly one with a higher impact, is the ability to view long running instances; as MS expected you services to activate WF (there's little benefit for using the Dublin features otherwise, but the configuration tools are still very much relevant)

As your workflow runs it may wait for external events, sometimes for minutes (or hours, or days), in which case it is more than likely (one would hope) that it will get persisted using  a persistence service; Dublin has a UI over that service (or is it the database? in which case it is limited to the out-of-the-box persistence implementation) which allows you to view all your running (and "dehydrated" workflows; this is something we BizTalk guys take pretty much for granted but is a blessing for anyone serious about using WF.

If you had WF tracking enabled you could drill down into your tracking to see exactly what the WF have been through already, which would be very useful, but at the moment it is a bit rough - you get effectively the contents of the database displayed on screen, nothing like the visualisation WCF tracing has to offer.

I'm told that there are thoughts (or was it concrete plans?) to take this are further and look at combining the WCF and WF tracing/tracking and offering a better, consolidated, view of the data, one that actually helps making sense of it all; but that is not there is this very early version.

There's a bit more to the administration capabilities, but that gives you, I hope, an idea of what's on the cards - better management of WCF+WF scenarios on WAS.

In addition to that a few other, quite cool, features are talked about; for example "Dublin" introduces an ability to add a forwarding service to the solution; this is a pretty bog standard WCF service that get's added to your solution as an SVC file (specific to the scenario you are building), but it uses an implementation provided by MS internally (references assembly, presumably); I'm told you would configure some rules that will route incoming requests to your back-end services (currently these rules are configured through the config file, but clearly one can imagine this being managed through the IIS administration console as well).

Basically the service exposes and endpoint which you can configure; this would be the endpoint exposed externally to your services' consumers; on the other end it would consume your back end services  using the same or other bindings (power comes with responsibility!); in between it would runs some logic to be provided by MS, that would evaluate some rules (to be provided by you) to determine where the request should go to; I'm not sure what this rules would include at this point, but the sample I've seen included some configuration that included xpaths to elements in the request and expected values which suggests support for content based routing.

Again - this brings a very power feature from the BizTalk world to the WCF/WF world which is a blessing, but with the lack of a message context and pipelines in WCF things are bound to look a little bit different.

This mechanism might also be useful to handle correlation scenarios when load balancing the server farm, but I'm not sure if there isn't a built in mechanism for that separately.

I have not yet seen, but I understand that "Dublin" will introduce some support for load balancing, mostly around long running scenarios where requests have to resume with previous state; I understand that this might be done by routing the request to the machine holding the state, or moving the state to the machine processing the request (or both?), details around this seem to have not been finalised (or made public) yet.

As I've said I'll try to provide more details as I find them, and as I start to play around with the copy I've recieve yesterday (which won't happen before next week, realistically; I need to get *some* sleep!) , but - my bottom line for now - if you were expecting a revolution on how you will be designing, configuring and mostly hosting, your WCF and WF solution (over all the changes in .net 4.0 to those technologies) you might think this is bad news, but the reality is that, quite simply, no revolution was needed - you could do all this stuff before, and now it just got easier;  but mostly - in my view - Microsoft are signaling the direction they wish to see these technologies go; sure three's a lot of place for WF inside your application; "Dublin" shows three's a lot of place for it outside them as well.

One last note - there's a lot more everyone need to digest as a result of the various announcements in PDC (mostly Azure and the cloud services platform), and these are strongly related. the WCF activated WF, hosted in WAS, the forwarding service with its content based routing capabilities, load balancing and better administration are key to utilising the .net services in the cloud and extending your workflow out of your app to your enterprise and into the cloud.fascinating stuff!

Labels: ,


Post a Comment

<< Home