Screencast: Windows Workflow – Creating Custom Context Bindings

Screencast: Windows Workflow – Creating Custom Context Bindings

I’ve recently published a free screencast on the basic ideas around context management with workflow services. 



Microsoft ships several bindings that support context management, but they cannot possibly cover all of the scenarios you might need. In this screencast, I'll show you how to build your own custom context binding using a netNamedPipesContextBinding as an example.

Check out our growing collection of free .NET screencasts and videos.  Subscribe to the Pluralsight feed to be notified when new screencasts are published.  Also, check out our growing library of online .NET training courses — see what you can learn with Pluralsight On-Demand!

Screencast: Windows Workflow Foundation workflow service context basics

Screencast: Windows Workflow Foundation workflow service context basics

I’ve recently published a free screencast on the basic ideas around context management with workflow services. 



This screencast walks through the basic ideas of managing context in workflow services and introduces several concepts that will be used for deeper exploration in other screencasts in the series. 

Check out our growing collection of free .NET screencasts and videos.  Subscribe to the Pluralsight feed to be notified when new screencasts are published.  Also, check out our growing library of online .NET training courses — see what you can learn with Pluralsight On-Demand!

Designing Services for Management & Scale with Dublin Video Online

A few months ago Kent Brown and I presented on Dublin (the new enhancements to Windows for Workflow Hosting, Monitoring, and Tracking) at the 2009 SOA and Business Process Conference in Seattle Washington.

This session was recorded and is now online.  You can view this video here:!FA6FC7F5DB1C07!135.entry

The abstract for the session is below.

Abstract:  Dublin is the code name for the new Windows Application Server features inside Windows. In this session we will take a look at how to build a service to leverage the management tools inside Dublin to gain insight into the health of running services. We will show how simple it is to configure Dublin to custom track custom values inside message payloads. Once tested, deployment and migration of the service to a new environment will be demonstrated.

Watch for more to come from me on Dublin in the up coming months.

BizTalk RFID Workshop Review

Earlier this week I attended the RFID workshop held at Microsoft’s Reading Offices. I thought Id write up some notes and thoughts I’d made about the event.


The course was based on the course developed by the guys at Breeze ( The material itself is excellently written and is easy to follow. It also has some nice little bits of humour which mean it is not the common/boring material you get on some courses. The material itself lets you build and enhance an RFID solution through out the course of the labs and there are about 10 labs and the course was very hands on.

The trainer for our course was Jeff Johnson from Microsoft in the UK and he delivered the course very well and was able to add lots of additional information based on experiences from work he had done.

The course itself was a 2 day workshop and was free.


There were some excellent freebies on this course:

  • A copy of the BizTalk 2009 RFID book
  • A USB RFID reader/writer
  • A small bag of RFID tags
  • A BizTalk VPC (2006 R2) with everything on to do additional study away from the course


The attendees for the workshop gave us an excellent mix of BizTalk people who had done little or no RFID work and RFID specialists who hadn’t done much with BizTalk.

This resulted in lots of discussion and interesting points based on peoples differing experiences. It was also good to see some people from the UK SBUG user group there.

My Random Thoughts based on what I learnt on the course

I think the first thing to say is that I have wanted to look into the RFID aspects of BizTalk for quite a while, but the combination of me not having any RFID work in the pipeline and my expectation that it would be quite a steep learning curve and that I didn’t have the hardware I would need to play around with it had put me off doing this for a long time. It just kept getting reprioritised.

Jeff had actually contacted me to promote the workshop to our user group members and I thought it was a good time to do some training and being free it ment I would only lose the cost of the days off work.

To my surprise RFID work with BizTalk is sooooo much easier than I expected, so much so that I had to question if it was appropriate to call it BizTalk being so easy.

I don’t really want to go into too much discussion about the aspects of RFID but some things which I feel will catch people’s interest to look more into this might be:

  1. Traditionally RFID work had the typical complications of working with hardware vendors. You needed different API’s for each vendors readers etc. BizTalk RFID abstracts this and gives you a standardised API which allows you to communicate with any supported vendor. You could really see the benefits of this and you can code directly against this API from .net applications if required

  2. BizTalk RFID is actually a separate module to the main BizTalk installation. The course really discussed setting up RFID on “edge” servers which would be configured to work with a set of readers. You could then send your events to a central hub BizTalk installation to interact with LOB applications if required

  3. Following on from the above comment it really looks like you would use RFID with the branch edition of BizTalk on your edge server. This significantly reduces the cost of setting up solutions and also if I remember correctly you don’t need a hub BizTalk enterprise edition server if you don’t need one. This allows customers who may use other vendors for their integration technologies to still take advantage of BizTalk RFID as a low cost solution to work with their current products, it also offers SME companies a cheap option and as they grow it gives them the option to bring “proper” BizTalk into the picture later.

  4. BizTalk RFID doesn’t require the traditional BizTalk skill set. There is some configuration requirements to configure your devices and RFID processes, but when it comes to custom processes the components are written in .net code in a similar way to BizTalk pipelines and pipeline components (but much simpler!!)

  5. The RFID module gives you an execution environment for processing your RFID events and you can have multiple processes which will pick up the same events depending on how you configure your bindings from devices to processes.

  6. The configuration/administration side of things is quite BizTalk like but with out any of the SQL Server requirements

  7. There are some testing things that come with RFID which allow you to test your processes without having to have an RFID reader

I’m sure that there is a whole lot of other stuff that I should say but just doesn’t come to mind at the moment.

In terms of recommending the course I would say that it is a very good course and it has really excited me about the possibilities of doing BizTalk RFID solutions.

I have invested 2 days of time and I’m coming away with a good understanding of this and I think with very little effort I can setup a pretty powerful demo to show my customers.

I believe Microsoft might be running this workshop again in the Autumn or if you are outside the UK I’m sure Breeze can advise you how to do this course.

WebSphere *loves* Windows, enough said

WebSphere *loves* Windows, enough said

Recently, Greg Leake (Senior Director Developer Platform at Microsoft) performed a series of IBM written benchmarks.  The results of the benchmarks demonstrate a significant cost savings of running WebSphere on Windows on HP Blades as opposed to running the same workload on IBM's Power 570 hardware.   This savings is not only significant but the overall performance in terms of transactional throughput was significantly better than on the Power system.  In addition, the tests show the ability to scale the overall system in a granular fashion.   The net findings of these tests is that an organization has the possibility  to run their WebSphere application workloads on Windows on Intel based hardware for markedly lower costs with improved performance as compared to Power systems. You can find an overview of the work at

For more in-depth information on the studies, check out, as well as the information found on MSDN around the .NET StockTrader Sample Application. And you can find Greg Leake’s blog here.

Webcast – BAML – A DSL for BAM

I never really “got” the idea of the need to build a textual DSL when I was first introduced to MGrammar. The light really switched on when I looked into developing a DSL that would make it easier for developers to create BAM activities.
The BAML language only took a couple of hours to develop. I had experimented with simple text based DSLs before, so this was my first “real” language.
I have recorded a 20 minute webcast showing how the language works, and how it can be used. If you want to experiment with it yourself, the language is here.
module BloggersGuides
language BAML
syntax Main = Activity;
syntax Activity =
=> { activity { n,{ p }} };
syntax PKI = Milestone | Integer | Decimal | Text;
syntax Milestone = t:MilestoneToken n:NameToken ‘;’
=> { t, { n } };
syntax Integer = t:IntegerTokenn:NameToken ‘;’
=> { t, { n } };
syntax Decimal = t:DecimalTokenn:NameToken ‘;’
=> { t, { n } };
syntax Text = t:TextTokenn:NameToken ‘;’
=> { t, { n } };
syntax List (Element) =
e:Element => { e } |
list:List(Element) e:Element => { valuesof(list), e };
token NameToken = (‘A’..’Z’ | ‘a’..’z’)+;
@{ Classification [“Keyword”] }
token ActivityToken = “activity”;
@{ Classification [“Keyword”] }
token MilestoneToken = “milestone”;
@{ Classification [“Keyword”] }
token IntegerToken = “integer”;
@{ Classification [“Keyword”] }
token DecimalToken = “dec”;
@{ Classification [“Keyword”] }
token TextToken = “text”;
interleave Whitespace = ‘ ‘ | ‘\r’ | ‘\n’ | ‘\t’;
This is the sample input file I used on the webcast.
activity ConferenceBooking
milestone BookingDate;
text ConferenceName;
text AttendeeCity;
text HotelName;
dec Price;
integer Days;
You will need the command line compiler to get the BAM activity created, if you contact me I can email it to you.

WebSphere Loves WindowsWho Knew?

For years I’ve heard people say that Microsoft technology is great for mid range solutions.  I can’t tell you how many CIOs have told me things like “we use WinTel for department level applications but the big iron apps run on Unix.”  There’s a general belief in the industry that the further you get into the datacenter, the less Microsoft technology you tend to find.  While license numbers, data from IDC and other major third parties paint a different story, we decided it was time to put ourselves to the test against one of the biggest players in the space – AIX running on optimized IBM Power6 with WebSphere. 

About a year ago, I blogged about some .NET / Windows Server benchmark testing results produced by Greg Leake. After taking some well deserved time off, Greg went back to the lab, expanded his testing and agreed to help get to the bottom of the “back office” debate. For the first time, the results include IBM hardware (POWER6) which allows us to evaluate price / performance using typical customer configurations. In an era of cost cutting and the need to squeeze as much optimization out of systems as possible, we think customers will find this information very interesting.  

Let’s start with costs Greg’s findings demonstrate that customers save up to 81% in total system costs by running applications on Microsoft .NET and Windows Server 2008 vs. IBM WebSphere 7 on POWER6/AIX. The study also showed that customers who run their IBM WebSphere 7 applications on Windows Server 2008 and Hewlett Packard/Intel 64-bit blade servers can save up to 66% in total system costs when compared to running the same applications on IBM WebSphere 7 on an IBM Power6/AIX platform.  These results illuminate significant savings for businesses of all sizes, and particularly speak to the value of the Windows Server platform.  Our hope is that people are able to make use of these findings to get more for their money, either by making new investments or by maximizing assets they are already using.  Who knew WebSphere and Windows Server were such a match?  

Most folks tend to buy into the potential for cost savings but speculate that they give up performance to get it.  The study also found that for the hardware configurations tested the Microsoft .NET Framework on Windows Server 2008 handles 57% more load than WebSphere 7 running on IBM Power6/AIX.  We also found that Windows Server 2008 running WebSphere 7 handles 37% more load than IBM WebSphere 7 running on POWER6.

So, what do these findings really mean and why am I sharing them with you today? A few important things to know:

1) Windows Server and the .NET Framework continue to be a powerful, leading combination for application development, deployment and management.

2) Customers who have made a bet on WebSphere can improve performance and reduce costs by running WebSphere on Windows.

Please visit to read more about these results and check out the .NET StockTrader downloads. We think the .NET StockTrader is a GREAT example of how small bits of innovation can have BIG impact.   Don’t take our word for it – these sample applications and guidelines are available to anyone. Instructions on how to replicate the testing we conducted are also available here, and I strongly encourage customers, and all third parties, to conduct tests for themselves.  Let us know what you think


Verify the schema is deployed properly

There was a failure executing the receive pipeline: “Microsoft.BizTalk.DefaultPipelines.XMLReceive, Microsoft.BizTalk.DefaultPipelines, Version=, Culture=neutral, PublicKeyToken=31bf3856ad364e35” Source: “XML disassembler” Receive Port: “EDI837P_ReceivePort1” URI: “\\SERVER\folder\*.xml” Reason: Finding the document specification by message type “EDIMsg” failed. Verify the schema deployed properly.

Make sure that you don’t have the same schema deployed twice!