25. January 2010 05:02
I had a great time presenting at the TC Cloud Computing User group about a week ago. The group is still kind of small, but growing rapidly and pulling together good content as well as hands-on opportunities for people to get going on cloud technologies. This particular presentation was on the Azure platform AppFabric (ServiceBus and Access Control). For those of you who attended, the demos I used are in the attachments as I mentioned
13. November 2009 03:24
Not that I’m surprised by this move; I mean, who would expect Amazon to sit on their laurels and let Microsoft claim the masses of .NET developers. One of my main complaints with AWS has been the lack of tooling for consuming the services. Having a REST API provides great reach and flexibility, but if you truly want to get people building on your platform, often you have to lower the bar to entry. This SDK is aimed squarely at Azure and comes just one week before PDC – smart marketing Amazon. It appears, at a quick glance, that the SDK provides simple .NET wrappers around the web APIs for AWS and source code of course gives you ultimate flexibility to modify. What it doesn’t have is something to compare to the developer fabric for building and testing your Azure applications locally. give the services they provide, this makes sense, but I wonder if people will really see this as comparable to the Azure development tools.
Read about this SdK and other news from Amazon on their website.
10. November 2009 07:39
I’m not surprised at all about this announcement from Doug Purdy about the changes coming to the “Oslo” tools. Ever since the Connected Systems group was “merged” with the data group, it seemed a foregone conclusion that the modeling work would begin to heavily focus on the Microsoft data stack. I’ll wait to see how the tools evolve before making an opinion about their usefulness. I’m actually optimistic that in the end, more Microsoft developers will be better off as the tools will be more likely to help them in their everyday development. As it was, the M language and associated tools seemed to be targeting a niche market of language developers. Looking forward to PDC and hearing all about how these new tools are going to help me model my application data and hopefully help build up a good deal of the infrastructure for my data access layer.
29. October 2009 04:21
A little late on this post, but my excuse is that I’ve been traveling pretty much since I left HDC. I had a great time at the show this year as Pluralsight was able to have a significant presence with our marketing team (Meagon) and three speakers (myself, Kent, and Aaron). I wish I was the one leaving with that ZuneHD, but I’m pretty sure the lucky winner is enjoying it. Hopefully folks who attended have checked out there free week of Pluralsight On-Demand so they can see what we are doing with our online training – customers are telling me they really love being able to go online anytime and watch a knowledgeable instructor walk them through some content.
The show was well organized and had a lot of cool social and networking opportunities. I’m really glad we have a show like this in the midwest, and hope we can build on the HDC model to have more in the years to come.
Here are the materials from my two talks at HDC. I’ve included a Beta 2 update for the WF4 sample code since Beta 2 shipped just days after the conference. Hopefully that will make the transition easier for those of you who attended.
22. September 2009 04:37
I found this post on the BizTalk Customer Response team blog about the problems people are having with the BizTalk project system integrated into Visual Studio 2008. Apparently, the team built very closely on the C# project type, but that integration is causing some problems as any patches to VS can cause values to be overwritten, removing the relationship of the btproj to the csproj projects. I have run into this on several machines and always had to repair the BizTalk installation in order to fix it. That takes more time than I think it should to fix this type of problem, so I was glad to see the solution is a simple registry edit.
You should be able to create a reg file the following contents to fix this on an x86 box:
Windows Registry Editor Version 5.00
For a 64-bit installation, you can use a similar file, but with a slightly different path for the key. So the reg file would look like this:
Windows Registry Editor Version 5.00
I plan on having these registry files around on my machines with BizTalk developer tools on it so that I can quickly apply this fix anytime I patch (or Windows Update patches for me) my Visual Studio installation.
4. September 2009 17:18
A couple of weeks ago, I sat down with Jeff Brand to do a podcast on the .NET Service Bus and Cloud Computing in general. We had a fun conversation about the cloud and why it is such a big deal, then dove into more detailed conversation about the .NET Service Bus. Get the link for the audio from Jeff’s post.
I’m really getting excited for the release of Windows Azure and seeing the kinds of applications people build on this new platform.
12. August 2009 07:17
We’ve recently added a short course on “Dublin” to our subscription-based on demand library. This is very much an early adopter course using very early bits released last year at the PDC. The intention is not to provide detailed information on specifics around the technology as those will most definitely change, rather I wanted to provide enough information and detail so developers can figure out “What is Dublin?”.
The modules provide an overview as well as showing the tools provided by, or built upon by, “Dublin” to deploy and manage your services.
Hopefully, these early look modules are helpful to you as a developer as you prepare for the next wave of connected systems technologies from Microsoft. As “Dublin” reaches further milestones such as Beta and Release Candidate status, I will be updating the course, and adding more content to round it out with deeper detail.
4. August 2009 05:15
I’m happy to announce that the WF 4 whitepaper I wrote this spring has been published on MSDN and is ready for viewing. This was a fun paper to write digging into the new bits for WF coming in the framework. I’m very excited about the new models for activities and workflows and being able to do totally declarative workflow programming. The new designer model is awesome and I can’t believe how easy it is to rehost the designer.
A Developer’s Introduction to Windows Workflow Foundation (WF4) in .NET 4 Beta 1
The paper is based on Beta 1, which means you can download the bits and play along.
At the same time, Aaron’s paper on WCF in .NET 4 has been published and contains a lot of the workflow service content as well as all the new features coming in WCF 4.
30. July 2009 12:25
I’m happy to announce that we have two new BizTalk 2009 courses available for instructor led training: BizTalk Server 2009 Fundamentals and SOA and BPM Fundamentals with BizTalk 2009.
The BizTalk Server 2009 Fundamentals class is for .NET developers new to BizTalk who need a solid grounding in the messaging and orchestration capabilities of BizTalk. It covers the messaging architecture, schemas, maps, adapters, routing, pub/sub etc. and the orchestration capabilities. In addition, it provides coverage of using WCF to expose BizTalk as service endpoints, or to consume services from BizTalk solutions. In this class, I took a slightly different approach from our traditional classes with the introduction of two hands-on projects during the course. These projects provide students with real world challenges to solve without the step-by-step instructions of a lab manual. Students in previous classes have really enjoyed these challenges and commented on how well they helped solidify the material.
The SOA and BPM Fundamentals with BizTalk 2009 provides existing BizTalk developers with more in depth training on the capabilities of BizTalk Server and the ESB Toolkit when working with BPM and SOA solutions. Like the other class, this one mixes lecture and labs with hands-on projects to help solidify the learning. This course focuses on BPM capabilities such as the Business Rules Engine, BAM and the ESB Toolkit Portal as well as SOA topics including on/off ramp and itinerary processing in the ESB Toolkit and a deep dive on the WCF adapters.
Talk to our sales staff to schedule on-site deliveries of either training, and look for the online version in your Pluralsight On-Demand! subscription in the fourth quarter of this year or first quarter of 2010.
26. June 2009 08:45
First, this post is not about any automated tools for mapping your activities, so don’t get too excited. :) Instead, I wanted to take the opportunity to talk about the changes to the base activity library in the context of the activities available today in WF 3. If you are using WF today, there are some activities that have direct counterparts, while others are split into multiple activities and yet others disappear completely. Of course there are also some new activities that were not available in WF 3. In the tables below, I outline each of these different categories with some notes. Hopefully this mapping helps you see what is changing, what is new, and what goes away.
NOTE: this information is based on Beta 1 of WF 4 and some changes are possible, though nothing big is likely, between now and the RTM.
Activities with direct or indirect equivalents
|WF3 Activity ||WF4 Activity ||Notes |
|Delay ||Delay ||The activity works the same, but the timers are handled differently in the framework. |
|Sequence ||Sequence || |
|Parallel ||Parallel ||Similar, but the internals of execution may differ slightly by RTM. |
|Replicator ||ForEach<T>, ParallelForEach<T>, |
|These provide <optional> typed access to the instance data and truly declarative authoring experience. Each represents the different execution modes of the Replicator activity – so it has been split into four similar activities. I think most people will use the generic versions more than the others, but time will tell. |
|CallExternalMethod ||InvokeMethod, InvokeMethod<T> ||Provides .NET method invocation and optional return of a typed return value. This can be a call on an instance stored in a variable or a static method. |
|HandleExternalEvent ||Receive, ReceiveAndSendReply ||WCF messaging activities replace the Local communications model, even for host-> workflow communication. |
|Listen ||Pick ||The Pick activity is the primary WF4 activity that replaces the Listen and the State which were both containers for EventDriven activities. |
|EventDriven ||PickBranch ||This is an indirect mapping and you don’t use the PickBranch outside the pick, but it serves the same basic purpose of the EventDriven. |
|Compensate ||Compensate ||Though the mechanism are slightly different, the activity serves the same purpose – to execute the compensation handler for a compensable scope. |
|CompensatableSequence ||CompensableActivity ||The new activity includes a ConfirmationHandler which can execute when a confirmation is signaled using the Confirm activity. |
|FaultHandler(s) ||TryCatch ||The try catch logic is more explicit now and you use the TryCatch activity to model your fault handling instead of using fault handlers on the composite activities. |
|IfElse ||If ||In WF 4, this can only have two branches, the If and the Else. For more branches, use the switch activity. |
|InvokeWebService ||Send, SendAndReceiveReply ||All web service communication in WF4 uses WCF. |
|Throw ||Throw || |
|TransactionScope ||TransactionScopeActivity || |
|WebServiceInput (output and fault) ||Receive, ReceiveAndSendReply ||WCF is THE messaging system to use with WF. |
|While ||While/DoWhile ||WF4 introduces the DoWhile in addition to the While to ensure the first iteration executes. |
WF3 Activities with no direct WF4 equivalent
|WF3 Activity ||Note |
|ConditionedActivityGroup ||Based on limited use (my guess) this activity was not moved to WF4. |
|Code ||There is no code-behind file for workflows so there is no place to write code in the workflow. Create custom activities or use expressions where appropriate. |
|EventHandlingScope ||No real equivalent, probably b/c this is an activity that gets overlooked or people use the state machine instead. |
|InvokeWorkflow ||In the Beta, there is no activity like this one. One option is to host child workflows as WCF services and use the Send or SendAndReceiveReply messaging activities to start the child workflows. |
|Policy ||In order to use rules in WF4, create a WF3 activity with a Policy activity inside it. Create properties on the activity and use them in the policy definition. Then use the InteropActivity to invoke the WF3 activity and execute the policy. You can use the properties on the activity as input and outputs to the policy. |
|Suspend ||In WF4 there is more focus on having a “suspend on error” style exception handling, so direct suspend is not currently supported in the form of an activity. |
|SynchronizationScope ||Again, my assumption here, this was not used a lot by folks so didn’t get moved over. |
|Terminate ||No direct option to terminate, but exception handling has changed so that when a workflow throws an exception, you can abort, terminate or cancel it. |
|CompensatableTransactionScope ||In WF4, use a Compensable activity and put a TransactionScopeActivity in the body. |
|State, StateInitialization, StateFinalization ||There is no State Machine workflow in WF 4. |
WF4 activities with no direct WF3 equivalent
|AddToCollection<T> ||Helper activity to simplify declarative workflow development and manipulation of collection variables. |
|Assign ||Assigns a value to a variable – useful for declarative workflows. |
|CancellationScope ||Allows you to define a scope of work and the steps to take if that work is canceled. Replaces the cancelation handler in WF3. |
|ClearCollection<T> || |
|Confirm ||Schedules the Confirmation logic for a Compensable activity. |
|ExistsInCollection<T> || |
|Persist ||Explicit declaration of persistence from the workflow. Replaces the need for the PersistOnClose attribute on activities. |
|RemoveFromCollection<T> || |
|Switch<T> ||Provides multiple branches of execution each based on a specific result from evaluating an expression. |
|Interop ||Executes a WF3 activity in the context of a WF4 workflow. All public properties on the activity become In/Out arguments. Custom designers are not supported. |