The Publish-Subscribe Design Pattern

The solution to the problems just described is to design around them using what is known as the publish-subscribe design pattern. The idea behind the pattern is a simple one: decouple the publishers from the subscribers by introducing a dedicated subscription service and a dedicated publishing service in between, as shown in Figure D-1.

A publish-subscribe system

Figure D-1. A publish-subscribe system

Subscribers that want to subscribe to events register with the subscription service, which manages the lists of subscribers (and provides a similar ability to unsubscribe). Similarly, all publishers use the publisher service to fire their events and avoid delivering the events directly to the subscribers. The subscription and publishing services provide a layer of indirection that decouples your system. No longer do the subscribers have any knowledge about the identity of the publishers—they can subscribe to a type of event and will receive that event from any publisher. The subscription mechanism is uniform across all publishers. In fact, no publisher has to manage any subscription list, and the publishers have no idea who the subscribers are. They simply deliver the events to the publishing service to be delivered to any interested subscriber.

Subscriber Types

You can even define two types of subscribers: transient subscribers are in memory running subscribers and persistent ...

Get Programming WCF Services, 3rd Edition now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.