I need to build a system that is similar to a pub/sub system. It is composed of multiple sub-systems or services running in separate executables or as a Windows Services.
The sub-systems are:
The pub/sub service
- A pub/sub service managing communications between the internal sub-systems and the users.
- A user can have multiple channels open (A web page connected to a SignalR service, a mobile device connected to a duplex WCF service, etc.).
- The service should manage all the channels of an user and be able to send information to them on demand based on topics or specific users.
- The service must support multiple transports like SignalR, WCF, or others ...
Worker services
- A worker that runs as a Windows Service and sends information to the users using the pub/sub service.
The SignalR and WCF host
- The SignalR service and WCF service will be hosted on IIS
My questions are
- As the sub-systems run in separate processes, how do I communicate between the pub/sub service and the other sub-systems like (the workers and IIS). The communication must be really fast. Do I use named-pipes, is it fast enough ?
An example; The worker tells the pub/sub system to send a message to a user, the pub/sub systems checks the channels opened for the user (let's say a SignalR channel), then in turn it must notify the SignalR service running in IIS to send the message to the user's browser.
- Do you know of implementations of similar systems ?
Observations
- I cannot use third-party service-bus services (Azure ..). And even with that .. I can't see a solutions to the problems above.
- The service must be very scalable and high-demand proof.