Programming4us
         
 
 
Windows

SOA with .NET and Windows Azure: WCF Extensions - WCF Router (part 1) - The RoutingService Class & Routing Contracts

1/20/2011 7:58:50 PM
With WCF the service consumer sends a message to the service using a generated proxy. Both the service consumer and service rely on a compatible configuration that is shared between them.

Decoupling services from service consumers has several benefits, including the ability to independently leverage non-functional features, such as message-logging, security logic, fault tolerance, and various forms of routing processing.

Although building a router service was possible with .NET 3.5, version 4.0 of the .NET framework provides the WCF Router, an intermediary that can be configured as a service or service agent to receive and forward messages to target services based on various factors.

The WCF Router can be configured as an active or passive intermediary. An active WCF routing service can provide a range of runtime processing, such as security, message encoding, reliable sessions, and protocol compatibility. As a passive intermediary (meaning the router logic can alter policies and protocols, but not message structure or content), it can perform various forms of runtime routing logic, such as content-based routing, rules-based routing, and load-balancing.

The RoutingService Class

The WCF Router is equipped with a built-in filtering mechanism that allows you to specify the criteria used to dynamically determine message paths. For example, a message may need to be routed based on action, an XPath query, or its actual content.

WCF provides the System.ServiceModel.RoutingService class, and as with any other WCF service, the routing service can be hosted in IIS/WAS or it can be self-hosted in a Windows application or a Windows service.

The following example shows the contents of a .svc file with directives for hosting RoutingService in IIS:

Example 1.
<%
@ServiceHost
Service="System.ServiceModel.Routing.RoutingService,
System.ServiceModel.Routing,
version=4.0.0.0,
Culture=neutral,
PublicKeyToken=31bf3856ad364e35"
%>

This next example shows RoutingService in a self-hosted environment:

Example 2.
using (ServiceHost serviceHost =
new ServiceHost(typeof(RoutingService)))
{
try
{
serviceHost.Open();
Console.WriteLine
("Routing service running. Press <Enter> to exit");
Console.ReadLine();
serviceHost.Close();
}
catch(CommunicationException)
{
serviceHost.Abort();
}
}

Routing Contracts

The RoutingService class supports the routing of messages that are part of synchronous (request-response) data exchanges as well as asynchronous and request-response exchanges over duplex protocols. The router can also multicast these two message exchange types.

The generic routing contracts available in the System.ServiceModel.Routing namespace to configure the router are listed in Table 1.

Table 1. Interface routing contracts used for different routing options.
Routing ContractSupports
IRequestReplyRouterWCF Sessions: if present

Transactions: if present

Asynchronous Messages: no

Multicast: no
ISimplexDatagramRouterWCF Sessions: if present

Transactions: no

Asynchronous Messages: yes

Multicast: yes
ISimplexSessionRouterWCF Sessions: required

Transactions: no

Asynchronous Messages: yes

Multicast: yes
IDuplexSessionRouterWCF Sessions: required

Transactions: if present

Asynchronous Messages: yes

Multicast: yes

Each of these routing contracts supports a different set of message exchange patterns and channel properties. Consequently, you may have to set up different routing endpoints for a service contract if your contract’s operations are designed with different message exchange or transaction requirements.

Note

The RoutingService class supports the numerous SOAP-based WCF bindings (BasicHttpBinding, WSHttpBinding, NetTcpBinding, etc.); however, it does not support the WebHttpBinding for REST services. Routing logic for REST services can be implemented with IIS Modules for Application Request Routing and UrlRewrite.

Other -----------------
- Windows 7: Accessing Shared Network Resources
- Windows 7: Managing Wireless Network Connections (part 4) - Creating User-Specific Wireless Connections
- Windows 7: Managing Wireless Network Connections (part 3) - Reordering Wireless Connections
- Windows 7: Managing Wireless Network Connections (part 2) - Working with Wireless Connection Properties
- Windows 7: Managing Wireless Network Connections (part 1) - Creating an Ad Hoc Wireless Network
- Windows7: Managing Network Connections (part 5) - Using a Network Connection to Wake Up a Sleeping Computer
- Windows7: Managing Network Connections (part 4) - Finding a Connection’s MAC Address
- Windows7: Managing Network Connections (part 3) - Setting Up a Static IP Address
- Windows7: Managing Network Connections (part 2) - Enabling Automatic IP Addressing
- Windows7: Managing Network Connections (part 1)
- Working with Windows 7’s Basic Network Tools and Tasks (part 6) - Customizing Your Network
- Working with Windows 7’s Basic Network Tools and Tasks (part 5) - Viewing Network Status Details
- Working with Windows 7’s Basic Network Tools and Tasks (part 4) - Displaying a Network Map
- Working with Windows 7’s Basic Network Tools and Tasks (part 3) - Viewing Network Computers and Devices
- Working with Windows 7’s Basic Network Tools and Tasks (part 2) - Setting Up a Homegroup
- Working with Windows 7’s Basic Network Tools and Tasks (part 1) - Accessing the Network and Sharing Center
- Windows 7: Setting Up a Peer-to-Peer Network (part 2) - Connecting to a Wireless Network
- Windows 7: Setting Up a Peer-to-Peer Network (part 1) - Changing the Computer and Workgroup Name
- Windows Vista: IE Security Features
- Windows 7: Troubleshooting Wireless Network Problems
 
 
Most View
- Windows Phone 7 : Finding Places and Things
- SQL Azure : Creating Your Azure Account
- Exchange 2007 : Choose a High Availability Solution
- Windows 7 : Using the Snipping Tool
- Starting a New BizTalk 2009 Project : Creating a Build-and-Integration Environment (part 1) - Five-Step Build Process
- Windows 7 Customization : Working with Existing File Types
- Exchange 2007: How Do I Modify a Database Size Limit?
- Windows Server 2008 : Configuring Terminal Services Clients
- Windows Server 2008: Configuring Routing
- SharePoint 2010 : Create an Event with a Website (part 2)
Top 10
- What is New in iPhone SDK 3.2 for the iPad (part 1)
- Setting Up Your Windows Home Server 2011 Network : Troubleshooting Network Problems (part 1)
- SharePoint 2010: Change the Look of a Site by Using Themes
- Parallel Programming with Microsoft Visual Studio 2010 : Introduction to Parallel Tasks
- SQL Azure : Creating Databases, Logins, and Users (part 1)
- Writing Your First Phone Application - Adding Code (part 2)
- Windows Phone 7 : Working with the Calendar - Adding Appointments
- Understanding and Installing Active Directory Rights Management Services (part 2) - Installation Procedure
- Windows 7: Managing Wireless Network Connections (part 2) - Working with Wireless Connection Properties
- SQL Server 2008 : Security and Compliance - SQL Server Auditing