Awarded MVP BizTalk Server 1st July 2010

This is an exciting moment, before summer holidays will start. I have been awarded by Microsoft with 2010 Microsoft%u00ae MVP Award. I was working today and after finishing diner with the family I opened my mailbox and found the ’Congratulations 2010 Microsoft MVP!’ email from Microsoft. I cannot describe how happy I am and how rewarding it feels to receive such an award.

I would like to thank all people at Microsoft (ones that nominated me), community members and other involved. My wife and children for enduring the long hours without me, while I was blogging, writing or participating on forums. I would dedicated this to them.

Finally I also would like to thank my dear friend and buddy Joost Smit, who always believed in me and support me last couple of years in my career.

P.S. No logo yet as I have to wait for my logo kit.

Technorati: biztalk

WF Tip: Use a StringWriter to capture WriteLine Activity output when testing

Question: Suppose you want to test an activity that uses WriteLine and you want to verify the output.  How do you do it?

Answer: Add a StringWriter to the Extensions collection before running your test

Testing this activity

Use this test

[TestMethod]

public void ShouldSayHelloWorld()
{

var wi = new WorkflowInvoker(new HelloWorld());

// The WriteLine activity will use an extension
// of type TextWriter instead of the Console
// if it finds one
var writer = new StringWriter();
wi.Extensions.Add(writer);

wi.Invoke();

Assert.AreEqual("Hello\r\nWorld\r\n", writer.ToString());
}

But… what if you had 100 lines of text?  It would get pretty tricky to deal with the writer text.  In that case, you could split the buffer into an array of strings using Regex which makes it much easier to work with.

[TestMethod]

public void ShouldSayHelloWorldUsingRegex()
{
var writer = new StringWriter();

var wi = new WorkflowInvoker(new HelloWorld());
wi.Extensions.Add(writer);

wi.Invoke();

// If you have a lot of text to verify
// splitting the writer into an array of strings
// makes it easier to deal with
string[] lines = Regex.Split(writer.ToString(), Environment.NewLine);

Assert.AreEqual(3, lines.Length);
Assert.AreEqual("Hello", lines[0]);
Assert.AreEqual("World", lines[1]);
// There is always 1 blank line at the end
Assert.AreEqual(string.Empty, lines[2]);
}

 

.NET 4.0 Windows Communication Foundation certified

On 23 april I took the WCF 4.0 beta exam 71-513.

86 questions plus questions review…

In my opinion, the questions covered every feature (including the new ones).

To me, the REST questions were the most difficult, maybe because this is the feature I use least on projects. If you want to pass, don’t forget to study the new 4.0 features!

Today I received a mail from Microsoft that I passed the exam 🙂

 

Peter Borremans

Introducing the WF Security Pack CTP 1 on wf.codeplex.com

Today, we would like to announce the release of the WF Security Pack CTP 1 on http://wf.codeplex.com.  Where did it come from?  Quite simply, from you: real WF 4 customers who have spent time banging their heads against the wall trying to get certain security scenarios working with WF 4.  From your feedback, we’ve put together this Activity Pack to fill in some gaps that you have identified.  Let’s take a quick look at what is covered.

The Microsoft WF Security Pack CTP 1 is a set of 7 security-related activities, designers, and the associated source code based on WF 4 and the Windows Identity Foundation (WIF).  The scenarios we targeted were the following:

  • Impersonating a client identity in the workflow.
  • In-workflow authorization, such as PrincipalPermission and validation of Claims.
  • Authenticated messaging using ClientCredentials specified in the workflow, such as username/password or a token retrieved from a Security Token Service (STS).
  • Flowing a client security token through a middle-tier workflow service to a back-end service (claims-based delegation) using WS-Trust features (ActAs).

Now, my question for you is: are these the right set of scenarios to target for the next .NET framework release?  What is missing?  Which is the most important?  Again, we want your feedback so that we can make the right decisions for the long-term benefit of the product.  Use the Discussions tab, our WF 4 Forums, a carrier pigeon, whatever it takes to get us some feedback.

Ok, here are three great ways to get started:

  1. Download the WF Security Pack CTP 1 from wf.codeplex.com, add a reference to the Microsoft.Security.Activities.dll in your WF 4 project, and check out the “Security” tab in the Toolbox.
  2. Take a quick read through the User Guide introduction to get a feel for what is included.
  3. Download the WF Security Pack CTP 1 Source code, open up the WorkflowSecurityPack.sln, and take a look at the activity APIs and the rest of the moving pieces of the implementation.

In the next couple of weeks, we’ll take an in-depth look at these scenarios and how you can use the WF Security Pack CTP 1 in your projects.  Stay tuned for that content here on The .NET Endpoint & on zamd.net (special thanks to Zulfiqar Ahmed, Microsoft Consultant, for his help in building this Activity Pack!).