• mwinkle.blog

    SOA Conference Questions


    I headed over to building 33 yesterday for the Microsoft SOA and Business Process Conference to host a Q&A session with some other people from the Connected Systems division (Clemens, Shy, Lee and Joe).  We had a pretty decent audience, and I wanted to repost the questions that I got here and answer them.

    Will Speech Server (or SharePoint, or other hosts) let me run activity x?

    The other big host to talk about right now is Office, in SharePoint.  The answer, in true consultant fashion is that it depends.  It will really be left up to the implementation of the host as to what behavior they will allow.  For instance, the SharePoint host will not allow the addition of additional services.  This has been done for performance, stability and security reasons.  SharePoint is also very particular about the activities it will allow to be executed, using the concept of a white-list in order to mark activities as able to be run.  You can imagine that allowing a code activity could be a very bad thing in SharePoint, and thus, it is not allowed. 

    These are all hosts for WF, their behavior is chosen to optimize for the scenario to be used in.  Similarly, you may have the same constraints, which you can enforce in your host, or maybe you have none of them, in which case, you don't need to implement any of them.

    Is the WF Rules Engine a Rete Engine?  (with follow on: If not, why not?)

    No, the WF Rules Engine is not based on a  Rete algorithm.  Check out Don's blog posting here.  There are a few relevent paragraphs I will repost here.

    There are plenty of resources out there that describe what the Rete algorithm does and why it is so often used in Rules engines. At the end of the day, Rete is an optimization. You don't need a Rete engine to implement a forward-chaining rules engine; however, the Rete optimization may improve the runtime performance of a Rule Set. That's what optimizations do. In particular, Rete reduces the number of predicate evaluations by remembering the most recent value and re-using it on subsequent re-evaluations.


    I certainly concede that there are many examples of Rule Sets that contain a lot of common predicates. In those cases, a Rete-based Rules engine like BRE will crush a non-Rete engine like WF Rules. However, in cases where there are few common predicates, the reverse has also been demonstrated: WF Rules and its non-Rete execution mechanism will crush Rete-based BRE.

    My point is simply that Rete is an optimization strategy that is not necessarily appropriate for all Rules-based solutions. For WF Rules, we placed much more importance on how much you can express in your Rules, how easy it is to express it, and how well it integrates into Windows Workflow Foundation and the .NET framework.

    If you're interested in more things about rules, Kavita emailed me the other day to let me know the team has started blogging here.

  • mwinkle.blog

    Look Mom, We Made CNET!!!

    The workflow Technical Learning Center appears in CNET's "The View From TechEd 2006"
  • mwinkle.blog

    Mechanical Turk Activities


    Mark Blomsma has put together some activities and an article which shows how to interact with Amazon's Mechanical Turk with WF activities.

    I've linked to the sample on here.

    Cool, cool, cool

  • mwinkle.blog

    Did you hear the news, .NET 3.0 is live


    Things got signed off last week, and early yesterday (depending on the timezone), the RTM build was published on MSDN.  James put the details up on the community site, and there's been a ton of people headed to check it out (look at all the trackbacks on James' post).  Thank you to all of the bloggers who have picked up the story and are passing it along.

    So, now what?  Well, there's still plenty of work for me to do, including looking forward to vNext (the great part of evangelism!)  In the short term, I'll be presenting today on Reliabilty, Scalability and Maintainability of workflows hosted in IIS here in Barcelona. I won't be talking about the IIS scenario nearly as much as the other three parts, as well as discussing some performance information.  After the talk, a number of us are headed to a soccer game, which I'm looking forward to.    Tomorrow, Paul Andrew and I are conducting a drop-in clininc for WF, so, if you got questions, stop on by.

    So, what's next for you?  Get the bits, get some training, and start writing workflows!


    [updated] realized I had a problem spelling "hear" in the title :-)

  • mwinkle.blog



    I'm moving on from my role as the technical evangelist for WF, but not too far.  I've joined the product team, working as a program manager (PM) for the Connected Tools team.  The job of the connected tools team is to provide all of the tools for the technologies inside the Oslo effort, including the WF designer.  As such, I'll be focused on the programming model for activity designers to use when they create WF activities.

    Oslo is interesting, as it represents the first real chance to look at the stuff we did in V1 of WF and think about it and find out ways we can improve on the experience.  .NET 3.5 was a very "constrained" release for the WF team, as we had only shipped about 12 months prior, so we were primarily concerned with adding functionality to what we shipped (the WF/WCF integration, for instance).  For WF, Oslo will be our first chance to take in a lot of the feedback we have heard (and keep it coming) to move things to the next level.  I'm excited to be part of that effort, especially from the designer side of things, as I see a great opportunity to simplify a number of things that a lot of our customers have been doing.

    It was a tough decision to leave DPE (developer and platform evangelism).  The job of a TE is probably one of the closest to geek nirvana one can achieve.  It was a bit odd when I was looking into this new position to lead off by saying, "I'm leaving the best job I've had."  I didn't do it because anything was wrong with the role, on the contrary, it is a perfect fit for anyone who is deeply passionate about technology and wants to drive that passion and excitement out to the rest of the world while working with an entire team of people focused on that goal.  My new role offered a really unique opportunity to have a large influence on the way people see WF (literally).  I'm also a bit crazy about making sure the tools are right, because that is going to be the bit of the technology most people will see first, and the way many people will interact with the product. Finally, when I look at the things I want to accomplish at Microsoft, shipping a product is a big item on that list. 

    As we're not talking publicly yet about a lot of the stuff we are doing in Oslo, I probably won't be blogging about it (that tends to be frowned upon for obvious reasons).  I'll still be posting about WF, and as always, am interested in your feedback (and will probably use the blog to solicit some as well).

  • mwinkle.blog

    .NET Rocks does Workflow


    I'm still digging out from TechEd, but while I did that I fired up my podcatcher and found a new episode of .NET Rocks waiting for me, with a title that caught my eye.  I then found that on .NET Rocks TV, June has been the "Month of Workflow."  Check it out!

  • mwinkle.blog

    Matt and Paul talk WF


    A few weeks back Paul Andrew and I sat down with Ron Jacobs to record this Arcast about WF. 


    The funny thing is that a few weeks before that, Paul Andrew and I sat down with Ron Jacobs to record that same Arcast, except there was a problem with the microphone and Ron's voice didn't get recorded, so it was as if Paul and I were extemporaneously responding to the voices in our heads about WF.

    There are more questions to go through, so we will be doing at least a part 2.  Any feedback or other questions you want to see answered? Let me know! 

  • mwinkle.blog

    A Few Additional Treats @ PDC09


    One fun thing we will be doing this year is using the theater in our lounge/booth area to have a few chalk style presentations.  These will be brief 30 minute demo/ q&a / conversation sessions with somebody from the product team.  These will dive a little deeper and be more interactive about topics we know you’re interested in.  We’d love you to come and just ask a ton of questions here:

    Thursday, 11:00-11:30 / Future Directions for State Machine Workflows  / Alan Ko

    Discuss options for using the State Machine modeling style on WF4, and see a demonstration of a WF4-based State Machine design experience.

    Thursday, 1-1:30 / Migrating WF 3.5 Workflows to WF 4 / Bob Schmidt

    Learn some tips and techniques for migrating your WF 3.5 workflows to the new WF4 runtime, and see a demonstration of a tool that helps automate this process.

    Thursday, 2:00-2:30 / WF Rehosting Deep Dive / Kushal Shah

    See how WF’s rehostable runtime, designer, and debugger can add powerful capabilities to your applications

    I’m excited because we’re going to use this as an opportunity to show some cool stuff that we’re thinking about.  Usual disclaimers apply, some of the stuff here we will show are prototypes, ideas we are looking for feedback, etc, etc.   These are things that we think are important, and your feedback helps us understand what you really need to make these things useful for you

    Stop on by the booth if you’re interested in any of the above topics!

  • mwinkle.blog

    WF & Sudoku


    I would be remiss if I did not point out this, a sample showing a nice WPF interface, WCF peer-to-peer communication, and WF to handle the logic of game generation.

    I'm going to take a look at it and see if we could use rules as the validation mechanism, that way there is a "server" and a "client" workflow component to the application.

  • mwinkle.blog

    WF, BPEL and the Dark Side of the Moon


    There are a few common questions I usually get when I talk about workflow:

    • That's great, but I can't use SQL Server, can I use foo ?
    • How can I use it to re-unite Pink Floyd for one last tour?
    • What about BPEL support?

    Question 1: Check out the Persistence Service sample in the SDK.

    Question 2:  Man I wish I could say yes, but that's probably a feature that might show up after Orcas if I have my way.

    Question 3: We've done some dancing around this on timelines when it has been brought up in the past, but Paul has the scoop here.  I think this is a great thing for our customers, the support for BPEL not only allows the use of additional process defintion artifacts in the enterprise, but is a great demonstration of the flexibility and extensibility of WF.

    Paul also talks about how this also impacts BPEL in BizTalk Server.

    I'm going to be filming a Channel9 video with the team behind this in the next week or so.  It's Vista Week on Channel9, once that's done I will try to get it posted quickly.

  • mwinkle.blog

    Writing a Map/Reduce Job for Hadoop using Windows PowerShell


    I had a little bit of time on my hand and wanted to whip up a quick sample using PowerShell for a Hadoop job.

    This uses the Hadoop streaming capability, which essentially allows for mappers and reducers to be written as arbitrary executables that operate on standard input and output.

    The .ps1 scripts are pretty simple, these operate over a set of airline data that looks like this:


    The schema here is a comma separated set of US flights with delays.

    The goal of my job is to pull out the airlines, the number of flights, and then some very basic (min and max) statistics on the arrival and departure delays. 

    My mapper:

       1:  function Map-Airline 
       2:  {
       3:      [Console]::Error.WriteLine( "reporter:counter:powershell,invocations,1")
       4:      $line = [Console]::ReadLine()
       5:      while ($line -ne $null) 
       6:      {
       7:          [Console]::WriteLine($line.Split(",")[1] + "`t" + $line)
       8:          [Console]::Error.WriteLine("reporter:counter:powershell,record,1")
       9:          $line = [Console]::ReadLine()
      10:      }  
      11:  }
      14:  Map-Airline 

    My reducer:

       1:  function Reduce-Airlines
       2:  {
       3:      $line = ""
       4:      $oldLine = "<initial invalid row value>"
       5:      $count = 0
       6:      $minArrDelay = 10000
       7:      $maxArrDelay = 0
       8:      $minDepDelay = 10000 
       9:      $maxDepDelay = 0 
      11:      $line = [Console]::ReadLine()
      13:      while  ($line -ne $null)
      14:      {
      15:          if (($oldLine -eq $line.Split("`t")[0]) -or ($oldLine -eq "<initial invalid row value>"))
      16:          {
      17:              $flightRecord = $line.Split("`t")[1].Split(',')
      18:              if ([Int32]::Parse($flightRecord[0]) -ne 0) 
      19:              {
      20:                  $minArrDelay = [Math]::Min($minArrDelay, $flightRecord[0])
      21:              }
      22:              if ([Int32]::Parse($flightRecord[3]) -ne 0) 
      23:              {
      24:                  $minDepDelay = [Math]::Min($minDepDelay, [Int32]::Parse($flightRecord[3]))
      25:              }
      26:              $maxArrDelay = [Math]::Max($maxArrDelay, $flightRecord[0])
      27:              $maxDepDelay = [Math]::Max($maxDepDelay, $flightRecord[3])
      28:              $count = $count+ 1
      29:              [Console]::Error.WriteLine( "reporter:counter:powershell,"+$oldLine + ",1")
      30:          }
      31:          else
      32:          {
      33:              [Console]::WriteLine($oldLine + "`t" + $count + "," + $minArrDelay + "," +$maxArrDelay + "," + $minDepDelay +","+ $maxDepDelay)
      34:              $count = 1
      35:              $minArrDelay = 10000
      36:              $maxArrDelay = 0
      37:              $minDepDelay = 10000 
      38:              $maxDepDelay = 0 
      39:              [Console]::Error.WriteLine("reporter:counter:powershell,"+$oldLine + ",1")           
      40:          }
      41:          $oldLine = $line.Split("`t")[0]
      42:          $line = [Console]::ReadLine()
      43:      }
      44:      [Console]::WriteLine($oldLine + "`t" + $count + "," + $minArrDelay + "," +$maxArrDelay + "," + $minDepDelay +","+ $maxDepDelay)
      45:  }
      47:  Reduce-Airlines

    One thing to note on the reducer is that we use the $oldLine variable in order to keep tabs on when our group of results is moving to the next one.  When using Java, your reduce function will be invoked once per group and so you can reset the state at the beginning of each of those.  With streaming, you will never have groups that split reducers, but your executable will only be spun up once per reducer (which, in the sample here, is one).  You can also see that I’m writing out to STDERR in order to get a few counters recorded as well.

    The next trick is to get these to execute.  The process spawned by the Streaming job does not know about .ps1 files, it’s basically just cmd.exe.  To get around that we will also create a small driver .cmd file and upload the file with the –file directive from the command line.



    @call c:\windows\system32\WindowsPowerShell\v1.0\powershell -file ..\..\jars\AirlineMapper.ps1



    @call c:\windows\system32\WindowsPowerShell\v1.0\powershell -file ..\..\jars\AirlineReducer.ps1


    The ..\..\jars directory is where the –file directive will place the files when they execute

    And now we execute:

    hadoop jar %HADOOP_HOME%\lib\hadoop-streaming.jar 
        -mapper d:\dev\_full_path_\AirlineMapperPs.cmd 
        -reducer d:\dev\_full_path_\AirlineReducerPs.cmd 
        -input fixed_flights 
        -output psMapReduce3 
        -file d:\dev\_full_path_\AirlineMapper.ps1 
        -file d:\dev\_full_path_\AirlineReducer.ps1

    And we get our results.

    There is still some work to be done here, I’d like to make it a little easier to get these running (so possibly wrapping submission in a script which takes care of the wrapping for me).  Also, on Azure, we either need to sign the scripts, or log into each of the machines and allow script execution.  As I get that wrapped up, I’ll drop it along side our other samples.  We’ll also work to make this easier to get up and running on Azure if that’s interesting for folks.

  • mwinkle.blog

    VS 2010 RC Is Available


    We’ve been hard at work here in Redmond (and with our team in Shanghai) working on getting WF ready for release.  We’ve made a ton of progress in the RC build that was made available yesterday, please download it and check it out.  Also, and in important bold text, if you have feedback, please, please, please file an issue on Connect so that the team can look at it right away.  One thing that I want to point out about Connect is that it is not a vacuum, the entries there go directly into our bug tracking system, which we look at daily in our various shiproom meetings.  If something isn’t working right, please let us know!


    We’ve fixed a number of issues that came directly from Connect in this last milestone, including some areas that revealed some gaps in our testing.  Your feedback is making this better.  For bugs that we’ve marked as postponed, as we start planning for vNext, we will start going through those to figure out the areas we need to improve on. 

    It’s cool the home stretch, this morning I presented to our support team to get them prepared to handle any PSS incidents that occur.  It’s great to see the release coming together.

  • mwinkle.blog

    TechEd Workflow Chalk Talks


    One of the things that worked out incredibly well at TechEd was our chalk talks.  We had a small theater set up with about 20-30 seats, a whiteboard and a small monitor for presentations.  A number of the chalk talks on Windows Workflow Foundation were "steal a chair" events, where more people showed up than chairs.  These talks were a great chance to dive deep into some specific areas of functionality, answer questions and head on over to the whiteboard to work through some design issues as well.

    Now we have the talks posted on the community site, so check them out.

  • mwinkle.blog

    Back From Barcelona


    I arrived into SEA yesterday around 3, so I'm feeling a little bit of the 'lag from my week in Barcelona.  A few things to point out:

    • Tim has a fantastic "Vista on the M400" post.  The little dude's getting an upgrade while this gets typed, results in a future post
    • Kudos to who-ever put together this diagram.  I think it could be made a bit better by having links to the section of MSDN which further explains how to dev, say, win32 or hybrid applications, but it's a nice way to represent and download the bits you're interested in. 
    • The long awaited WF perf whitepaper is available, as Paul points out.  As Paul mentions, the 10K empty workflows per second is not a number one should run out a room assuming can be obtained, but there are a few things that I really liked seeing:
      • What happens when we scale out?
      • Should I implement a while loop in my code to loop 1000 times, or should I use the While activity?  This is one of my favorite examples when people ask "How should I think about moving to a WF driven design?"  I like this paper as it explains things in terms of trade-offs.
      • Finally, beneath figure 13, the discussion of the overhead involved with using the tracking service is discussed.  This is important, and it shows the difference between batching and not batching the "transactions" of the tracking service.  Transaction is mentioned in quotes as these have little to do with System.Transactions, rather when tracking data is written to the database.  The number to notice here is not just workflows per second, but also the increased load on the SQL Server.  Again, these are just some things to think about when you start discussing "perf" with workflow.  The papers about 50 pages long, so there's a bunch of stuff to see there.  Check it out!
    • Thanks to everyone who dropped in on my sessions in Barcelona.  I'll be posting some followup information when I get a little time to recover (or at 3:30 tomorrow morning when I am wide awake and thinking it is lunch time in Barcelona :-) )
    • There's also this page, which is a nice gateway into downloading all sorts of the things we talked about at TechEd.
  • mwinkle.blog

    So, maybe you're not going to TechEd this year...


    No problem, you can still take part in the sessions.  Dennis will be doing one that talks about using Workflow Foundation and WCF together, always a topic a lot of people ask about.  It just so happens that talk will be broadcast live.  There's also a talk broadcast live on ASP.NET and WF.  If that's not what you're looking for, there will be a lot of sessions broadcast, check out this page.

  • mwinkle.blog

    Hanging in the Speaker Room


    No One of the best parts of any conference is hanging out with the other speakers and osmosing off some of the collective brainpower in there.  Some times it is big concepts, other times, it's the little stuff.

    Like my new favorite feature of Vista (Show Desktop Icons)


    No more need for a folder where I have to hide all that other stuff on my desktop.

    Right click, view, ShowDesktop icons.



  • mwinkle.blog

    Speech Server Video on Channel 9

    Channel 9 has just posted a video showing off the new version of Speech Server.  Speech Server is one of the applications from Microsoft built using Windows Workflow Foundation.  As you can see in the video, they have created activities related to speech tasks, and allow you to arrange them using the workflow designer to give them drag and drop capabilities to design a speech app.  The goal here is to make authoring speech applications a whole lot easier.  The workflow designer makes its first appearence at 8:05 in the video!

    Check it out!

  • mwinkle.blog

    Great Workflow Quote


    From Brian R's blog:

    "Workflow is both cute and pretty"

    A little more background on the quote will be coming in my next post!

  • mwinkle.blog

    Yet Another TechEd Post


    There is one additional chalk-talk that is not in the previous list.  In addition to chalk talks that dive deep into technical areas, we've got one from a customer who has just wrapped up a project that deployed Workflow.  Marc has been working with them on this, and they're going to talk about what they've done.  This is a great chance to hear about WinFX from someone who has already deployed it in their production environment.  The details are below:


    Abstract: Credit Suisse Group is a leading global financial services company, providing clients with investment banking, private banking and asset management services worldwide. Like in most enterprises, Credit Suisse provided their developers with physical machines for development. Issues such as combination of authorization, physical delivery times and compliance-related workflows led to slow development timeframes. Their R&D group built an extremely extensible self-service virtual-machine provisioning system that enables software developers in a fraction of the time to easily, securely and rapidly provision on-demand disposable workstations, servers, and multi-tier environments. Credit Suisse will exponentially increase software developer productivity, drastically lower IT costs and ensure compliancy with continuously stringent regulatory requirements. The solution uses Windows Workflow Foundation, Windows Communication Foundation, and Virtual Server.

    Speaker: Leslie Muller (Architect - Credit Suisse Global R&D)

    Location: Thursday 6/15/2006 from 10:15-11:30 in Theatre 2.

    If you can't make it to TechEd but are interested in this, please contact me and I'll see what I can get to you!

  • mwinkle.blog

    Where Are the Tools?


    I get a number of queries about when WF will ship, or (more frequently) when the tools will be ready.  The answers are "done" and "done."  I've had two internal requests in the last week along these lines, so I wanted to try to state this as clearly as possible.  The tools for WF are released and supported.  The tools for WCF and WPF are in CTP and will continue to be updated in a CTP like fashion.

    You can get the bits from the list of links here.

    It is important to point out that the "Visual Studio 2005 Extensions for .NET Framework 3.0 (Windows Workflow Foundation)" is shipping and supported, while similarly named "Visual Studio 2005 Extensions for .NET Framework 3.0 (WCF and WPF), November CTP" are being published as a CTP, so things can and will change with the WCF and WPF tools.  Let me say that one last time in case you got caught up in the names: 

    The tools for WF are released.  You can use them today. 


  • mwinkle.blog

    .NET 3.5 on Channel9


    Following the big announcement last week, I got tapped to do a quick c9 interview with Shawn Burke.  Check it out here if you have 11 minutes or so to spare and want to see what the .NET source debugging will look like.

    Additionally, I see on the homepage that Jack is talking about the add-in framework in the latest video there.  Folks, if you work on a project where you want to allow add-in functionality, or have the need to version components separately and distinctly from the host, you need to check this out.  There are a few moving pieces and parts, but if you need to enable this scenario, investing up front in thinking through these bits and pieces will be enormously helpful.

  • mwinkle.blog

    WF and BizTalk Server 2006 R2


    One of the cool things coming in BizTalk R2 is a tracking service for WF that talks to BAM.  Jesus Rodriguez has put together a walkthrough of using the BizTalk Server R2 BAM interceptor for WF.

  • mwinkle.blog

    Solution Showcase Launched


    Head on over to http://showcase.netfx3.com and check out the solution showcase.  You can dive down and search through the tag cloud to find solutions that are interesting to you. 

    If you'd like to have your solution featured here, go to this form and submit the information.  We'd love to find out more about how you're using the .NET Framework 3.0 technologies, and let you get the word out about your solution.

  • mwinkle.blog

    N of M Question (Why Use ActivityExecutionContextManager?)


    In this post, mstiefel  asked the following:

    # re: Implementing the N of M Pattern in WF

    Since you are not looping, do you have to use the ActivityExecutionContextManager to generate a new context for the child activities? Couldn't you use the context passed into the Execute method?

    Friday, July 06, 2007 7:54 PM by mstiefel

    If I were creating a parallel activity, and simply wanted to execute a number of distinct child activities, I would just use the passed in context as you suggest to schedule execution of each of the activities.  The difference here is subtle, and that is I don't have distinct child activities, I have one child activity which I need to clone m times and execute those cloned children separately.  The need to create the context is so that each one of those clones maintains it's own execution context, what variables are where, who is in what state, etc.  This is important while executing, and while after completion in the need where I want to compensate for the individual activities.

    This line

    ActivityExecutionContext newContext = aecm.CreateExecutionContext(this.Activities[0]);

    is what will cause the activity to be cloned, allowing me to schedule the execution of the clone, and not the template activity (which, incidentally, will never be scheduled, leaving me with m+1  copies of the activity.  This is the same behavior that I get in a While or a Replicator (or the CAG, depending upon how it is configured).  A state machine workflow will do a similar thing as I may re-enter a state multiple times. 

    If, instead of allowing a user to specify the list of approvers and dynamically creating the activities, I designed it so that a user would have to drop and configure an activity for each approval (similar to the parallel activity), I would have used code like this:

    // Code to schedule distinct activities in parallel, aka code similar to the parallel activity
    protected override ActivityExecutionStatus Execute(ActivityExecutionContext executionContext)
            foreach (Activity activity in ChildActivities)
                // i is some counter I use to track how many branches there are so I know when
                // I am done
                // I'm interested in what happens when this guy closes.
                activity.RegisterForStatusChange(Activity.ClosedEvent, this);
            return ActivityExecutionStatus.Executing;

  • mwinkle.blog

    WF Beta 2 vs. Beta 2.2


    As announced on the community site, Windows Workflow Foundation (WF) Beta 2.2 is available here.

    A very important point to note: You can not install this on top of an installation of the February CTP of WinFx.  So, if you have WinFx installed you will have to uninstall it, all the pieces and parts, in order to install Beta 2.2. If you are focused on a solution that only leverages WF, and not WCF or WPF, and want to upgrade to a newer version of the bits which are closer to the version which will be released, this is the path for you.  If you are building a solution that leverages additional WinFx technologies, you will want to stick with the February CTP. 

    The install of Beta 2.2 contains all of the components (see below) of a WF install, and is titled the "Microsoft Visual Studio 2005 Extensions for Windows Workflow Foundation Beta 2.2."  That's a mouthful.  For Beta 2.2, this is the only thing that you need to install.  A summary of the changes are contained here.

    On to a completely different topic.  I've also gotten some questions about why the WinFx install contains what seems like 3 different installs.  The simple answer is that there are really three components to WinFx (and thus, applies to WF).

    • The WinFx runtime:  This is all you need if you want to run WinFx applications.
    • The Windows SDK: As WinFx is a platform component of Windows, it has a Windows SDK component, consisting of samples, documentation, etc.  This is what you need if you want to build WinFx applications. 
    • The Visual Studio Extensions:  This is the design component that integrates with Visual Studio and contains documentation to that effect.  This is what you need if you want to design WinFx applications in Visual Studio.  A similar component is the CTP of the "Orcas" designer for WPF applications (available here).

    So, three pieces: runtime, SDK, designer, and now you know why they are there. 

Page 5 of 6 (148 items) «23456