Chris Craft's blog

  • Momentum is building

    Microsoft can’t keep me quiet for much longer. I haven’t written about Dublin for many months, and I’m about to explode. Lucky for me we’re getting close to a public release, when I’ll be able to talk about features specifically and post new screenshots.

    The first customers who will get Dublin bits are those who have been accepted into our TAP program. This is a great way for customers to get the technology early and a great way for us on the team to get early feedback about our product. See this page for more information and a pointer to how to apply for the program. By the end of the year we plan to release a public beta for everyone.

    The themes of Dublin haven’t changed since I last wrote. Dublin is a set of extensions to the Windows Application Server role that make .NET 4 WCF and WF services easier to use. Some specific areas of focus are:

    • Deployment
      In Dublin we talk a lot about deployment. We demonstrate some cool capabilities of packaging and deploying web applications from Visual Studio 2010 and IIS Manager. These are really cool features. They’re just not ours. The IIS team is building MSDeploy, and we leverage the heck of that in Dublin. In earlier coding milestones we built our own wrappers over MSDeploy. As we’ve seen the MSDeploy features evolve, however, we’ve found that there’s no need for us to wrap them. Now when you see us demo Dublin you’ll see the same deployment experience that you’ll get “out of the box” with MSDeploy. If you’re not yet familiar with the MSDeploy technology go check out that team’s blog here.
    • Service visibility and configuration
      In IIS Manager Dublin lets you see the .NET 4 WCF and WF services hosted in WAS. You can also configure them to set things like throttling, monitoring level, and persistence (for workflows).
    • Monitoring
      WCF and WF in .NET 4 come with some great Monitoring enhancements. In WCF we’re giving you fewer, more meaningful events. (We call these AppTrace events). In WF we’re giving you great flexibility with tracking levels and tracking profile customizations. Dublin features capture this data into a database that we use to populate a dashboard in IIS Manager. On the dashboard you can see service activity, and you can drill into raw tracked events when you want to see the specifics of a service invocation or workflow instance.
    • WAS hosting
      Our team has worked closely with the IIS team to build some features that make WAS a better host for WCF and WF services. Our goal is to make WAS the de facto host for these types of services. (“Why build your own host when you get this one—with its toolset—for free?!”)
    • Workflow instance management
      WF in .NET 4 offers mechanisms that let you control running workflow instances. Dublin gives you a management experience around this functionality. Through our IIS Manager modules and PowerShell cmdlets you can see workflow instances. You can also resume suspended instances, terminate running instances, etc.

    My role on the Dublin team has changed quite a bit since the last time I wrote. I started out as the “integration dude.” My job was to define core user scenarios, try them out, and give my feedback to the feature teams. I had a blast with that. It allowed me to get a good perspective of Dublin as a whole and to learn about all the feature areas. A few months ago I moved over to our Tools team. We’re the team that builds the IIS Manager and PowerShell features. I own some of the Monitoring features, specifically the raw tracked event view that you will use to troubleshoot problems with your services. Being on a feature team gives me the chance to go deep in a feature and help shape the product more directly. I’m having a good time with this and like getting my hands dirty.

    But the team can’t keep me quiet. (Do you see the pattern here?). I’ll always have my end-to-end focus and big mouth. My big mouth turns out to be handy for demos and presentations, so you’ll still see me often act as the “demo monkey” for Dublin.

    I want to hear from you. What questions do you have about Dublin? Which features are you energized about? Which ones need work?

  • How should we think about service configuration in a distributed environment?

    Lately we've been having some interesting discussions about how to think about distributed service configuration. We've built some neat tools in IIS Manager that make it really easy to configure WCF and WF services--to set persistence, adjust throttling settings, etc. These IIS Manager tools calls PowerShell cmdlets which update the service's web.config files.

    The tools will give a great experience for configuring services on a single machine. We will not deliver a distributed configuration experience in this release, though. If you have 5 machines in a web farm you will have to configure each one independently. I don't think that it's realistic to expect users to connect to each machine and repeat a series of steps over and over. That would just be too error prone.

    Here are a couple of scenarios for making this practical:

    1. Use IIS shared configuration and shared content. IIS gives you the ability to point multiple machines to one set of files shared between them. In this scenario a user would connect to one of the machines in the farm and use our tools to change configuration. The rest of the machines in the farm would pick up the changes.

    2. Do not share files between machines. Use MSDeploy to synchronize content across them. The user would connect to one machine and use our tools to make configuration changes and then use MSDeploy to push the files from the updated machine to the rest in the farm. The MSDeploy commands could be scripted and executed in parallel. [Alternately, the user could simply use robocopy to copy the updated files to the other machines.]
  • A quick look at the IIS Manager tooling experience

    IIS Manager is the management tool for WAS, and in Dublin we're extending this tool. Here is a quick look at some of the extensions we have added to IIS Manager. These screen shots are from a pre-alpha build of Dublin. Design will change considerably before we release.

    image

    This screen shows (top to bottom, left to right):

    • Application Export and Import: Dublin leverages MSDeploy functionality to package or unpack an application.
    • Database Configuration: Configure stores for persistence or monitoring data.
    • Diagnostics: Configure WCF tracing.
    • Persisted Instances: View a summary of the types and states of persisted service instances.
    • Services: View and configure the WCF services.
    • Tracking Configuration and Tracking Profiles: Define and configure the profiles used to extract monitoring data at runtime.

    In the middle of the right column you see "Restore Protocols" and "Disable Protocols". This functionality starts/stops the flow of messages to the service. By preventing message flow you are essentially stopping the service, although running instances continue to run.

    We've had some tension within the team about how we extend IIS Manager. We want to add exciting capabilities to this tool, but we have to be "good neighbors" and not disrupt the tooling experience for users who have worked with IIS Manager for years. This tension is most evident in the Restore/Disable Protocols feature. Some of us want to show this as "Disable message flow" and "Enable message flow" to give a more WCF flavor to the description. Other members of the team prefer the text that you see above because this explains exactly what is happening when those links are clicked.

    Service configuration

    When I click into Services I see one entry since this particular application ("PizzaOrderService") contains only one service. I right click on that service and see options for configuring the service and for seeing simple service statistics (number of completed instances, number of running instances, and number of suspended instances.)

    image

    This screen shows (top to bottom):

    • Configure Persistence: Set the persistence store for this service.
    • Configure Tracking: Enable tracking profiles.
    • Configure Certificates: Select the security certificate that this service should use.
    • Configure Throttling: Configure WCF throttling settings.
    • Service Statistics: See the count of completed, suspended, or running instances.
    • View Persisted Service Instances: View the instances from the persistence database.
    • View End Points: View the endpoints for this service.

    Right now we're providing tooling for a subset of the configuration settings that a WCF service might use. Before we release we're going to support a much wider array of settings. Configuring security on endpoints is really hard today, for example. We want to make this incredibly easy.

    Service instance control

    I chose the "View Persisted Service Instances" option to get to the following screen. Here you can see that I have one instance of my pizza service running, and you can see the control options and a choice to view the tracking data for this instance.

    image

  • What kinds of services is Dublin targeting?

    When we describe Dublin we talk about WAS-hosted WCF services. Our team thinks of WCF services along two pivots:

    Stateless versus durable services.
    A stateless service is a transient one. When the service is processing a request it keeps that service instance in memory until it's finished, and there's no state kept between requests. Think of a service that sends text messages. This service receives a request, sends the text message, and finishes. Each request is independent; the service does not need to maintain any state.

    Durable services, on the other hand, maintain state between requests and are often long-running. Service instance state is persisted, to a database, for example. This allows the instance to be removed from memory when it's not active and allows the state to be reconstructed if the host process should die. Think of a loan processing service. There are many steps, and the process takes weeks.

    Imperative versus declarative services.
    Imperative programs use a series of commands to change the program's state. The programmer says explicitly what should happen. Imperative WCF services are those written in a .Net Framework language, like C#.

    In declarative programs the programmer defines what the program should do; he declares the intent of the program. This abstracts him from the program's runtime, which translates the program declaration into actions. As far as Dublin is concerned, declarative WCF services are those that are implemented using WF. These are "workflow services" that were enabled in .Net 3.5 and will be enhanced in the 4.0 release.

    We are building Dublin to provide value for all WCF services that are hosted in WAS. Our "sweet spot," though, will be for durable workflow services. Here is a very informal representation of the value for each type of service. Don't spend too much time trying to interpret the number of stars; I just made this up.

    Stateless Durable
    .Net code (imperative) *** ****
    WF (declarative) **** ******

    For all WCF services Dublin will enhance configuration, deployment, and monitoring.
    For workflow services Dublin adds workflow activity-level monitoring.
    For durable WCF services Dublin adds support for viewing and controlling persisted instances, scale out, and other reliability features.

  • Life after F5

    "Life after F5" is one of the slogans we're using to convey the motivation behind Dublin. Today Microsoft, with the .Net Framework and Visual Studio, makes it easy to build powerful connected services. But what comes next? How to you use one of these services in the real world?

    You first have to decide how to host your service. You have a range of options: NT service, console application (with a big "do not close this window" post-it note attached to it), a BizTalk WCF adapter receive location, and the Windows Process Activation Service ("WAS"), to name a few. Dublin is not giving you a new host for your WCF services. Instead, we're making the WAS host better. (If you're not familiar with WAS take a quick look at http://msdn.microsoft.com/en-us/library/ms734677.aspx.)

    Once you've chosen your host you will need to deploy and configure your services, manage, monitor, and control running services, and make sure that your services run reliably. Ideally you would do this with familiar and flexible tooling. This is exactly what we're doing with Dublin.

  • Introducing project "Dublin": Extensions to the Windows Application Server role for managing and controlling WCF and WF services

    Welcome to my blog. I've been around Microsoft for about 8 years, working on a number of Server technologies. I'm a loud mouth at work but haven't ever taken my voice beyond the Redmond campus. I'm really excited about "Dublin," and I can't keep this stuff to myself any longer. I want to use this blog to communicate what we on the Dublin team are building and to get your feedback. Tell us what you like and what you think we are missing.

    What is Dublin?

    "Dublin" is the internal Microsoft code name for the project to add extensions to the Windows Application Server role that will provide greater support for hosting, managing, monitoring, and controlling Windows Communication Foundation (WCF) and Windows Workflow Foundation (WF) services. Dublin is being built to address these common customer frustrations:

    • I've built my WCF service. Now what?
    • Why don't you guys give us any tools? I have to build everything myself.
    • I can't see what my service is doing, and I don't have much control over it.

    Why "Dublin"?

    A few facts:

    • At Microsoft we tend to use city names as project code names. (Think "Whistler," "Oslo", etc.)
    • Here in the Seattle area we tend to shorten the letter "W" when we say it. We often pronounce it "Dub".  (Most commonly heard is "the U Dub"--referring to the University of Washington.). This is why you'll hear us talk about "Dub CF" and "Dub F" when we talk about the Windows Communication Foundation and Windows Workflow Foundation.

    We're making the Windows Application Server a better host for Dub WCF and Dub F services, ergo "Dub"lin. (Don't blame me. I just work here.)

    When can I try it out?

    Dublin was announced early in October 2008 (See http://www.microsoft.com/net/Dublin.aspx ), and the first bits were distributed on a virtual machine image at the Professional Developers Conference later that month. The bits have not yet been distributed publicly. 

    Dublin will be released after Visual Studio version 10 and the .Net Framework version 4.0 are released. Dublin should be available as a web download 3-6 months after VS 10 ships.

    I'll describe features and post screenshots here and will point you to bits when they're available for public consumption.


© 2010 Microsoft Corporation. All rights reserved. Terms of Use  |  Trademarks  |  Privacy Statement
Microsoft
Page view tracker