[Mono-list] Two questions about .net/mono internals

Robert Jordan robertj at gmx.net
Thu Aug 3 18:48:18 EDT 2006


Hey,

L.G. Meredith wrote:
> i'm in the process of writing a gateway application. It speaks SOAP out of
> one side of it's mouth and a proprietary network application protocol out
> the other.
> 
> My application would be much more beautiful and easy to maintain if i had
> the following two bits of interface to .net/mono capability.
> 
> 1. i want to trampoline incoming webmethods to invocations to send an
> appropriately formatted message to a tcp stream connected to my app. That
> is, i would like to get the current (web) method and it's arguments. i 
> would
> prefer not to copy the incoming arguments to an invocation but to
> generically call an api that will return a data structure providing all the
> information associated with the method invocation, including method name 
> and
> actuals (a.k.a. arguments). i can then pass this data structure to my 
> stream
> formatter to format appropriately for the network stream.

Implement a SOAP extension:

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconAlteringSOAPMessageUsingSOAPExtensions.asp

> 2. i would like to have the format of the .net/mono binary formatter. It

I'm not sure why you need it, but here is it:

http://svn.myrealbox.com/viewcvs/trunk/mcs/class/corlib/System.Runtime.Serialization.Formatters.Binary/binary_serialization_format.htm?rev=27351&view=log

> does the work i need to do except that it puts some extra stuff into the
> stream. Currently, i have a hack in which i drop markers into the stream 
> and
> pull out the bytes between the markers to get the appropriately formatted
> bytes for the packet i need to send. Obviously, this is a brittle solution.
> If i had the format the binary serializer uses, then i could extract 
> them in
> a better way. Even better, if i had an API that allowed me to extract
> naturally distinct pieces, e.g. just member data, excluding class name or
> member name data or even size information, then i could have a very robust
> and generic application.

Such an API doesn't make sense, unless it's intended to be used
by non-CLI languages (C/C++...).

You should implement a custom formatter, if you need this level of
control.

If you want to intercept remoting calls, you could insert a
custom server channel sink after the formatter sink and you'll
be able to access the remoting messages before they get dispatched.

Robert



More information about the Mono-list mailing list