May 26, 2004

Soap.Udp 0.1

This is the first release of a custom WSE 2.0 transport that I have been writing to support SOAP over UDP, including IPv4 multicast. You can download the source here.

And yes, I know it's not perfect (that's why it's release 0.1), but hopefully it will illustrate some concepts for those that are writing other custom transports.

Note that the source code is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike License.

Posted by herveyw at May 26, 2004 12:30 AM
Comments

Very nice, Hervey!

Posted by: Chris Dix at May 26, 2004 03:26 AM

I have a big distributed app I have developed using Webservices. It runs really well, but now I would like to simplify its deployment for those cases where my customers will install it themselves on a LAN. It looks like I should be able to create a WSE 2.0 SOAP Messaging windows service, thereby removing the need for installing IIS on an unknown system in a hands-off install.

Is this a good path for me? Is there something fundamentally different about WSE 2.0 Soap Messaging that would make it difficult for me to use it like an RPC?

Regards,
Chiefley

Posted by: Chiefley at May 26, 2004 09:46 PM

- Any plans on building this for MSMQ?
- Note: Custom transport schemes can't be configured using the Web/App.config! So, soap.udp must be added dynamically.
- There is definitely room for a white paper on how to write custom transports. One aspect is how to write them (there some patterns here XXXListener, XXXConnection (if connection oriented), XXXInputChannel (with the possibility of active/passive), XXXOutputChannel, XXXTransportOptions, XXXTransport) and another is what role each of these classes play and how they interact with the infrastructure (the fact that XXXTransport does the actual accepting/receiving via the XXXListener/XXXConnection which pushes the message to the XXXInputChannel queue via DispatchMessage(XXXInputChannel is just a queue listener).
There are way too many classes to implement a custom transport. This should become easier in WSE 3.0. I think there's a pattern luring under the hood we haven't seen yet.
- Passive and active? Am I right in assuming that these two are there for the usage of inputchannel on the client and server side (at least for Tcp)?
- An uneasy topic in .NET asynchronous programming (in general) is that there is no real way of controlling asynchronous operations (if they should fire, remove them from the threadpool (schedule maintenance), ...).
- In the Request/Reply model (on the SoapTcpTransport), is the reply always send over the same SoapTcpConnection (socket actually)?

- Congratulations on making the code so transparent (despite my previous comments). It's a joy to read. And well thought through for a second version. For a minute there I thought I was dealing with COM (AddReference , ReleaseReference).

Posted by: Yves Reynhout at May 27, 2004 03:47 PM

Okay, I should have dug a little deeper (http://www.dynamic-cast.com/mt-archives/000030.html).

Posted by: Yves Reynhout at May 27, 2004 04:03 PM

Do you have a sample of the usage of this transport?

Posted by: Benjamin Zamora at June 4, 2004 01:04 PM