Friday, October 31, 2008

What is “Oslo”?

On the second official day of the PDC 2008, me and many colleagues from the Dutch .NET community attended the introduction session titled “A lap around Oslo”. Up to this session, Oslo was something nobody really knew about other than that is was somewhat related to the next evolution of SOA and Domain Specific Languages.

So what is Oslo really? Well, the answer is not really that simple. As a matter of fact, after finishing the session, both me, Dennis Vroegop and Alex Thissen were still a bit unsecure about what it really was. And even after attending the subsequent session by Don Box, we still had a lot of questions. But after some hefty discussions we managed to get our ideas aligned, at least, as far as we could tell. So to make sure we were right, we went to the Pavilion where Microsoft had setup many technical booths, and talked to Douglus Purdy, the host of this session. And as a matter of fact, it looks like we were right indeed. “So then, tell me”, I hear you think…

At a high level, it is the combination of two tools codenamed “IntelliPad” and “Quadrant” (see screenshot), a few compilers, the “M” programming language and a database repository. M can be used to write a text-based Domain Specific Language (DSL) consisting of data structures and language grammar, and let that compile, through some intermediate steps, into a XAML file representing an object graph consisting of expressions and statements. For every DSL, you need to create a runtime engine that knows what to do with that XAML file. Moreover, a shared characteristic of all those DSLs is that both the structure of the language as well as the domain-specific data is stored in a central SQL Server repository.


An example of such a DSL is what Microsoft calls “mschema”. This ‘language’ allows you to ‘sketch’ the structure of a business domain model by specifying values and relationships using a very simple syntax. The corresponding compiler will infer the formal data structures from that and generate a XAML file representing the values and structure of the domain model. This compiler will also execute the necessary T-SQL to setup the corresponding tables and columns for you. The runtime can then be used to execute various LINQ-style queries on the data or insert new data using another DSL called “mgraph”.

Another example of a working DSL is “mservice” what was what we were waiting for when we entered the session. It basically represents a textual domain-specific language for defining WCF services where the implementation is handled by a Windows Workflow. From what we saw, it was very powerful. With just a few lines you can setup a few operations and an endpoint, and define a fairly straightforward workflow without the need to use any activities or other WF-specific artifacts. In this DSL, the runtime is responsible for dynamically creating a WCF service, setting up the endpoint and required binding configuration, hosting the WF runtime environment and injecting the workflow matching the language. Even better, the entire implementation of the service operation is handled by this same runtime.

So how do Quadrant and IntelliPad fit into this? Well, IntelliPad is a textual tool to write the DSL itself, to query for or update/insert domain-specific data, and to preview how this all ends up into XAML. Quadrant is a very powerful graphical tool written in WPF that you can use to visualize the domain-specific data in almost infinite different ways, even if they originate from a completely different DSL. So if you combine for instance “mschema” and “mservice”, you can build a running service-oriented architecture just by using the visual designer.

As a matter of fact, the entire tool, including configuration settings, UI elements such as the Ribbon, and its visualization engine can be modified by drilling down through the models that make up the application. It’s like the ultimate meta-meta tool. So apparently, Microsoft has used their own “M” language to create DSLs for the different aspects of this application. However, as of now, it is still a bit vague what role “Quadrant” is really intended to play. It is at a minimum a developer tool, but it should be possible to customize it (again, visually, not with coding) to turn it in a very powerful exploratory data viewer.

Is this all? Not really. In fact, even after the many discussions we had, there are still some aspects we are not entirely confident we get yet.

  • The “M” language specifies ways for defining data structures that you can use in your DSL. But is that the same as “mschema”? And if so, can use “mschema” in your own DSL to have a nice composable way of reusing DSLs?
  • How does “mgraph” fit into this? Is it just another DSL written with “M”? Or is it part of the “M” language specification itself?

If anybody could enlight me on that, I’d love to here from you…

Tuesday, October 28, 2008

Windows 7 at the PDC

This morning, at the second keynote of this PDC, some of those Microsoft guys demoed Windows 7 and it is awesome. I´m not going to repeat the nice features because the Windows 7 team has already blogged about it with some nice screenshots. Check it out at here.

Windows 7 Desktop

Monday, October 27, 2008

Windows Azure announced

On Monday morning, at the PDC 2008 keynote, Microsoft announced Windows Azure, a new platform for hosting and enabling something what they call ‘services in the cloud’. It was, as seems to be traditional for keynotes, an awful presentation, but the idea is quite interesting. In essence (from what I understand of all this), they want to move developing services to a higher level by offloading the operational aspects to a managed hosting environment and introducing tools so that we can use Visual Studio to develop and model services and their operational requirements as if they were first class citizens.

The new “m” language intends to continue what the Web Service Software Factory: Modeling Edition has started: being able to design services using DSL-style graphical models. However, it does not seem to be a traditional programming language, because it appears to be tightly linked to SQL Server as a repository for storing them. Windows Azure is the on-line platform that Microsoft offers for hosting and managing these services, including Windows Workflows and the full suite of SQL Server features such as reporting and analysis services. Even differences between identity management is taken care of, although I don’t quite understand how that is going to work. They mentioned that these services are hosted at Microsoft, but I wonder if it’s something other hosting providers are allowed to do as well. And since the management interfaces for it interoperate with the next edition of Microsoft Systems Center, you can treat the hosted environment as if it is part of your own infrastructure.

Since the most complex tasks of developing services are the operational aspects such as security or technical decisions like where to host the Windows Workflow runtime, Windows Azure could have serious impact on our work. However, I really doubt whether organizations are willing to hand over their business-critical data to a company like Microsoft. All my customers genuinely believe that the only place where their data is safe, is at their own premises. However, I do know that most companies have a lot of trouble setting up a secure environment for that. And if there is one company who knows something about security and has invested heavily in it, it is Microsoft.

It is all a bit vague yet and many things are still open for interpretation, but things will become much clearer in the next couple of weeks (and hopefully at the PDC).

Live from LA

Well, here I am. After an agonizing 11-hour flight from Amsterdam to LA in a Boeing 747-400, I’m finally in the City of Angels, also known as Los Angeles California. Fortunately, the entire Dutch .NET community joined me on this KLM flight, so we spend loads of time discussing architecture….NOT. In fact, the only things people were discussing was about the hotel they were staying, what place to see and the external hard drive with Windows 7 we were supposingly going to receive this week. However, Alex Thissen, Maurice de Beijer and me have actually been discussing some of the design choices I’ve made in my demo code from the SDC presentations.

Anyhow, it’s Sunday right now,and I’m currently attending the pre-conference day. Even though I tried to go to bed as late as possible in order to make sure I was really sleep, I’ve had a horrible first night at the otherwise really decent Westin Bonaventura hotel. There were multiple Halloween parties and after having diner with some other colleagues, Olaf Conijn and I went to have a drink at a lounge bar at the rooftop of his hotel, The Standard. From there, the view on the surrounding hotels and sky-scrapers (like the AON Center and US Bank Tower) is awesome, and for somebody who has a slight anxiety for heights, quite tricky.

For the pre-conference, I chose a rather interactive session by Brian A. Randell, an MVP on Team Foundation Server. He shared quite a lot of his best practices on infrastructure, working in teams and getting the most out of the suit of products. I sure took a lot of notes on things to check-out when I’m back home. The day was concluded with a panel discussion hosted by Brian Harry, the Product Manager for the entire Visual Studio Team System team. This allowed us to ask questions about certain design decisions and future improvements. One particular feature I liked is the fact that you can divide your team into smaller sub-teams (security groups) and have work item queries that filter by group. Before that, you had to use areas for that and assigning a work item to another team usually also required to change the area.

By the way, check out the pictures at the PDC site to get an impression of this first day.

Wednesday, October 08, 2008

Slides and demo code from the SDN Conference 2008

For the attendees who have visited my two sessions on building a service oriented architecture using architectural best practices, check out the introduction slides here and the slides with best practices over here. Also, build 2187 of the demo application can be downloaded from this location.

In the next couple of months, I’ll continue updating the demo code with additional best practices which I’ve already collected but did not found the time to include yet. If you have suggestions or questions, don’t hesitate to contact me on my email ( or Also, some of my colleagues will be starting to build several frontends for the demo application using the Web Client Software Factory, the new ASP.NET MVC Framework, and of course, Silverlight 2.0. I’ll use the blog to notify anyone who’s interested about new builds.

Finally, I noticed a lot of discussions and questions during the sessions, and there was simply not enough time left to answer or complete all of them. Therefore, I’d like to organize a so-called Chalk’n’talk session (a.k.a. a pizza-session) at Aviva Solutions in Leiden in which we can continue an open discussion on software factories, architecture, design patterns and the stuff Patterns & Practices provides. No date is planned yet, but it will happen soon after the PDC2008, so if you like to be included, let me know.

Update 10-10-2008: I forgot to update the web.config, so the services did not work. Please get the update .zip from the same location.