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
 
 
Popular tags
Microsoft Access Microsoft Excel Microsoft OneNote Microsoft PowerPoint Microsoft Project Microsoft Visio Microsoft Word Active Directory Biztalk Exchange Server Microsoft LynC Server Microsoft Dynamic Sharepoint Sql Server Windows Server 2008 Windows Server 2012 Windows 7 Windows 8 Adobe Indesign Adobe Flash Professional Dreamweaver Adobe Illustrator Adobe After Effects Adobe Photoshop Adobe Fireworks Adobe Flash Catalyst Corel Painter X CorelDRAW X5 CorelDraw 10 QuarkXPress 8 windows Phone 7 windows Phone 8 BlackBerry Android Ipad Iphone iOS
Most View
- Exchange Server 2010 : Upgrading from and Coexisting with Exchange Server 2003 (part 12) - Planning Public Folder Access and Migration
- Windows 7 : Configuring Hardware (part 1) - Device Stage & Using Device Manager
- Exchange Server 2010 : Federation Scenarios (part 1) - Free/Busy Access
- Troubleshooting Windows Home Server 2011 : Understanding Troubleshooting Strategies (part 2)
- Windows Phone 7 : Browsing the Web - Browsing Basics
- Windows Server 2008 : Configuring FTP (part 8) - Managing FTP User Security
- SQL Server 2008 : Performance Tuning - Partitioning
- SQL Server 2008 : Performance Tuning - Locks, Blocking, and Deadlocks
- jQuery 1.3 : Sorting and paging (part 4)
- Windows Server 2008 : Understanding the Windows AIK (part 4) - Understanding ImageX and the .wim File Format