Riconfigurazione dinamicaDynamic Reconfiguration

Questo esempio viene illustrato il servizio di routing di Windows Communication Foundation (WCF).This sample demonstrates the Windows Communication Foundation (WCF) routing service. Il servizio di routing è un componente WCF che rende più semplice includere un router basato sul contenuto nell'applicazione.The routing service is a WCF component that makes it easy to include a content-based router in your application. In questo esempio adatta l'esempio di calcolatrice WCF standard per comunicare tramite il servizio di routing.This sample adapts the standard WCF Calculator Sample to communicate using the routing service. In questo esempio viene illustrato come è possibile riconfigurare il servizio di routing dinamicamente durante il runtime.This sample shows how the routing service can be dynamically reconfigured during runtime.

Importante

È possibile che gli esempi siano già installati nel computer.The samples may already be installed on your computer. Verificare la directory seguente (impostazione predefinita) prima di continuare.Check for the following (default) directory before continuing.

<InstallDrive>:\WF_WCF_Samples

Se questa directory non esiste, andare al Windows Communication Foundation (WCF) e gli esempi di Windows Workflow Foundation (WF) per .NET Framework 4 per scaricare tutti i Windows Communication Foundation (WCF) e WFWF esempi.If this directory does not exist, go to Windows Communication Foundation (WCF) and Windows Workflow Foundation (WF) Samples for .NET Framework 4 to download all Windows Communication Foundation (WCF) and WFWF samples. Questo esempio si trova nella directory seguente.This sample is located in the following directory.

<InstallDrive>:\WF_WCF_Samples\WCF\Basic\RoutingServices\DynamicReconfiguration

Dettagli dell'esempioSample Details

Per riconfigurare dinamicamente il servizio di routing durante il runtime, questo esempio genera un timer ogni cinque secondi che determina la creazione e l'applicazione di un nuovo oggetto RoutingConfiguration.To dynamically reconfigure the routing service during runtime, this sample fires a timer every five seconds that creates a new RoutingConfiguration object and applies it. Questa configurazione fa riferimento al normale endpoint del servizio di calcolo o all'endpoint del servizio di calcolo che esegue l'arrotondamento.This configuration references either the regular Calculator endpoint or the Rounding Calculator endpoint. L'applicazione client calcolatrice riceve i messaggi da uno dei due servizi, a seconda del servizio di routing configurato per l'indirizzamento in quel momento specifico.The Calculator Client application has its messages returned from one service or the other, depending on which one the routing service is configured to route to at that time.

Vengono utilizzate le funzionalità del servizio di routing per la riconfigurazione dinamica tramite un comportamento personalizzato.The routing service’s capabilitiy for dynamic reconfiguration through a custom behavior is used. In base a tale comportamento personalizzato viene allegata un'estensione del servizio contenente un semplice thread che genera il timer ogni cinque secondi, comportando un callback al metodo UpdateRules.This custom behavior attaches a service extension, which contains a simple thread timer that fires every five seconds, which results in a callback to the UpdateRules method. Questo callback crea e applica la nuova configurazione del routing.This callback creates and applies the new routing configuration. In una distribuzione effettiva questo callback verrebbe probabilmente eseguito in risposta ad altri tipi di evento, ad esempio una notifica di evento SQL o un annuncio di individuazione WS.In an actual deployment, this callback would likely be accomplished as a result of some other type of event, such as a SQL-Event notification, or a WS-Discovery announcement.

Per usare questo esempioTo use this sample

  1. Aprire DynamicReconfiguration.sln utilizzando Visual Studio 2012Visual Studio 2012.Using Visual Studio 2012Visual Studio 2012, open DynamicReconfiguration.sln.

  2. Per aprire Esploraselezionare Esplora dal visualizzazione menu.To open Solution Explorer, select Solution Explorer from the View menu.

  3. Premere F5 oppure CTRL + MAIUSC + B in Visual Studio.Press F5 or CTRL+SHIFT+B in Visual Studio.

    1. Se si desidera avviare automaticamente i progetti necessari quando si preme F5, la soluzione e scegliere proprietà.If you would like to auto-launch the necessary projects when you press F5, right-click the solution and select Properties. Selezionare il progetto di avvio nodo proprietà comuni nel riquadro a sinistra.Select the Startup Project node under Common Properties in the left pane. Selezionare il più progetti di avvio pulsante di opzione e impostare tutti i progetti per il avviare azione.Select the Multiple Startup Projects radio button and set all of the projects to have the Start action.

    2. Se si compila il progetto con CTRL + MAIUSC + B, è necessario avviare le applicazioni seguenti:If you build the project with CTRL+SHIFT+B, you must start the following applications:

      1. Client calcolatrice (./CalculatorClient/bin/client.exe)Calculator Client (./CalculatorClient/bin/client.exe)

      2. Servizio di calcolatrice (./CalculatorService/bin/service.exe)Calculator Service (./CalculatorService/bin/service.exe)

      3. Servizio di routing relativo alla calcolatrice (./RoundingCalcService/bin/service.exe)Routing Calculator Service (./RoundingCalcService/bin/service.exe)

      4. RoutingService (./RoutingService/bin/RoutingService.exe)RoutingService (./RoutingService/bin/RoutingService.exe)

  4. Nella finestra della console del client calcolatrice premere INVIO per avviare il client e per chiamare le operazioni del servizio di calcolatrice.In the console window of the Calculator Client, press ENTER to start the client and to call the Calculator service operations.

    Il servizio di routing indirizza i messaggi in modo alternativo e dinamico al servizio di calcolo che esegue l'arrotondamento e al normale servizio di calcolatrice a mano a mano che la configurazione del routing viene modificata dinamicamente ogni cinque secondi.The routing service routes messages to the Rounding Calculator and to the regular Calculator alternately as the routing configuration changes dynamically every five seconds. A seconda dell'endpoint configurato per l'invio dei messaggi da parte del servizio routing, nella finestra della console client verranno visualizzati risultati diversi.Depending on which endpoint the routing service is configured to send messages to there are different outputs in the client console window.

  5. Continuare a premere INVIO ripetutamente per più di cinque secondi e osservare le modifiche nei risultati generati dal servizio.Continue pressing ENTER repeatedly over more than five seconds and observe the change in the results from the service.

    1. Di seguito è riportato l'output restituito quando il servizio router è configurato per indirizzare messaggi al servizio di calcolo che esegue l'arrotondamento.The following is the output returned if the Router Service is configured to route messages to the Rounding Calculator service.

      Add(100,15.99) = 116  
      Subtract(145,76.54) = 68.5  
      Multiply(9,81.25) = 731.2  
      Divide(22,7) = 3.1  
      
    2. Di seguito è riportato l'output restituito quando il servizio di routing è configurato per indirizzare messaggi al normale servizio di calcolatrice.The following is the output returned if the routing service is configured to route messages to the regular Calculator service.

      Add(100,15.99) = 115.99  
      Subtract(145,76.54) = 68.46  
      Multiply(9,81.25) = 731.25  
      Divide(22,7) = 3.14285714285714  
      
  6. Il servizio di calcolatrice e il servizio di calcolo che esegue l'arrotondamento stamperanno inoltre un log delle operazioni richiamate nelle rispettive finestre della console.The Calculator Service and the Rounding Calculator Service also print out a log of the operations invoked to their respective console windows.

  7. Nella finestra della console client, digitare "quit" e premere INVIO per uscire.In the client console window, type "quit" and press ENTER to exit.

  8. Premere INVIO nelle finestre della console dei servizi per terminare i servizi.Press ENTER in the services console windows to terminate the services.

ScenarioScenario

In questo esempio il router agisce come router basato sul contenuto consentendo a più tipi o implementazioni di servizi di essere esposti mediante un endpoint.This sample demonstrates the router acting as a content-based router allowing multiple types or implementation of services to be exposed through one endpoint.

Scenario realeReal World Scenario

Contoso desidera virtualizzare i propri servizi per esporre pubblicamente solo un endpoint tramite il quale viene offerto l'accesso a più tipi diversi di servizi.Contoso wants to virtualize all of their services to expose only one endpoint publicly through which they offer access to multiple different types of services. In questo caso, le funzionalità di routing basate sul contenuto del servizio di routing vengono utilizzate per determinare dove devono essere inviate le richieste in entrata.In this case they utilize the routing service’s content-based routing capabilities to determine where the incoming requests should be sent.

Vedere ancheSee Also

Hosting di AppFabric ed esempi di persistenzaAppFabric Hosting and Persistence Samples