I’m modifying the code in this tutorial to build some basic subscribe push wcf client/server classes, and I’ve just hit a bit of a brick wall.
The server class in the tutorial is created using the following code:
class Program { static void Main(string[] args) { using (ServiceHost host = new ServiceHost( typeof(StringReverser), new Uri[]{ new Uri('net.pipe://localhost') })) { host.AddServiceEndpoint(typeof(IStringReverser), new NetNamedPipeBinding(), 'PipeReverse'); host.Open(); Console.WriteLine('Service is available. ' + 'Press <ENTER> to exit.'); Console.ReadLine(); host.Close(); } } }
Which I assume publishes an instance of StringReverser my problem is I need a reference to that instance so I can call a method on it to push data back to the client.
In the tutorial the server just replies to the client using a callback method, instead I’m storing a reference to the client in a list of subscribers. When I need to push data back to the clients I need a reference to the Service object so I can actually utilize do the callback.
Is there a way to publish a Service using WCF that lets you have a reference to the service object? or can I get a reference to the service object from the host object?
Any help would be appreciated…
You can use the singleton pattern in your StringReverser class and pass the instance of it to the ServiceHost constructor: