Riconfigurazione dinamica
Nell'esempio viene descritto il servizio di routing Windows Communication Foundation (WCF). Il servizio di routing è un componente di WCF che semplifica l'aggiunta nell'applicazione di un router basato sul contenuto. In questo esempio viene adattato l'esempio relativo alla calcolatrice WCF standard comunicare tramite il servizio di routing. In questo esempio viene illustrato come è possibile riconfigurare il servizio di routing dinamicamente durante il runtime.
![]() |
---|
È possibile che gli esempi siano già installati nel computer. Verificare la directory seguente (impostazione predefinita) prima di continuare.
<UnitàInstallazione>:\WF_WCF_Samples
Se questa directory non esiste, vedere la pagina relativa agli esempi di Windows Communication Foundation (WCF) e Windows Workflow Foundation (WF) per .NET Framework 4 per scaricare tutti gli esempi Windows Communication Foundation (WCF) e WF. Questo esempio si trova nella directory seguente.
<UnitàInstallazione>:\WF_WCF_Samples\WCF\Basic\RoutingServices\DynamicReconfiguration
|
Dettagli dell'esempio
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. Questa configurazione fa riferimento al normale endpoint del servizio di calcolo o all'endpoint del servizio di calcolo che esegue l'arrotondamento. 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.
Vengono utilizzate le funzionalità del servizio di routing per la riconfigurazione dinamica tramite un comportamento personalizzato. 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
. Questo callback crea e applica la nuova configurazione del routing. 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.
Per utilizzare questo esempio
Aprire DynamicReconfiguration.sln utilizzando Visual Studio 2010.
Per aprire Esplora soluzioni, scegliere Esplora soluzioni dal menu Visualizza.
Premere F5 o F6 in Visual Studio.
Se si desidera che i progetti necessari vengano avviati automaticamente quando si preme F5, fare clic con il pulsante destro del mouse sulla soluzione e scegliere Proprietà. Selezionare il nodo Progetto di avvio in Proprietà comuni nel riquadro sinistro. Selezionare il pulsante di opzione Progetti di avvio multipli e impostare tutti i progetti in modo che dispongano dell'azione Avvia.
Se si compila il progetto con F6, sarà necessario avviare le applicazioni seguenti:
Client calcolatrice (./CalculatorClient/bin/client.exe)
Servizio di calcolatrice (./CalculatorService/bin/service.exe)
Servizio di routing relativo alla calcolatrice (./RoutingService/bin/RoutingService.exe)
RoutingService (./RoutingService/bin/RoutingService.exe)
Nella finestra della console del client calcolatrice premere INVIO per avviare il client e per chiamare le operazioni del servizio di calcolatrice.
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. A seconda dell'endpoint configurato per l'invio dei messaggi da parte del servizio routing, nella finestra della console client verranno visualizzati risultati diversi.
Continuare a premere INVIO ripetutamente per più di cinque secondi e osservare le modifiche nei risultati generati dal servizio.
Di seguito è riportato l'output restituito quando il servizio router è configurato per indirizzare messaggi al servizio di calcolo che esegue l'arrotondamento.
Add(100,15.99) = 116
Subtract(145,76.54) = 68.5
Multiply(9,81.25) = 731.2
Divide(22,7) = 3.1Di seguito è riportato l'output restituito quando il servizio di routing è configurato per indirizzare messaggi al normale servizio di calcolatrice.
Add(100,15.99) = 115.99
Subtract(145,76.54) = 68.46
Multiply(9,81.25) = 731.25
Divide(22,7) = 3.14285714285714
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.
Nella finestra della console client digitare "quit" e premere INVIO per uscire.
Premere INVIO nelle finestre della console dei servizi per terminare i servizi.
Scenario
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.
Scenario reale
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. 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.