Dynamische NeukonfigurationDynamic Reconfiguration

Diesem Beispiel wird den Windows Communication Foundation (WCF)-Routingdienst veranschaulicht.This sample demonstrates the Windows Communication Foundation (WCF) routing service. Der Routingdienst ist eine WCF-Komponente, die integrieren ein inhaltsbasierten Routers in die Anwendung aufnehmen vereinfacht.The routing service is a WCF component that makes it easy to include a content-based router in your application. In diesem Beispiel wird die standard-WCF--Rechnerbeispiel für die Kommunikation über den Routingdienst angepasst.This sample adapts the standard WCF Calculator Sample to communicate using the routing service. In diesem Beispiel wird gezeigt, wie der Routingdienst während der Laufzeit dynamisch neu konfiguriert werden kann.This sample shows how the routing service can be dynamically reconfigured during runtime.

Wichtig

Die Beispiele sind möglicherweise bereits auf dem Computer installiert.The samples may already be installed on your computer. Suchen Sie nach dem folgenden Verzeichnis (Standardverzeichnis), bevor Sie fortfahren.Check for the following (default) directory before continuing.

<InstallDrive>:\WF_WCF_Samples

Wenn dieses Verzeichnis nicht vorhanden ist, fahren Sie mit Windows Communication Foundation (WCF) und Windows Workflow Foundation (WF) Samples for .NET Framework 4 aller Windows Communication Foundation (WCF) herunterladen und WFWF Beispiele.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. Dieses Beispiel befindet sich im folgenden Verzeichnis.This sample is located in the following directory.

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

BeispieldetailsSample Details

Damit der Routingdienst während der Laufzeit dynamisch neu konfiguriert werden kann, wird in diesem Beispiel alle fünf Sekunden ein Timer ausgelöst, mit dem ein neues RoutingConfiguration-Objekt erstellt und angewendet wird.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. Diese Konfiguration verweist entweder auf den reguläre Rechnerendpunkt oder auf den Rundungsrechnerendpunkt.This configuration references either the regular Calculator endpoint or the Rounding Calculator endpoint. Die Meldungen der Rechnerclientanwendung werden von einem der beiden Dienste zurückgegeben, abhängig davon, auf welchem Dienst der Routingdienst für das Routing zu der jeweiligen Zeit konfiguriert ist.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.

Es wird die Funktion des Routingdiensts zur dynamischen Neukonfiguration über ein benutzerdefiniertes Verhalten verwendet.The routing service’s capabilitiy for dynamic reconfiguration through a custom behavior is used. Mit diesem benutzerdefinierten Verhalten wird eine Diensterweiterung angefügt, die einen einfachen Threadtimer enthält. Der Timer wird alle fünf Sekunden ausgelöst und verursacht damit einen Rückruf zur UpdateRules-Methode.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. Mit dem Rückruf wird die neue Routingkonfiguration erstellt und übernommen.This callback creates and applies the new routing configuration. In einer tatsächlichen Bereitstellung würde dieser Rückruf wahrscheinlich als Ergebnis eines anderen Ereignistyps (z. B. einer SQL-Ereignisbenachrichtigung oder einer WS-Discovery-Ankündigung) erfolgen.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.

So verwenden Sie dieses BeispielTo use this sample

  1. Öffnen Sie mit Visual Studio 2012Visual Studio 2012 DynamicReconfiguration.sln.Using Visual Studio 2012Visual Studio 2012, open DynamicReconfiguration.sln.

  2. So öffnen Projektmappen-Explorerwählen Projektmappen-Explorer aus der Ansicht Menü.To open Solution Explorer, select Solution Explorer from the View menu.

  3. Drücken Sie F5 oder STRG + UMSCHALT + B in Visual Studio.Press F5 or CTRL+SHIFT+B in Visual Studio.

    1. Wenn Sie möchten, um die erforderlichen Projekte automatisch gestartet, wenn Sie durch Drücken F5mit der rechten Maustaste auf die Projektmappe, und wählen Sie Eigenschaften.If you would like to auto-launch the necessary projects when you press F5, right-click the solution and select Properties. Wählen Sie die Startprojekt Knoten unter allgemeine Eigenschaften im linken Bereich.Select the Startup Project node under Common Properties in the left pane. Wählen Sie die mehrere Startprojekte Optionsfeld aus, und legen Sie alle Projekte haben die starten Aktion.Select the Multiple Startup Projects radio button and set all of the projects to have the Start action.

    2. Wenn Sie das Projekt mit erstellen STRG + UMSCHALT + B, müssen Sie die folgenden Anwendungen starten:If you build the project with CTRL+SHIFT+B, you must start the following applications:

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

      2. Rechnerdienst (./CalculatorService/bin/service.exe)Calculator Service (./CalculatorService/bin/service.exe)

      3. Routingrechnerdienst (./RoundingCalcService/bin/service.exe)Routing Calculator Service (./RoundingCalcService/bin/service.exe)

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

  4. Drücken Sie im Konsolenfenster des Rechnerclients die EINGABETASTE, um den Client zu starten und die Rechnerdienstvorgänge aufzurufen.In the console window of the Calculator Client, press ENTER to start the client and to call the Calculator service operations.

    Der Routingdienst leitet abwechselnd Meldungen an den Rundungsrechner und den regulären Rechner, da die Routingkonfiguration sich alle fünf Sekunden ändert.The routing service routes messages to the Rounding Calculator and to the regular Calculator alternately as the routing configuration changes dynamically every five seconds. Abhängig davon, an welchen Endpunkt der Routingdienst Meldungen laut Konfiguration senden soll, ist die Ausgabe im Clientkonsolenfenster jeweils unterschiedlich.Depending on which endpoint the routing service is configured to send messages to there are different outputs in the client console window.

  5. Drücken Sie mindestens fünf Sekunden lang wiederholt die EINGABETASTE, und achten Sie auf die Änderung der Ergebnisse des Diensts.Continue pressing ENTER repeatedly over more than five seconds and observe the change in the results from the service.

    1. Die zurückgegebene Ausgabe, wenn der Routerdienst zum Routen von Meldungen an den Rundungsrechnerdienst konfiguriert ist, sieht folgendermaßen aus: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. Die zurückgegebene Ausgabe, wenn der Routingdienst zum Routen von Meldungen an den regulären Rechnerdienst konfiguriert ist, sieht folgendermaßen aus: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. Vom Rechnerdienst und der Rundungsrechnerdienst wird außerdem ein Protokoll der Vorgänge gedruckt, die in den jeweiligen Konsolenfenstern aufgerufen werden.The Calculator Service and the Rounding Calculator Service also print out a log of the operations invoked to their respective console windows.

  7. Klicken Sie im Konsolenfenster Clients geben Sie "Beenden", und drücken Sie EINGABETASTE zu beenden.In the client console window, type "quit" and press ENTER to exit.

  8. Drücken Sie die EINGABETASTE in den Dienstkonsolenfenstern, um die Dienste zu beenden.Press ENTER in the services console windows to terminate the services.

SzenarioScenario

In diesem Beispiel wird der Router als inhaltsbasierter Router dargestellt, der ermöglicht, dass mehrere Typen oder Implementierungen von Diensten über einen Endpunkt verfügbar gemacht werden.This sample demonstrates the router acting as a content-based router allowing multiple types or implementation of services to be exposed through one endpoint.

Reales SzenarioReal World Scenario

Contoso möchte sämtliche Dienste virtualisieren, um nur einen Endpunkt öffentlich verfügbar zu machen, über den Zugriff auf mehrere verschiedene Dienste gewährt wird.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 diesem Fall werden die inhaltsbasierten Routingfunktionen des Routingdiensts verwendet, um zu bestimmen, wohin die eingehenden Anforderungen gesendet werden sollen.In this case they utilize the routing service’s content-based routing capabilities to determine where the incoming requests should be sent.

Siehe auchSee Also

AppFabric-Hosting und PersistenzbeispieleAppFabric Hosting and Persistence Samples