Ejemplo de enrutador WCF controlado por reglas

Download sample

Un enrutador de SOAP es un intermediario que reenvía los mensajes SOAP de un cliente a un extremo de aplicación basado en un conjunto de reglas. Este ejemplo crea un enrutador de SOAP mediante Windows Communication Foundation (WCF).

Nota

Para generar y ejecutar este ejemplo, es necesario que esté instalado .NET Framework versión 3.5. Para abrir los archivos de solución y proyecto se necesita Visual Studio 2008.

El enrutador utiliza el motor de reglas de Windows Workflow Foundation (WF) para implementar la funcionalidad de enrutador básica que determina dónde reenviar un mensaje concreto. Este ejemplo muestra dos conceptos clave: cómo puede utilizar juntos Windows Workflow Foundation e WCF en una aplicación; y cómo puede utilizar el motor de reglas de Windows Workflow Foundation fuera de un flujo de trabajo (también denominado como "independiente").

Nota

Puede ver las reglas en este ejemplo utilizando Ejemplo de kit de herramientas de RuleSet externo.

Nota

Este ejemplo se basa en el ejemplo WCF Enrutador intermediario. Para entender a fondo los aspectos WCF del enrutador, consulte la documentación para de ese ejemplo.

El ejemplo está compuesto por cuatro proyectos: un servicio de calculadora, un servicio de eco, un enrutador y un cliente. En este ejemplo, los servicios de calculadora y eco son los servicios WCF estándar y se definen en los archivos Calculator.cs y EchoService.cs respectivamente.

El servicio del enrutador utiliza la extensibilidad WCF para procesar mensajes y otro comportamiento, como el control de modelos de transporte (datagrama/sesión, dúplex de solicitud/respuesta).

El archivo de código fuente RouterTable.cs define la clase que utiliza el motor de reglas WF para decidir dónde reenviar el mensaje recibido del cliente. Cuando el enrutador procesa cada mensaje, el enrutador llama RouterTable.SelectDestination() para obtener una dirección del extremo a la que reenviar el mensaje, basado en el contenido del mensaje.

En este punto, RouterTable.cs ejecuta el RuleSet SelectDestination encontrado en Selectdestination.Rules para determinar cuál de los posibles extremos (servicio de Calculadora o servicio de Eco) al que reenviar el mensaje.

Para entender o modificar el RuleSetSelectDestination , debería abrirlo utilizando Ejemplo de kit de herramientas de RuleSet externo encontrado en la versión .NET Framework 3.5 SDK:

Para abrir el RuleSet SelectDestination

  1. Inicie la aplicaciónEjemplo de kit de herramientas de RuleSet externo.

  2. En el menú Datos, haga clic en Importar.

  3. En el cuadro de diálogo Abrir archivo, seleccione router\SelectDestination.rules.

  4. En el editor RuleSet, haga clic en el RuleSetSelectDestination.

  5. En el cuadro de diálogo Workflow/Type Selection, haga clic en Examinar.

  6. En el cuadro de diálogo abrir archivos, vaya a la carpeta de router/bins y haga clic en WCF_Router.Router.exe.

  7. En la sección de Tipos Contenidos del cuadro de diálogo de Selección de tipo/flujo de trabajo, haga clic en RoutingTable, a continuación, haga clic en Aceptar.

  8. En la aplicación External RuleSet Toolkit, expanda SelectDestination, haga clic en Version 1.0 y, a continuación, haga clic en Edit Rules.

  9. Cuando se abre el External RuleSet Toolkit, el RuleSet SelectDestination aparece como se muestra en la figura 1.

Resultados de ejemplo de enrutador WCF controlado por reglas

Figura 1: El SelectDestination RuleSet en External RuleSet Toolkit

Hay seis reglas dentro del RuleSetSelectDestination. A continuación, se muestra una descripción de cada regla, en orden de mayor a menor prioridad.

  1. Initialize variables: Inicializa las variables en la clase RouterTable para que el resto de las reglas pueda utilizarlas.

  2. CalculatorService: Comprueba si un mensaje coincide con los criterios para reenviar el mensaje a CalculatorService(los mensajes deben contener la "calculadora" del encabezado). En ese caso, el extremo CalculatorService se agrega a la lista de posibles extremos a los que se puede reenviar el mensaje.

  3. EchoService: Comprueba si un mensaje coincide con los criterios para reenviar el mensaje a EchoService(los mensajes deben contener el encabezado de mensaje de acciónhttp://microsoft.servicemodel.samples/iechoservice/echo). En ese caso, el extremo EchoService se agrega a la lista de posibles extremos a los que se puede reenviar el mensaje.

  4. No matches: Comprueba si no hay ningún posible extremo al que se puede reenviar el mensaje. Si es true, entonces este hecho se registra en la consola.

  5. One match: Comprueba si no hay un sólo posible extremo al que se puede reenviar el mensaje. Si es true, entonces se reenvía el mensaje a este extremo.

  6. Multiple match: Comprueba si hay varios posibles extremos a los que podríamos reenviar el mensaje. Si es true, entonces se reenvía el mensaje a un extremo seleccionado de forma aleatoria de la lista de posibles extremos.

Observe que este RuleSet utiliza una característica de la versión .NET Framework 3.5 para reglas Windows Workflow Foundation: la capacidad de utilizar la palabra clave new para invocar constructores de clases. Por ejemplo, en la regla CalculatorService, si el mensaje coincide con los criterios, la regla agrega un nuevo EndpointAddress a la lista de posibles direcciones.

Al ejecutar el ejemplo, las solicitudes y respuestas de la operación se muestran en la ventana de la consola del cliente. Presione ENTRAR en la ventana de cliente para cerrar el cliente.

Echo("Is anyone there?") returned: Is anyone there?

Add(5) returned: 5

Add(-3) returned: 2

Para generar y ejecutar este ejemplo

  1. Asegúrese de que ha realizado el Procedimiento de instalación único para ejemplos de Windows Communication Foundation.

  2. Para generar el código C# o Visual Basic .NET Edition de la solución, siga las instrucciones de Generación de ejemplos de Windows Communication Foundation.

  3. Para ejecutar el ejemplo en una configuración de equipos única o cruzada, siga las instrucciones de Ejecución de ejemplos de Windows Communication Foundation, con las excepciones siguientes:

Consulte también

Otros recursos

Ejemplo de kit de herramientas de RuleSet externo
Enrutador intermediario

Footer image

Copyright © 2007 Microsoft Corporation. Reservados todos los derechos.