Today's Web Service Stack: ASMX 2.0 + WSE 3.0

Service Station, by Aaron Skonnard

Syndication

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
Filed under: ,

Comments

Sujeet wrote re: Today's Web Service Stack: ASMX 2.0 + WSE 3.0
on 09-26-2005 2:48 PM
Yeah its a wow....
however can you throw some light on what you think about WSE 2.0 to WSE 3.0 migration and integration.....

sujeet
Microsoft CSF Group

Add a Comment

(required)  
(optional)
(required)  
Remember Me?