I'm working on an application that uses WCF to communicate between server and clients Server has changing number of services, along with one master service that clients can query for information about other services, and then subscribe to those they want using information from master service.
Master service sends notifications to subscribed clients, when sub-services change (added, removed, etc) Also sub-services send notifications every few seconds.
This sounds like a great opportunity for using WCFs Callback channels, however, they require you to use session. Also when sending notifications to clients, when any of the cliens got disconnected disgracefully the service hangs, trying to notify it. Even if it times out, after some time, during that time no other client get's notified and this is not acceptable, since the clients are actually GUIs for monotoring applications behind sub-services. Also using MSMQ for that is not an option, since the service needs to know immediatelly, when send operation did not succeed.
The solution I came up with is using http binding (to know immediatelly when send did not succeed) and creating explicit callback services on the client, but that requires me to write a lot of ugly looking infrastructore code.
So, my question is: is there a better way of doing this with WCF. The best looking option was Callback Contracts, because that frees me from needing to manage callback service manually, if only it could not wait for ack from one client before trying to send to the next one.