WSE, ASMX and the .NET Framework

Last week I gave talks at two design reviews on campus. I talked about what we're doing with ASMX and WSE. Many customers were confused about what WSE was and how it relates to ASMX. So I thought it'd be useful to blog about it to help get the word out.

What is WSE
WSE stands for Web Services Enhancements for the .NET Framework. As the name implies, this is a product that you use with the .NET Framework to give you enhanced Web services functionality1. With a shorter product cycle compared to the .NET Framework, WSE allows us to quickly implement and deliver many WS-* specifications and track them as they evolve.
Tracking evolving specs means that the implementation itself is also evolving. So it is quite possible (some would say very likely) that a WSE version will break backward compatibility. This implies that customers who use WSE must be willing to revise their code and redeploy their apps when they upgrade from one version of WSE to the next. Rather than try to name the types of applications that WSE is suitable for, I'd rather point out the key characteristic and let you decide whether its suitable for your app.
The litmus test is: are you prepared for the possibility of WSE breaking backward compatibility and are you willing to deal with the consequences (e.g. recoding and redeploying)?
So why are we not just waiting for the specs to mature and then shipping an implementation that won't evolve as rapidly? Two reasons: To give you a flavor of where the technology is headed therefore allowing you to try things out and acquire experience. Also, to get your feedback based on this experience and better understand your needs.

Where to I get WSE?
Version 1 of WSE shipped last fall and you can read about it and download it here. Expect to see a tech preview of version 2 this summer. Although there was a hands-on-lab at TechEd where attendees played with version 2, I'm not sure I can say much about what's in it. So I'll just say that this new version is a huge leap from version 1.

Is WSE a supported product?
Yes it is. You can go here to see the support dates for v1 (second row in the table).

How does it relate to the .NET Framework
WSE is logically a part of the .NET Framework. Keeping it physically outside the .NET Framework allows us to ship new versions at a much higher rate than the framework.

How does it relate to ASMX
ASMX is the stack you use for creating Web services in .NET. ASMX shares the ASP.NET activation model and is hosted inside IIS which means you get the same "server features" that you get from IIS. WSE can be used with ASMX to give you additional services such as WS-Security.
However, the idea of Web services is to enable distributed applications to communicate regardless of the application type or platform. For example, you can imagine Windows apps spread over the network wanting to communicate using Web services. These apps don't have a Web server (e.g. IIS) so ASMX can't be used in this scenario. So it is reasonable to expect WSE to deliver other ways of exposing Web services when you can't use IIS and ASMX.

1 By the way, Keith Ballinger is the Program Manager for WSE. If you have any feedback or feature requests, I'm sure he'd love to hear from you.