310 likes | 446 Views
SOA. Visão Geral das Funcionalidades de Descoberta e Roteamento de Serviços em WCF 4. jorge.goncalves@rumos.pt. (MCT) Microsoft Certified Trainer (MCPD) ASP.NET Developer 3.5 (MCTS) Microsoft Office SharePoint Server 2007 – Configuration. Formador Rumos Sys Admin DGITA Consultor
E N D
SOA Visão Geral das Funcionalidades de Descoberta e Roteamento de Serviços em WCF 4
jorge.goncalves@rumos.pt • (MCT) Microsoft Certified Trainer • (MCPD) ASP.NET Developer 3.5 • (MCTS) Microsoft Office SharePoint Server 2007 – Configuration • Formador Rumos • Sys Admin DGITA • Consultor • Analista Programador • PG GSI • PG Informática • LIC Informática www.rumos.pt
DEMOS Demo : Creating a Calculator Service Demo : Service Routing Demo : Add-hoc Service Discovery Demo : Managed Service Discovery Comunidade Rumos – Webcasts http://comunidade.rumos.pt/webcasts.rumos Source Code: MSDN (WCF) Samples http://msdn.microsoft.com/en-us/library/dd483346.aspx
Why SOA? • Challenges in Building Business Applications • Objectives of Service-Oriented Architecture • What Is a Service? • The Pillars of SOA • Services Communicate Through Edges
Challenges in Building Business Applications We are living in a distributed world ü Business is agile ü Efficient integration and interoperability are essential ü Costs must be reduced ü Systems have to be scalable, secure, and reliable ü
Objectives of Service-Oriented Architecture SOA is an architectural style designed for building distributed systems ü Agility Productivity Reuse Reduce Cost
What Is a Service? A service exposes functionality by accepting data (requests) and sometimes returning data (responses)
The Pillars of SOA The following properties define a service-oriented architecture: ü Services handle data, not objects ü Services are autonomous ü Services have explicit boundaries ü Services expose contract and policy ü
Services Communicate Through Edges Services expose edges to the outside world—edges can be used for communication with the service ü All interaction with a service is done through an edge ü A service can expose multiple edges ü The edge has an address ü SOA edges are WCF endpoints ü
Demo Creating a Calculator Service • The Service • ServiceHost Class • Endpoint ABC (address binding contract) • Metadata behaviour • Endpoint behaviour • The Client • Proxy Pattern
Routing • The Benefits of Routing • Introduction to the WCF Routing Service • Configuring Routing Using Message Filters • Configuring Routing Endpoints and Filters • Using Custom Filter Types and Content-Based Routing • Using Routers for Protocol Bridging • Using Routers to Mask Service Unavailability • Using Routers for Multicast Messaging
The Benefits of Routing The broker design pattern provides agility and reliability to distributed systems, and enables: ü Content-based load balancing ü Automatically use of fallback services ü Protocol bridging ü Masking of versioning issues ü
Introduction to the WCF Routing Service The Routing Service is part of WCF 4, and is implemented in the System.ServiceModel.Routing.RoutingService class ü Hosted like any other service ü Supports all messaging patterns ü Determines the target service by evaluating each incoming message against a set of message filters ü Implements the ISimplexDatagramRouter, ISimplexSessionRouter, IRequestReplyRouter, and IDuplexSessionRouter contracts ü
Configuring Routing Using Message Filters Message filters are specified in code or in the Routing configuration section ü Message filters are grouped into filter tables ü The routing configuration contains filter types and a collection of mappings between a message filter and a target endpoint ü The RoutingBehavior defines the filter table to use ü
Configuring Routing Endpoints and Filters <routing> <filters> <filtername="MatchAllFilter"filterType="MatchAll"/> </filters> <filterTables> <filterTablename="MyFilterTable"> <addfilterName="MatchAllFilter"endpointName="Service"/> </filterTable> </filterTables> </routing> <behaviors> <serviceBehaviors> <behaviorname="UseRouting"> <routingfilterTableName="MyFilterTable" /> </behavior> </serviceBehaviors> </behaviors> <client> <endpointname="Service“ address="..."binding="...“contract="..."/> </client>
Using Custom Filter Types and Content-Based Routing WCF supports a wide range of filter types ü You can use XPath filters to inspect the content of the incoming messages ü You can define custom filters (rules) that target messages according to their content ü You can create custom filter types for advanced routing scenarios ü
Using Routers for Protocol Bridging The client-to-router and router-to-service bindings do not have to match ü You can bridge incompatible protocols using a Routing Service as the middle-man ü The client-to-router and router-to-service messaging patterns must match ü
Using Routers to Mask Service Unavailability You can configure the router service to route a message to a backup service if the target service fails; this masks service unavailability and improves reliability ü <routing><filters> <filtername="MatchAllFilter"filterType="MatchAll"/> </filters> <filterTables> <filterTablename="MyFilterTable"> <addfilterName="MatchAllFilter" endpointName="CalcService" backupList="AlternateCalc"/> </filterTable> </filterTables> <backupLists> <backupList> <addendpointName="AlternateCalc"/> </backupList> </backupLists></routing>
Using Routers for Multicast Messaging The Routing Service supports multicast, enabling publish/subscribe and distribution-style messaging ü If the incoming message matches multiple filters, it will be delivered to each of the target endpoints ü Multicast only works for one-way or duplex messaging; it does not work for request-response messaging ü
WCF Discovery • Introduction to WCF Discovery • Ad-Hoc Discovery Architecture • The Process of Ad-Hoc Discovery • Configuring Ad-Hoc Discovery • Issuing Probe and Resolve Messages • Discovery Proxy Architecture • The Process of the Discovery Proxy • Discovering Services Using a Discovery Proxy
Introduction to WCF Discovery Discovery addresses the question: Where is the service? ü The service’s location is dynamic ü Discovery and Service Repository using WS-Discovery ü Discovery enables agility – choose the service to consume at runtime ü
Ad-Hoc Discovery Architecture WCF 4 introduces WS-Discovery support that consists of two message categories: ü Announcements (Hello/Bye messages) ü Discovery (Probe/Resolve messages) ü
The Process of Ad-Hoc Discovery Service is up Hello Where is the service? Probe CLIENT Resolve Bye Service is down Discovery Announcement
Configuring Ad-Hoc Discovery <behaviorname="SendAnnouncements"> <serviceDiscovery> <!--specify that announcement messages will be sent and where.--> <announcementEndpoints> <endpointkind="udpAnnouncementEndpoint"/> </announcementEndpoints> </serviceDiscovery> </behavior> <service name=“...” behaviorConfiguration="SendAnnouncements"> . . . <!-- listen for discovery request messages. --> <endpointname="udpDiscovery"kind="udpDiscoveryEndpoint“ endpointConfiguration="adhocDiscoveryEndpointConfiguration"/> </service> <standardEndpoints> <udpDiscoveryEndpoint> <!--Specify the discovery protocol version and maxResponseDelay--> <standardEndpointname="adhocDiscoveryEndpointConfiguration“discoveryVersion="WSDiscovery11"maxResponseDelay="00:00:00.600" /> </udpDiscoveryEndpoint> </standardEndpoints>
Issuing Probe and Resolve Messages The DynamicEndpoint class is used by the client to issue probe messages ü Dynamic endpoints can be defined in code and in the XML configuration file ü The FindCriteria class enables granular discovery ü // Discover endpoints when the client is opened. // The contract is used as the FindCriteria. // UdpDiscoveryEndpoint is used to send Probe message. DynamicEndpoint dynamicEndpoint = newDynamicEndpoint( ContractDescription.GetContract( typeof(ICalculatorService)),newWSHttpBinding());
DemoAdd-hoc Service Discovery • The Service • behaviourConfiguration for serviceDiscovery • announcementEndpoints for announcements • Enpoint with kind=“udpDiscoveryEndpoint” for discovery • CalcendpointBehaviorConfiguration behaviour for scope criteria • The Client • Endpoint with kind=“dynamicEndpoint” and dynamicEndpointConfiguration for find scope criteria
Discovery Proxy Architecture The discovery proxy enables discovery support outside the enterprise: ü Listens for announcements and caches endpoint information internally ü Forwards “Probe” and “Resolve” messages ü Can function as a router ü
The Process of the Discovery Proxy Service is up Hello Where is the service? PROXY CLIENT Probe Resolve Bye Service is down Subnet Discovery Announcement
Discovering Services Using a Discovery Proxy The DiscoveryClient class calls the discovery proxy; it can also be used to issue “Probe” messages inside the subnet ü // The discovery endpoint points to the discovery proxy Uri probeEndpointAddress = new Uri("net.tcp://localhost:8001/Probe"); DiscoveryEndpoint discoveryEP = newDiscoveryEndpoint(new NetTcpBinding(), newEndpointAddress(probeEndpointAddress)); // Call the discovery proxy DiscoveryClient discoveryClient = newDiscoveryClient(discoveryEP); FindResponse findResponse = discoveryClient.Find( newFindCriteria(typeof(ICalculatorService))); if (findResponse.Endpoints.Count > 0) InvokeCalculatorService(findResponse.Endpoints[0].Address);
Using Routers for Multicast Messaging The Routing Service supports multicast, enabling publish/subscribe and distribution-style messaging ü If the incoming message matches multiple filters, it will be delivered to each of the target endpoints ü Multicast only works for one-way or duplex messaging; it does not work for request-response messaging ü
Demo 2.2Managed Service Discovery • The Discovery Proxy Abstract Class • The Service • Announces it’s presence in the proxy’s anouncement endpoint • The Client • Endpoint with kind=“dynamicEndpoint” • And dynamicEndpointConfiguration for • find scope criteria • set it’s discovery address endpoint to the proxy’s probe address