Dude, where’s my WCF content?

As you have probably noticed, the WCF Dev Center has changed quite a bit recently. If you are a returning visitor, you may be wondering where your favorite links went.

The driving principle behind the redesign is to better cater to the different audiences that visit our page. 

In its previous format, the WCF Dev Center catered very well to the return visitor looking for fresh content.  The various content feeds on the main page made it very easy to check back periodically and see new content.

However, our usage data shows that a lot of our traffic comes from first time visitors through search engines. Our redesign is an effort to present a friendlier face to those folks, and to help them find introductory materials.

The main page now has links to three main areas:

1) Get it: This page gives simple instructions for what you need to install to use WCF.  It also gives links to additional WCF Tools that are available in the Windows SDK and how to download them.

2) Get Started: This page has a streamlined set of content that we feel is most useful for programmers just getting started with WCF.  As part of this, we are introducing a new series of “Learning WCF Tutorials”.

3) Learn More: This page is the portal into all of the available learning resources and community content.  If you miss the old site, you might want to just bookmark this page as it is now the “one-stop shop” for experienced WCF programmers.

There are also two feeds on the main page: 

1) The “WCF Highlights” area where we will make important announcements such as Beta releases, important new content, and conference events.

2) The “What’s New” feed which will be a fast moving feed combining blog entries from the WCF Team Blog, syndicated MVP blogs, and the Social Network Bookmarking.

Please let us know what you think of the new design and make suggestions for any future improvements you’d like to see.

Workflow Tracking Profiles in .NET 4.0 Beta 1

Last week we introduced the new Workflow Tracking features in .NET 4.0.  In this post we’ll do a deep dive into tracking profiles and explain how to use them to track workflow execution in a flexible way. 

Tracking Profile Overview

Tracking profiles let you subscribe to events that are emitted by the runtime when the state of a Workflow instance changes.  Depending on your monitoring needs you may craft a profile that is very coarse, subscribing to a small set of high level state changes on a Workflow.  On the other hand you may create a very granular profile whose output is rich enough to reconstruct the execution later.  Tracking profiles can satisfy these extreme scenarios and anything in between.

Tracking profiles manifest themselves in one of two ways.  You can create tracking profiles programmatically in .NET or configure them as XML elements in the <system.serviceModel> section of a standard .NET configuration file.  This post covers configuration based profiles.  Here is an example tracking profile in .NET 4.0 Beta 1:

<system.serviceModel>

   

    <tracking

      <trackingProfile name="High_Level_Tracking_Profile">

        <workflow>

          <workflowInstanceQuery>

            <states>

              <state name="Started"/>

              <state name="Completed"/>

            </states>

          </workflowInstanceQuery>

        </workflow>

      </trackingProfile>       

    </profiles>

  </tracking>

   

</system.serviceModel

 

Tracking Profile Structure

Tracking profiles are structured as declarative subscriptions to events, or tracking queries that let you “query” the Workflow Runtime for specific event records.  There are a handful of query types that let you subscribe to different classes of events.  Here are the most common query types that you can try out in .NET 4.0 Beta 1:

%u00b7         WorkflowInstanceQuery – Use this to track Workflow instance lifecycle changes like Started and Completed.

%u00b7         ActivityQuery – Use this to track lifecycle changes of the activities that make up a Workflow instance.  For example, you may want to keep track of every time the “Send E-Mail” activity completes within a Workflow instance.

%u00b7         FaultPropagationQuery – Use this to track the handling of faults that occur within an activity.  This event occurs each time a FaultHandler processes a fault.

%u00b7         UserTrackingQuery – Use this to track events that you define in your code activities.  There will be a follow up to this post that shows you how to create user tracking records.

Variable Extractions

When tracking the execution of a Workflow it is often useful to extract data.  This provides additional context when consuming the tracking records post execution.  Tracking profiles make this easy.  In .NET 4.0 you can extract variables from any activity in a Workflow.  The following example activity query comes from the monitoring hands on lab that shipped with the WCF and WF samples for .NET 4.0 Beta 1.  It shows how to extract the “StockSymbol” variable whenever the “GetStockPrice” activity completes.

<activityQueries>

  <activityQuery activityName="GetStockPrice">

    <states>

      <state name="Closed"/>

    </states>

    <variableQueries>

      <variableQuery variable="StockSymbol"/>

    </variableQueries>

  </activityQuery>            

</activityQueries>

 

Annotations

Annotations in Workflow 4.0 let you arbitrarily tag tracking records with a value that can be configured after build time.  For example, you might want several tracking records across several Workflows to be tagged with “Data Center” == “Contoso Data Center”.  This makes it easy to find all records with this tag when querying tracking records later.  To accomplish this, you would add an annotation to a tracking query like this:

<activityQueries>

  <activityQuery activityName="GetStockPrice">

   <states>

      <state name="Closed"/>

    </states>

    <annotations>

     <annotation name="Data Center" value="Contoso Data Center"></annotation>

    </annotations>

  </activityQuery>

</activityQueries>

 

What’s Next

In the next post in the series, we will talk about the extensibility of Workflow tracking  in .NET 4.0.  This topic will dive into the following concepts:

%u00b7         Programmatically emit your own tracking events by creating UserTrackingRecords.

%u00b7         Programmatically consume events within the runtime by creating custom TrackingParticipants.

%u00b7         Programmatically create tracking profiles in .NET.

RESTFul Services in Silverlight – CT Code Camp June 2009

Downloade thePresentation and Code
The Connecticut User Group organized a full day code camp event in Bloomfield, CT. The topic I presented on was “RESTFul Services and Silverlight”. The presentation was organized around the following main topics:

Web Services via SOAP
RESTFul Services
Creating a WCF RESTFul Service
Consuming a Custom WCF RESTFul Service in Silverlight

The attached slide deck will […]

Dublin Sessions from the BizTalk Users Group in Sweden on Channel 9

I was asked to present at the BizTalk Users Group in Sweden on June 4th. I presented on the new enhancements to the Windows Application Server role known as Dublin.

The two sessions are now online on Channel 9. The first session is a walk-through of the value proposition of Dublin and Workflow Services. The second session is a little deeper dive into tracking and monitoring.

Details on each session are below.

Session 1: Inside the Windows Application Server Enhancements known as Dublin (1/2)

Abstract: In this session we will review the features of the Windows Application Server Enhancements code named Dublin. This session will show how to use new and enhanced concepts in the .Net 4.0 framework to empower Services hosted in Windows allowing users insight into service health and activity.

Session 2: Inside the Windows Application Server Enhancements known as Dublin (2/2)

Abstract: This session takes a deeper dive into Windows Application Server Enhancements by looking in detail at the hosting of a Workflow Service. This will cover reviewing a web service aggregator Workflow Service, setting up custom tracking, monitoring running services, and import and export of applications.

One of the top question I receive is when can I get the code for Dublin? Microsoft stated at TechEd US 2009 they planned for a public beta of Dublin around the PDC 09 timeframe.

Enjoy and please post any comments or questions.

Latest Windows Application Server Enhancement (Dublin) Videos On Channel 9

Recently I was asked to present at the BizTalk Users Group in Sweden.  I had a great time and was welcomed nicely by my Swedish friends. 

I presented on the new enhancements to the Windows Application Server role code named Dublin.

I presented two 35 minutes sessions covering a lot of the same material talked about at the recent TechEd in Los Angeles, CA.

The two sessions are now online and available for everyone to watch.  The first session is essentially the value proposition of using Dublin and Workflow Services and the second session is a deeper dive into custom tracking and monitoring.

The top question I get is when can I get the code for Dublin?  Microsoft stated at TechEd they planned for a public beta of Dublin around the PDC 09 timeframe.

Enjoy and please post any comments or questions.

Session 1: Inside the Windows Application Server Enhancements known as Dublin (1/2)

Abstract: In this session we will review the features of the Windows Application Server Enhancements code named Dublin.  This session will show how to use new and enhanced concepts in the .Net 4.0 framework to empower Services hosted in Windows allowing users insight into service health and activity.

Session 2: Inside the Windows Application Server Enhancements known as Dublin (2/2)

Abstract: This session takes a deeper dive into Windows Application Server Enhancements by looking in detail at the hosting of a Workflow Service.  This will cover reviewing a web service aggregator Workflow Service, setting up custom tracking, monitoring running services, and import and export of applications.