This document discusses WCF routing and protocol bridging in Windows Communication Foundation (WCF). It describes how the routing service acts as a message router and client to route messages between endpoints that may have different transport or SOAP version requirements. It covers how filters can be used to examine messages and make routing decisions, and various types of filters like action and XPath filters. Finally, it shows an example of using a routing service to bridge between mismatched endpoints, enabling a client using one protocol to communicate with a server using a different protocol.
Strategies for Landing an Oracle DBA Job as a Fresher
Wcf routing kt
1. WCF ROUTING
Krunal Trivedi
Corporate Trainer For DotNet,Silverlight,SPS 2010
MCT S For .NET Web Technology
MCTS For SharePoint Server 2010 Development
Co-Founder at Aavid Technologies
Email:krunaltrivedi@live.in
Contact : 09998472789
4. • The Routing Service is a generic SOAP intermediary that acts
as a message router.
• This router / or the SOAP intermediary act as a client to the
real Service and it works as a Service to the real client
• System.ServiceModel.Routing namespace.
5. • One of the challenges in Intermediary scenarios is that the
internal endpoints may have different transport or SOAP
version requirements than the endpoint that messages are
received on.
• To support this scenario , the Routing Service can bridge
protocols.
6. Filtering
• The WCF filtering system can use declarative filters to match
messages and make operational decisions.
• You can use filters to determine what to do with a message
by examining part of the message.
• A queuing process can use Xpath 1.0 query to check the
priority element of a known header to determine whether to
move a message to the front of the queue.
• The filtering system is composed of a set of classes that can
efficiently determine which of a set of filters are true for a
particular WCF messages.
7. • The filtering system is a core component of WCF messaging; it
is designed to be extremely fast.
• Each filter implementation has been optimized for a
particular kind of matching against WCF messages.
• Filtering is performed after a message is received and is part
of dispatching message to the proper application component.
9. • A filter makes Boolean decisions about a message based on user-
specified logical condition.
• Filters implement the MessageFilter class.
• The Match methods are used to determine if a message satisfies a
filter.
• One of the methods tests the message’s header but cannot inspect
the message body.
• The other method takes a message buffer as an input parameter
and can inspect the message body.
• The several kinds of filters each specialize in matching on a
particular kind of Boolean condition. Once you construct a filter,
you cannot change the criteria that a filter uses; to modify a filter's
criteria, construct a new one and delete the existing filter.
10. Filter Tables
• Filter tables are used to store key-value pairs, where a filter is
the key and some associated data is the value.
• The filter data can be used to indicate what actions to take if
a message matches the filter and the type of the filter data is
the generic parameter for the filter table class.
• The filter data can consist of routing rules, session security
state, listeners on a channel, and so on.
• The data can be used where data flow control is necessary.
• Filter tables implement the generic
interface IMessageFilterTable.
11. • Filter tables have several methods that match a message
against all the filters in the table and return an unordered
collection of matching filters or data.
• Some of the match methods are multiple-match and return
all matching items. Others are single-match, returning only
one item, and throw a MultipleFilterMatchesException if
more than one filter matches.
12. • Action Filters:
• The ActionMessageFilter contains a list of action strings.
• If any of the actions in the filter’s list matches the Action
header in the message or message buffer, the Match method
returns true.
• If the list is empty, the filter is considered a match-all filter
and any message or message buffer matches
and Match returns true.
• If none of the actions in the filter’s list matches the Action
header in the message or message
buffer, Match returns false.
• If there is no action in the message and the filter’s list is non-
empty, then Match returnsfalse.
13. • XPathMessageFilter (XPath queries against incoming
messages)
• EndpointAddressMessageFilter and
PrefixEndpointAddressMessageFilter (match
against endpoint address)
20. Run your server(console application…).copy and paste URI to your
browser….get the following screen..notice that proxy creation is disabled…
21. Add Reference of System.ServiceModel…Also Import the namespace and copy
and paste interface there…
22. Create a object of ChannelFactory….using object of interface
create a new channel….
23. Run your Server First…Run your client…You will get the message on the
Server…..
24. Change the binding to the WSHttpBinnding on the client…run the server…run the
client…observer the result….RUN TIME ERROR….
Limitation of ConfigLess WCF is..only for BasicHttpBinnding…not for
WSHttpBinding….That means config file is necessary for wsHttpBinding…configless
is not a Permanent solution.
26. • Our objective is change BasicHttpBinding with WSHttpBinding
on the server[so we have to drop configless setting].
• On server add new app.config file.Try to open it with
Configuration Editor…but you can’t..so manually write
configuration.
35. Need for Routing
Change address and binding on the server…
Note:We have address http://localhost:9000 and binding WSHttpBinding on the
client….Server side it is changed…so we required Routing…A Protocol Bridging
Now ,if we run Server as well as Client application we get an error…the
solution is SOAP Router….
36. Create a new console application…name it WCFRouter
We want this to
Listen to a certain endpoint
And forward
Over to the listener
37. Add reference of System.ServiceModel as well as
System.ServiceModel.Routing-----A Required NameSpace for Routing
38. RoutingService is responsible for routing messages between endpoints based on filter criteria.
ServiceHost provides a host for services….
40. IRequestReplyRouter interface is required to process message from
Request-Reply channel
Address and Bindings are the same at the client—so this would be server for
client --Make sure on the server we have change d the address and binding
42. Filter tables are used to store key-value pairs, where a filter is the key and some
associated data is the value.
Gets or sets the name of the filter table used by this routing service for routing message
Behaviour section