PollingDuplex scaling in Windows Azure
One of the great sessions at this year’s PDC talked about a collaboration between Invensys and Microsoft’s DPE team to build a solution that can deliver energy pricing information to a variety of clients, using a duplex message pattern.
Effectively Invensys used a WCF service hosted in a Windows Azure web role to tunnel bi-directional HTTP traffic from the Windows Azure platform AppFabric service bus capability to Silverlight clients. Unfortunately this workaround is needed since the TCP-based relay binding that service bus offers is not supported in Silverlight at this point.
Once Invensys was using PollingDuplex in Azure, they needed to scale to a large number of clients, so they needed to enable scale out between multiple web role instances. This capability is not available out-of-the-box in Silverlight 3, so some hackery was required, as described in these blog posts:
- Scale-out of Silverlight HTTP polling duplex WCF service in a web farm scenario
- Scalable Duplex Messaging with Silverlight 3 and Windows Azure
The relevant content starts at around minute 38 in the video below.
While getting PollingDuplex to scale in Azure in Silverlight 3 requires some manual steps, the team is considering supporting this scenario out-of-the-box in Silverlight 4. It is not available in Silverlight 4 Beta, but please use the comments to submit your feedback.