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
- Developing Applications for Windows Phone 7 : Visual Grammar
- Windows Server 2008 : Configuring Remote Access (part 1) - Routing and Remote Access Services
- Keyword Research Tools (part 4)
- BizTalk Server 2009 : Types of services
- SOA with .NET and Windows Azure : Service Consumers with WCF
- SOA with .NET and Windows Azure : Service Hosting with WCF (part 2) - Self-Hosted Services
- SQL Server 2008 Scheduling and Notification : Configuring the SQL Server Agent
- Windows Server 2003 : Centralizing Authentication and Authorization with Internet Authentication Server - Installing and Configuring IAS
- Active Directory 2008 : Proactive Directory Maintenance and Data Store Protection (part 2) - Relying on Built-in Directory Protection Measures
- Windows 7 : Working with Scanners and Cameras (part 1) - Using Windows Pictures Library with a Digital Camera, Scanner
Top 10
- Windows Server 2008 : Working with NAP (part 6)
- Troubleshooting and Optimizing SQL Server 2005 : Server Configuration Maintenance
- Windows 7 : Managing a User Account - Limiting Computer Access
- Windows Phone 7 : Taking a Quick Tour (part 1)
- Preparing for SharePoint 2010 Installation (part 2)
- A Technical Overview of the Mobile Web : THE TECHNICAL CHALLENGES OF MOBILE DEVICES (part 1) - Physical Constraints
- Windows Server 2008 Server Core : Working with the Remote Desktop Connection Application (part 2)
- Developing Applications for Windows Phone 7 : XAML Styling (part 2)
- Windows 7 : Understanding Control Panel Files
- SharePoint 2010 : Organizing Information - An Information Organization Project