I would say WCF is not a good choice for this. From your description, it sounds like in WCF terms, you want to push information from the server to the clients. This is the opposite way round from how the majority of WCF services work. Normally, the communication is initiated from the client to the server.
This can be done with WCF using duplex services, but it is relatively complicated.
A much simpler solution would be to use a server push solution like web sockets. In .Net there is an implementation from Microsoft called SignalR
and (at least one) other implementation called XSockets
Both implementations are beautifully simple to use.
The implementation would be as follows:
- The notification "hub" would be hosted in IIS
- The periodic gathering of data would be done in a Windows Service or simply using a Windows scheduled task. This would gather the data and push it to the hub
- Clients would register with the hub for updates and receive them whenever the service pushed them
This will be much simpler to implement than a WCF solution in my opinion.
It would work well with
- Multiple applications gathering the data and sending to the hub
- Multiple applications getting data from the hub
- Situations where all the applications sending the data were shut down (as long as the hub was still up)
- Situations where all the applications receiving the data were shut down
The displaying application would not need to be a WCF client - it could be a browser accessing the hub using JavaScript. Or it could be WCF if you want. Or you could simultaneously support browser and Windows clients.
In addition, it would optimise both your network load and your server workload because it would avoid any polling. The applications receiving the data would get notified when something new was available without having to ask.
One potential disadvantage is that you would have to have .Net 4 or 4.5. For XSockets there is apparently a non-public .Net 2 version, but the NuGet packages are .Net 4.
p.s.
Security of data flow is always an issue :o)