Tuesday, June 27, 2006

Great news! The July drop of Service Factory is available for download from the public workspace. This drop includes the ASMX package for Service Factory together with a totally new Data Access package. No need for me to go into any details because Tom already did a great job explaining the features of this July drop. One of the great features is the new "Navigator". This really improves the user experience of Service Factory!

 

Go download it, have fun and let us know what you think about it in the message board!

 

 

 

posted on 6/27/2006 8:02:00 AM UTC  #   
 Wednesday, June 21, 2006

The article about Domain Specific Languages I wrote together with Christian Weyer for CoDe magazine is now online. It’s called “Introducing Domain Specific Languages” and briefly describes the Software Factories initiatives before it focuses on Domain Specific Languages in general and our DSL for the remainder of the article.

At this moment only a piece of the full article is available for non-subscribers. This means you either have to subscribe to CoDe magazine or save the link and get back in 2 months when the full article is available for all site visitors of the CoDe magazine.

 Hope you like it!

posted on 6/21/2006 8:44:47 PM UTC  #   
 Friday, May 12, 2006

This Monday I will be travelling to Redmond to attend a Service Factory workshop that is organized by the Microsoft P&P team for a few of Microsoft’s customers.

I will be there as one of the members of the projects Advisory Board so I can hear the customer feedback firsthand and try to help them a during the implementation sessions. I am sure I can learn a lot from discussing their requirements, issues, ideas, etc. 

 

Hopefully the workshop schedule leaves some time to chat with Don, Jason, Tom, Pablo and a lot of others.

posted on 5/12/2006 1:26:20 PM UTC  #   
 Wednesday, April 12, 2006

It's finally there! Download the first public drop of Service Factory and let us know what you think of it in the Service Factory community.

 

posted on 4/12/2006 8:42:14 PM UTC  #   
 Thursday, April 06, 2006

It started as project Batman, than it became Service BAT and now, the official name is just confirmed as Web Service Software Factory. A little long, so let's just call it Service Factory!

 

 

 

posted on 4/6/2006 8:13:54 PM UTC  #   
 Wednesday, April 05, 2006

We can finally start talking about it! The last couple of days Jason started giving some hints about changing the way we are developing service oriented applications. Christian is even thinking a little further and dreams about a possible relation with this?? All a little confusing but definitely interesting. It’s time to shred some light and start talking about Service BAT!!

 

The last few months I have been participating in this very cool project of the Microsoft P&P team coded named Service BAT (Baseline Architecture Toolkit). I believe this delivery is likely to change the way you are building services for the .NET platform.

 

So what is it? Service BAT is a toolkit that provides architectural guidance, tools, patterns, wizards, etc. to help you designing and building services using Windows Communication Foundation and ASMX. The Guidance Automation Toolkit is used to integrate all of this very nicely into Visual Studio.NET 2005. One of the great things of Service BAT is the level of customization. Service BAT doesn’t force to do anything you don’t like. You can customize most parts of Service BAT to make it meet your requirements.

 

Please note that this is just a very limited description; it’s really much more than this but you have to find out for yourself.

 

In the next few days I (and hopefully some others) will provide some more details. There is a public community for Service BAT that you can check out. An early code drop will follow in a few days.

 

For now, just a few screenshots of (an early drop) of Service BAT. More details will follow but this is the (very) short story that belongs to the screenshots.

 

The Service BAT architecture is based on separation of concerns (responsibilities). This separation is also translated in the Visual Studio solution structure. You can base your service development on one of the templates that Service BAT provides.

 

 

You can choose for a full blown template that will provide you with a complete solution structure including a lot of projects or you can choose for an empty solution structure and decide for your self what projects (responsibilities) you need in your solution structure (service). You can than add specific types of projects to your solution. All project types correspond to a set of responsibilities. For example we have a project type that holds and provide guidance for datacontracts, one for service contracts (interface), etc.

Service BAT provides you with recipes (actions) that you can execute. The recipes that are available for a project type are based on the responsibilities of a project type. As you can see in the screenshot below the “datacontract” project type provides you with guidance and tools to create a datacontract. You choose between creating a datacontract  by using a wizard, Code Snippets or create one out of an existing XSD.

(Later you will see that you can add responsibilities to a project type as part of the customization of Service BAT.)

 

As said, just a very quick and incomplete explanation of some of the features of Service BAT. Hope this makes you interested enough to check out the Service BAT community. Go download the early drop as soon as it is available and let us know what you think in the community!

posted on 4/5/2006 9:38:37 PM UTC  #   
 Wednesday, March 15, 2006

I was playing a little bit further with the DSL Tools and tried to add some icons to the custom commands (menus) I created. With the help of Jezz I managed to get this working.

 

First of all we tried to use custom bmp images in the commands. Unfortunately there appears to be a bug somewhere in the VS shell that prevented us from using custom bmp images. One option to work around this is use Guidance Automation Toolkit for adding the custom commands, we decided to follow another approach and use one of the icons from the office resources. If you can live with this limitation (approx. 7000 icons), you might be interested in the information below.

 

First you need to decide which icon you want to use in the menu. Therefore, you need the so called FaceID of the icon that you want to use. There are several tools or Office add-ins that can be downloaded from the internet to help you determine the FaceID of an icon (I used this one).

 

For this example we will use FaceID 2497.

 

Now we know the FaceID of the icon we want to use, we can open the “C:\Program Files\Visual Studio 2005 SDK\2005.10\VisualStudioIntegration\Common\Inc\office10\msobtnid.h” file in VS.NET.

 

This file contains all ID’s for the Office icons. For this example, we search the file for FaceID 2497. We will find a line that looks like:

 

#define msotcidExploreWebPage          2497   //(43,25) Label: 'E&xplore Web Page'

 

From this line we get the declaration of the FaceID. In this case this is “msotcidExploreWebPage”

 

In VS.NET we now open our DSL solution and open the “Designer\CtcComponents\GeneratedCmd.dslddt” file.

 

Somewhere after the include of the “GeneratedCmd.dslddi” file we can add the following line.

 

#define OI_GENERATEDIAGRAM guidOfficeIcon:msotcidExploreWebPage

 

Of course you can change the “OI_GENERATEDIAGRAM” in whatever you want. Change the declaration (“msotcidExploreWebPage”) to the appropriate value for your icon, leave the “guidOfficeIcon” in!

 

Next, we open the “Designer\CtcComponents\CustomCmd.ctc” file and find our customer command. This line should look something like this (in your case, of course with other name and text)

 

guidCmdSet:cmdIdGenerateModel, guidMenu:grpidContextMain, 0x0200, OI_NOID,  BUTTON,            DIS_DEF,       "Generate Model from WSDL";

 

We can change the “OI_NOID” into “OI_GENERATEDIAGRAM” (your value here)

 

Last, we have to open the “Designer\Shell\Package.dslddt” file.

 

To make sure VS.NET resets its menu cache after the first build we need to increment the second integer in this line:

[ProvideMenuResource(1000, 15)]

 

Build and run the solution and the icon will appear in your command.

 

 

Doesn’t this look pretty? 

posted on 3/15/2006 11:41:57 AM UTC  #   
 Saturday, March 11, 2006

My friend Jezz started a new series about the work he is doing on building a Toolkit for developing enterprise distributed applications and services. I know some off the details of his work and this is quite interesting. Jezz is just like my pasionate abouth DSL, GAT, and all related stuff. Let’s see what he has to say in his coming posts...

posted on 3/11/2006 1:54:10 PM UTC  #   
 Thursday, February 09, 2006

I have just updated my blog to DasBlog 1.8. If something doesn't work anymore please let me know!

posted on 2/9/2006 9:04:35 PM UTC  #   

Finally! A little more information is available of the DSL Tools modelling API! In this post George Mathew provide us with (some) details on the improvements the DSL Tools team made in the modelling API.

 

As you might have noticed from my previous posts, we have a quite a lot of custom code in our Domain Specific Language that uses this modelling API. Therefore changes in the modelling API will reflect in some additional work for us also. Hopefully not to much!

 

According to George, creating new Domain Classes can now be done by using the ‘new’ keyword. Isn’t that great? (and obvious J). The good new is that also the “old” mechanism is supported in the new API. Hmmm, I think I will definitely upgrade my code to use the ‘new’.

 

Great work, waiting for more news George!

 

posted on 2/9/2006 11:03:09 AM UTC  #