Windows Communication Foundation WCF Transport For Used With SQL Server Service Broker SSB
Original Publication Date: 2008-Sep-30
Included in the Prior Art Database: 2008-Sep-30
David Baxter Browne: INVENTOR [+1]
A WCF transport for use with a SQL Server Service Broker (SSB) has been developed. Through extensible framework of the WCF model, WCF-based applications can access SSB functionality. For example, through IOutputSessionChannel a client application can access SsbConversationSender, and through IInputSessionChannel service applications can access SsbConversationGroupReceiver. Certain messaging functionality, such as long-running conversations, transactional messaging, and two-way messaging requires special implementation. Using extensibility points created by the WCF/SSB transport, a programmer can access SSB’s custom API classes and request that SSB conversations survive WCF session termination. To enable transactional messaging on the service side, WCF sessions are mapped to SQL Server transactions. Two-way messaging (allowing a service application to send a message to a client using the same conversation) is achieved by mapping an SSB conversation to a WCF session
for Use with SQL Server Service Broker (SSB)
Distributed applications, such as client and service applications, often communicate by sending and receiving messages. Such messaging functionality may be provided by an application separate from that of the client/service application. Unfortunately, when the messaging application is developed from a programming model different than the client/service application, the client/service application developer must learn the alternative programming model to use the messaging application functionality.
A programming model used to create client/service applications is Windows Communication Foundation (WCF). Certain tools of WCF called “transport channels” (or simply “transports”) can be customized to enable a WCF application to transmit messages over various communications mechanisms without having to know or learn the non-WCF programming model. One messaging system that uses a non-WCF programming model is SQL Server Service Broker (SSB). SSB provides desirable messaging functionality, such a reliable, exactly-once in-order delivery guarantees, and support for long-lived conversations; however, previously that functionality was not usable without knowing SSB’s non-WCF programming model.
A customized WCF/SSB transport was designed to enable a developer creating WCF-based applications to use SSB messaging capabilities without having to know the non-WCF programming model used by SSB. Generally, the WCF/SSB transport is built using a WCF channel model, which is an extensible framework for creating transports that can be used with the WCF programming model. For example, the WCF/SSB transport is available to a message-sending application (i.e., client) as an IOutputSessionChannel and is available to a message-receiving application (i.e.. service) as an IInputSessionChannel. From the IOutputSessionChannel, the client can access additional SSB functionality through the SsbConversationSender. From the IInputSessionChannel, the service can access additional SSB functionality through the SsbConversationGroupReceiver.
Inconsistencies between WCF applications and SSB requires implementation to effectively integrate these applications. For example, while both WCF and SSB include messages, both applications logically group messages in a different manner. WCF includes “sessions” in which a logical grouping of messages is exchanged between communicating applications. Under a WCF session, messages are delivered exactly once and in order. WCF sessions are inherently volatile meaning that if the sender or receiver program instances terminate, the session is ended. SSB includes “conversation...