Welcome to Neudesic Blogs Sign in | Join | Help

PCUSG Presentation on ESB Toolkit 2.0

I originally did a first look of ESB Toolkit 2.0 for BizTalk Server 2009 in February of this year showing the CTP2 bits.  Following up on the original session, I am presenting the final ESB Toolkit 2.0 bits that came out in June.  Here is some more information about the event at the Phoenix Connected Systems User Group home page.  I have included the abstract below.  Join me on Thursday October 8th for some free pizza and a good discussion on the Toolkit!

BizTalk 2009 ESB Toolkit 2.0

Itinerary based routing is the key pattern in delivering solutions in the ESB Toolkit 2.0 for BizTalk Server 2009. The challenge though is how to take a traditional BizTalk scenario and implement it using the ESB Toolkit and itinerary based routing.

Join Brendon Birdoes, Principal Consultant with Neudesic for a walk through a real world scenario and implement it using the ESB Toolkit. Comparisons to a typical BizTalk project and the advantages of using the ESB Toolkit will be highlighted. For those new to the ESB Toolkit, some time will be spent discussing what the Toolkit is along with features and capabilities.

ESB Toolkit 2.0 Sessions on SSWUG Virtual Conference

If you are interested in finding out more about the ESB Toolkit 2.0 along with a deeper look at building BizTalk solutions using the Itinerary routing capabilities of the Toolkit, sign up for the SSWUG virtual conference!  Along with the ESB Toolkit 2.0 there are sessions ranging from Azure to SQL Server.  For a complete list of sessions and speakers go to http://www.vconferenceonline.com/shows/fall09/uvc/.

Below is some more information on my sessions.

ESB Toolkit 2.0 Overview

An Enterprise Service Bus (ESB) is an architectural pattern and a key enabler in implementing the infrastructure for a service-oriented architecture (SOA). The ESB Toolkit for BizTalk Server 2009 implements best practices and patterns for building loosely coupled service oriented solutions using BizTalk as the bus. The ESB Toolkit 2.0 is one of the best new features of Microsoft BizTalk Server 2009! Join Brendon as he explains what the ESB Toolkit is, explores the features and capabilities and discusses the benefits of using the Toolkit for your BizTalk solutions.

Implementing Messaging Solutions Using ESB Toolkit 2.0

Itinerary based routing is the key pattern in delivering solutions in the ESB Toolkit 2.0. The challenge though is how to take a traditional BizTalk scenario and implement it using the ESB Toolkit and itinerary based routing. This session will walk through a real world scenario and iteratively build the solution from a simple itinerary to a more complex itinerary including some of the more advanced capabilities of the Toolkit. This session will also take a closer look at the best new feature of the ESB Toolkit which is the Itinerary Designer that is fully integrated into Visual Studio 2008. If you are a BizTalk developer and would like to get an idea of the Toolkit development experience, this is a must see.

 

My colleague Rick Garibay will be presenting two sessions on Azure table storage.  Here is some information about his sessions below. 

Developing and Deploying an On-Premise .NET Application with Azure Table Storage

Azure Table Storage provides a scalable data access solution for applications hosted on-premise or in the Azure cloud. Learn how to get up and running with Table Storage with a look at building entities, provisioning Table Storage locally in Development Storage and in Azure Table Storage along with techniques for maintaining a consistent development experience when developing locally or against the cloud. 

Developing and Deploying a WCF Application with Azure Compute Services and Azure Table Storage.

The Azure Compute Service provides robust hosting capabilities of you .NET application in the Azure operating system. Learn about Web Roles and Worker Roles and how to configure your .NET application for deployment to Windows Azure. We will also explore techniques for consuming data via Azure Table Storage and put at all together and deploy the application live to Windows Azure. 

To receive $25 off the conference use this special VIP code: SPBBUVC09

 

ESB Toolkit Message Service Part II - ESB Extensions Sample

The first sample I put together for creating a message service was fairly simplistic and was missing a few key features necessary to put together a truly valuable message service for the ESB Toolkit. Here are the pieces that were necessary and have been included in this new sample.

Resolver Support

The message service built in the original sample had a status property that should not be hardcoded, but configurable based on where the itinerary step is located.  This seems like a pretty common need of message services or even orchestration services to have resolver values outside of those provided by the included resolvers.  The included resolvers are based on routing or transforming which makes sense, but what if you need other properties?  The resolver framework exists to provide information to itinerary services which do the actual work, but it is just a dictionary.  What information and how the resolver gets it in there is not limited.

In this case I just wanted something like the STATIC resolver, but based on the values I need for the message service to run.  In this case the only property I cared about was a Status of the Order to track to my BAM tables.  To do this I put together two potential resolvers.  The first is called the ProperyCollectionResolver and the other is the PropertyResolver.  I will go into details in the next section on why there are two.

The final piece was to add support in the message service for the resolver.  This entails a few steps of invoking the resolver framework to execute and receive the resolver dictionary.  This was added to the base BAMMessageService to avoid repeating this in extension classes.  Below is the snippet that parses the resolver string and then invokes the resolver framework.

ResolverSnippet

Designer Support

The designer really is the best new feature of the Toolkit from my point of view.  I worked on a lot of the core features in the ESB Toolkit around itineraries and thought the changes we made were good, but the designer really adds a significant productivity boost.  Key to that productivity is validation, direct support for the ESB engine framework artifacts (resolvers, itinerary services, adapters) and integration with BizTalk.   The message service from the original sample  achieved some designer support just by registration in the configuration file, but now there are two new resolvers. 

The next step was to give the resolvers designer support as well.  Using the Designer Extensibility sample as a guide, I included full support for the resolvers.  So the question is why two resolvers that basically do the same thing? Both resolvers add whatever key-value pairs are in the resolver string to the resolver dictionary.  The reason is pretty simple.  The PropertyCollectionResolver just exposes a simple dialogue to add key-value pairs.  This could be used with any message service or orchestration created to provide values to the itinerary service.  The problem is that there is no design time validation other than correctly formatting the resolver string (which by the way could be a pain in the past when manually creating the itinerary).   The advantage is that this can be used right away with any itinerary service. Below is the UI presented for the property collection which takes anything added.

PropertyCollection

The PropertyResolver does not have a built-in designer support.  To correctly utilize it, resolver extenders based on the values the itinerary services are expecting must be added.  The advantage is that you can potentially add properties as enums or include other validation with the built-in Enterprise Library Validation block support.  The problem is that potentially each itinerary service would require a resolver extender based on the properties it will need.  Below is a sample of the properties presented for the resolver extender built specifically for the OrderTrackingMessageService.

PropertyResolver

Itinerary Extension

Another extension point not well known in the ESB Toolkit is to implement your own itinerary manager responsible for making the right things happen when advancing the itinerary, serializing/de-serializing the itinerary, etc.  Implementing your own itinerary manager is not something easily accomplished and probably not a recommended decision.  This does enable some interesting possibilities though.  The original message service sample was driven by posts on the ESB Toolkit forums about logging to BAM.  In the ESBExtensions solution is the ItineraryV2 which extends the base ItineraryV1 from the Toolkit.  The purpose of ItineraryV2 is to potentially provide your own BAM logging on itinerary advance.  I did not implement this specifically but provide instructions on how to use this itinerary manager and also a snippet on where/how to log BAM data.

ItineraryV2

Wrapping Up

I have included installation instructions in the base directory of the sample in a text file called InstallInstructions.txt.   Also make sure to unzip the sample to the same directory as your other ESB Toolkit samples.  The strong name key file path is the same as other samples which is required to build the project.   If you do want to run the tests make sure the resolvers and message service are registered in the esb.config file.

This sample gives a good practical example of the various extensions points in the ESB Toolkit. Please see the zip file with the sample below. I hope to have something on extending adapter providers soon as well!

posted by Brendon Birdoes | 0 Comments
Attachment(s): ESBExtensions.zip

ESB Toolkit Message Service Sample: BAM Tracking

One of the nice features of the ESB Toolkit is that it was designed to be extended.  In fact the same way customers or vendors would extend the Toolkit is the same way we built in the core components.  Adapter providers, itinerary services (orchestration or messaging) and resolvers are great examples of this.  Usually the process is very similar for all:  implement an interface, register assembly in the esb.config and install into the GAC.

Another nice advantage of the Toolkit is to be able to achieve much more complex routing and processing in BizTalk without immediately resorting to orchestrations.  Important to this capability is the ability to create custom message services that can be executed as part of an itinerary.  The process to do this is documented here.

Since the source code is no longer available there are no samples showing an implementation of a message service.  Below is working sample of a message service that utilizes BAM to track business details about a message.  This is a simplistic sample, but provides a base class that could easily be extended for real world scenarios.

The installation instructions below assume the ESB Toolkit Core has been installed along with the Dynamic Resolution and Itinerary samples. To install the sample follow these steps:

  1. Unzip the files to the same location as where  the ESB Toolkit samples were unzipped to.  Usually this is the C:\projects\Microsoft.Practices.ESB\Source\Samples folder.  This is important because the sample uses the same key file as other Toolkit samples.
  2. Install the BAM tracking tables by using the bm.exe tool.  The BAM configuration file for Orders tracking is located in the BAM folder (usually C:\projects\Microsoft.Practices.ESB\Source\Samples\MessagingService\BAM\Orders.xml).
  3. Build the sample project by opening the solution in Visual Studio.
  4. Install the GlobalBank.ESB.MessagingService.dll into the GAC.
  5. Deploy the itinerary BAMMessageServiceItinerary.itinerary to the itinerary database.  This assumes the database is your repository for itineraries.
  6. Register the assembly in the esb.config file by adding the line below.  Make sure to change the public key token to appropriate public key token.  This line needs to go between the itineraryServices node.  The esb.config file is located in the installation directory for the Toolkit.

    <itineraryService id="7bf59311-1d01-43ee-bd19-45edb1350144" name="Global.ESB.Services.OrderTrackingMessageService" type="GlobalBank.ESB.MessagingService.OrderTrackingMessageService, GlobalBank.ESB.MessagingService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=<publickey>" scope="Messaging"  stage="All" />

  7. Run the itinerary sample test client.  This is documented here.
  8. Use the settings below. Once configured submit the request.

Itinerary Name: BAMMessageServiceItinerary

Load Message: C:\projects\Microsoft.Practices.ESB\Source\Samples\MessagingService\Data\NAOrderDoc.xml

The message is basically passed through and output to the same file location as other itinerary samples.  Their should be two entries in the bam_Orders_Completed once the process is complete.

There are some missing elements that I need to add.  Right now there is no appropriate resolver for this message service and UI support/extender.  I hope to have a part two to this post with those pieces as well which will show how to utilize resolvers in a message service.  Hope this helps!

posted by Brendon Birdoes | 0 Comments
Attachment(s): MessagingService.zip

Desert Code Camp Session

Thanks to all who attended my desert code camp session on Migrating from ASMX to WCF using the Enterprise Library. I have posted my demo code for those who are interested. The demo was built using Visual Studio 2008 SP1, the Enterprise Library 4.1 and the Northwind sample database, so make sure you have all installed before trying to run the demo.

ESB Toolkit 2.0 Released!

As one of the developers of the ESB Toolkit 2.0, I am excited to announce its general availability!  If you are using ESB Guidance 2.0 CTP2, I would highly recommend moving to the new bits to take advantage of all the great new features.  Here are some important links for the ESB Toolkit 2.0.

BizTalk Team Blog Anouncement

MSDN ESB Toolkit Page

Download Location

ESB Toolkit Forum

ESB Guidance 2.0 Is Now ESB Toolkit 2.0

ESB Guidance 2.0 is now ESB Toolkit 2.0 and should be released in the mid-June timeframe.   Right now the codebase is maintained on CodePlex as open-source and only supported through the ESB Guidance community.  The ESB Toolkit will be treated as a fully supported product by Microsoft and available for download.  This is an important step in the lifecycle of ESB Guidance which has moved from a concept to a fully supported product that is enterprise ready. 

Some of the most significant changes coming are:

  • Visual Designer integrated into Visual Studio 2008 for Itinerary creation.  This is one of the most significant new features that provides integration with a target BizTalk server allowing certain properties to be selected based on deployed BizTalk artifacts.  Itineraries are also validated to reduce the amount of debugging time when building itineraries.
  • The installation process has been improved and simplified.  A simple one server installation of ESB Toolkit can be done in minutes using a new installer and configuration tool.
  •  Most platforms or products cannot cover every scenario.  The ESB Toolkit has been built to be extended and enhanced without needing access to the code like the previous version.  The way the development team created resolvers, messaging services and adapter providers is the same way customers would extend the system.  
  • Server side itineraries that can be injected into a message on an On-Ramp.
  •  Many others!

The overall benefit is reduction in development time, BTS artifacts and configuration especially in message routing scenarios.

 

There are a lot of concepts and terms that may not be familiar in this post, so please feel free to get a head start with the ESB Guidance CTP2 available on CodePlex.  http://www.codeplex.com/esb.