When you see how ASMX 2.0 and WSE 3.0 are coming together, it creates hope for Web service developers in the trenches today, especially those who will not have the luxury of moving to WCF immediately. That was the vibe during my PDC precon -- one of hope, encouragement, and excitement. It was a refreshing change. Instead of getting the usual complaints about "why doesn't it do this?" or "why not that?" it was "wow, so you're telling me I have most of what Indigo provides and it's ready today?" There are a few attendee summaries of the workshop
here and
here.
Obviously ASMX2 + WSE3 doesn't match up to Indigo's full architecture and feature set, but it does give you some of the key features and the best feature is that it's available today (almost).
For example, it gives you a similar programming model (via ASMX), which includes support for decoupling the service contract from the implementation by annotating interfaces, a similar application hosting model (via SoapReceivers), similar transport support (mainly HTTP, TCP, and IPC), and a similar support for message-based security. Those seem to be the big nuggets that most developers care about anyway. The main things WCF gives you that ASMX + WSE don't are the additional WS-* protocol implementations, more transport & encoding choices, and more service behavior knobs. I did a quick braindump of the main differences that come to mind:
|
Feature |
ASMX2 + WSE3 |
WCF ("Indigo") |
|
Hosting |
IIS/ASP.NET (.asmx)
SoapReceivers |
IIS/ASP.NET (.svc)
ServiceHost<T>
WAS |
|
Programming Model |
[WebService], [WebMethod], etc. in
System.Web.Services
System.Web.Services.Protocols
(supports interfaces, generics, etc) |
[ServiceContract], [OperationContract], etc. in
System.ServiceModel
(supports interfaces, generics, etc) |
|
Message Exchange Patterns (MEP) |
One-way
Request-response
Custom (using WSE API) |
One-way
Request-response
First/last-operation
Duplex
Custom |
|
XML Serialization |
System.Xml.Serialization |
[DataContract] and friends
System.Xml.Serialization
(you can choose which to use) |
|
Encodings |
XML 1.0
MTOM |
XML 1.0
MTOM
Binary
Custom |
|
Transports |
HTTP
TCP
Named pipes |
HTTP
TCP
Named pipes
MSMQ
P2P
Custom |
|
Protocols |
Security |
Security
Reliable messaging
Transactions |
|
Behaviors |
Local transactions
Buffering
Caching
Metadata customization
Sessions
Custom
(via SoapExtensions and WSE filters) |
Concurrency
Instancing
Throttling
Thread-Binding Faults
Exceptions Metadata customization Instance Pooling and JITA Impersonation
Protection
Authorization AutoEnlist
Isolation
AutoComplete
Custom (via custom behavior types) |
The big question in most developers mind is how soon they'll be able to move to WCF. The sooner, the better for most. However, thanks to the similarities shown above, you can build with ASMX2 + WSE3 today and get some immediate WCF-like benefits while feeling confident about your future migration path.
Posted
Sep 21 2005, 01:15 PM
by
Aaron Skonnard