Welcome to OnMicrosoft—conversations with thought leaders in Microsoft technologies. In this session, Krzysztof Cwalina discusses designing reusable frameworks and his work with the Application Framework Core Team.

Ted Neward: So, you mentioned that you're working on a framework at Microsoft—MEF, is that right?

Krzysztof Cwalina: Yes.

Ted: Managed Extensibility Framework. I'm guessing at the name here.

Krzysztof: Yes. That's just a code name, MEF; it will definitely change.

Ted: Right. You said that you released the CTP [community technology preview] at TechEd in Orlando, right?

Krzysztof: Yes, exactly.

Ted: In terms of building the MEF, what process led up to the realization at Microsoft, "We need a DI [dependency injection] framework, or compositional framework, or whatever term of choice we choose to give this thing"? What led to that internally? How extensive is this thing gonna get? Where are we gonna see it show up? Ship plans, if you can talk about that? Just sort of tell us a little bit about the thing.

Krzysztof: We formed this Application Framework Core team basically to address one of the issues that we felt like we had in the .NET Framework organization. We basically had that team like BCL [Base Class Library], whose charter is to remove duplication, provide a kind of abstraction for integration between different parts of the framework, and own the very low-level APIs at the very bottom of the .NET Framework stack. We now have several application models, like ASP.NET, Windows Forms, WPF [Windows Presentation Foundation], and—

Ted: And the web framework ASP.NET, and console apps, if you will, too.

Krzysztof: Yes. When we started .NET Framework 1.0, we didn't see a very compelling need to have something like a BCL for application frameworks. We pretty much had two major application framework models. Now we see that we need to look at what are the common abstractions for application models. What are the potential opportunities for unification of APIs, providing a bit more integration?

For example, one of the problems that we have today is data binding; data binding between different application models is different, and it's conceivable. There are fundamental differences between how data binding works in ASP.NET, with server-side compilation, and in client applications. But we probably could have done a better job in unifying those technologies. So then we said, "Hey, why don't we form a team that looks at these issues from an application frameworks perspective? What are the unification opportunities?" As I mentioned, fixing something like data binding—it's very difficult to do it in place, so that the charter of the team is to look for opportunities: What are the general-purpose application framework-level APIs that we could unify?

One of the first things that we looked at and observed is that more and more parts of the .NET Framework and ecosystems, Visual Studio, want to provide a first-class automatic composition and extensibility. And there was a potential for introducing duplication. We've had several teams at Microsoft working on similar extensibility models, and therefore that was one of the first projects that my team took, and the technology will be used by probably the next version of Visual Studio, actually. The Visual Studio editor will be both a provider and extension, and will have extensibility points based on MEF.

Ted: So we're gonna see that roll out in VS [Visual Studio] 10, probably?

Krzysztof: We don't yet have closed ship plans, but we are pretty much advanced with it; as I said, we just shipped the CTP. There are several major changes, like the constructor injection that we talked about, they are still coming. But the technology is not just an incubation project anymore. It's being productized, but I don't want to over-promise anything.

Ted: [Laughs.] Heaven forbid you promise a ship date and then have to push it back. Krzysztof, I want to thank you for joining us, and good luck with MEF. Looking forward to seeing when you guys ship.

Krzysztof: Thank you very much.

For more information, visit onpodcastweekly.com and subscribe to all our podcasts. Brought to you by the publishing imprints and information portal of Pearson Education.