I have some .NET remoting code where a factory method, implemented in some server side class, returns interfaces to concrete objects, also executing on the very same server. .NET remoting automagically creates proxies and allows me to pass the interfaces across to the client, which can then call them directly.
Example interfaces:
public interface IFactory
{
IFoo GetFoo();
}
public interface IFoo
{
void DoSomething();
}
Example client code:
...
IFactory factory = (IFactory) System.Activator.GetObject (typeof (IFactory), url);
...
IFoo foo = factory.GetFoo (); // the server returns an interface; we get a proxy to it
foo.DoSomething ();
...
This all works great. However, now I am trying to migrate my code to WCF. I wonder if there is a means to pass around interfaces and having WCF generate the proxies on the fly on the client, as does the original .NET remoting.
And I don't want to return class instances, since I don't want to expose real classes. And serializing the full instance and sending it back and forth between the server and the client is not an option either. I really just want the client to talk to the server object through an interface pointer/proxy.
Any ideas?
-
The ChannelFactory class does exactly this, generates a proxy dynamically at runtime given an interface.
-
http://msdn.microsoft.com/en-us/library/aa730857(VS.80).aspx#netremotewcf_topic6
-
Sorry, jezell, I don't get it.
Yes, I can use
ChannelFactory
on the client to create a proxy toIFactory
, since that singleton object has been "published" by the server through an URI on theServiceHost
.But my
IFoo
instances on the server have not been associated with anyServiceHost
; I just want to get them back by calling myIFactory
proxy on the client, and let WCF do the call to the serverIFactory
, which would provide someIFoo
, which would then be marshalled back to the client and wrapped into a dynamically generated proxy. I really just want to be able to writefactory.GetFoo ();
on my client...In the meantime, Brian pointed me to a very interesting document I had overlooked on MSDN, which explains how to mimmick the .NET Remoting interface marshalling by using sessions and
EndPointAddress10
and ... as you wrote,ChannelFactory
to get the client side proxies.So, now I know how to replicate my .NET remoting code, but paying a relatively high cost for it. The code complexity involved with WCF is quite a bit higher than with the plain old .NET remoting solution.
0 comments:
Post a Comment