250 likes | 478 Vues
Workflow Services. Roberto González MVP Biztalk Server 2006 Renacimiento Sistemas. Agenda. Breve revisión de WF y WCF Mejor juntos– WF y WCF Arquitectura de WF Services Servicios Persistentes. Windows Workflow Foundation. ¿Qué es un Workflow?.
E N D
Workflow Services Roberto González MVP Biztalk Server 2006 Renacimiento Sistemas
Agenda • Breve revisión de WF y WCF • Mejor juntos– WF y WCF • Arquitectura de WF Services • Servicios Persistentes
Windows Workflow Foundation ¿Qué es un Workflow? Workflow es la organización de trabajo representando procesos de negocio o lógica de la aplicación ¿Cuál es el valor del workflow? Lógica de larga ejecución Flexibilidad Transparencia Liberado Nov 2006 como parte de Windows Vista
Anatomía de WCF <service> <endpoint name=“MyService” address=“MyAddress” binding=“netTcpBinding” contract=“IMyInterface”/> Address, Binding, Contract [ServiceContract] public interface IMyInterface { [OperationContract] public void MyMethod(String arg); } Definición de Contrato del servicio [ServiceBehavior(InstanceContextMode= InstanceContextMode.Single] public class MyService: IMyInterface { public void MyMethod(String arg){…} } Tipo de Servicio
Arquitectura del Runtime de WCF Service.cs Service Instance Service Runtime App.config ServiceHost OperationInvoker Operation 1 OperationSelector Operation 2 InstanceProvider ListenerChannel MessageInspector ServiceDescription ServiceBehavior OperationBehavior
FeedBack de .NET 3.0 • Feedback de clientes: • Los servicios de WCF necesitan una capa de persistencia • Workflows expuestos como un servicio de WCF • En .NET 3.0, nosotros teníamos que hacer la integración
Hazlo tu mismo… • Inicia el runtime del workflow • Crea una instancia de un workflow • Mapea mensajes a una instancia de workflow • Hidrata una instancia de workflow según sea necesario • Entrada/Salida de un workflow en el momento adecuado • … .NET 3.5 hace esto y más usando puntos de extensibilidad de .NET 3.0 (Workflow Services)
Workflow Services • Workflow + Servicios • Implementa Servicios-WCF con un workflow • Simplifica la integración entre WCF y WF • Proporciona Servicios de larga duración y persistentes • Los Workflows pueden ser activados mediante mensajes • Consume Servicios-WCF dentro de un workflow • Llama a servicios-WCF con actividades de workflow • Enlaza y propaga datos • Permite rápidamente componer aplicaciones que usan servicios • WCF y WF proporcionan un framework integrado • WCF Extensions – WorkflowServiceHost • Activities (Send y Receive) • Diseñador y herramientas (Contract-first ó Workflow-first)
Arquitectura de Workflow Services Service.cs Workflow.cs or Workflow.xoml Workflow Runtime Workflow Instance Service Instance Service Runtime WorkflowOperationInvoker App.config ServiceHost Workflow ServiceHost OperationInvoker ReceiveActivity 1 Operation 1 DurableInstanceProvider MessageContextInspector ReceiveActivity 2 Operation 2 OperationSelector InstanceProvider WF Persistence DB ContextChannel ListenerChannel MessageInspector WorkflowServiceBehavior ServiceDescription WorkflowOperationBehavior ServiceBehavior OperationBehavior
Workflow ServicesComponentes • Nuevas Actividades de WF: Send & Receive • Binding • ContextBindingElement • BasicHttpContextBinding, NetTcpContextBinding, WSHttpContextBinding • Behaviors • WorkflowRuntimeBehavior, PersistenceProviderBehavior, DurableServiceAttribute, DurableOperationAttribute • Hosting • WorkflowServiceHostFactory, WorkflowServiceHost
Workflow ServicesControl de acceso • Autenticación proporcionada por Canales de WCF • Soporta control de acceso estático usando extensibilidad de WCF AuthorizationManager • ReceiveActivity • PrincipalPermission (estático) • OperationValidator (dinámico)
ServiciosduraderosArquitectura PersistenceProvider Service.cs Service Instance Service Runtime App.config ServiceHost Operation 1 OperationInvoker DurableInstanceProvider MessageContextInspector Operation 2 OperationSelector InstanceProvider ContextChannel ListenerChannel MessageInspector DurableServiceBehavior ServiceDescription DurableOperationBehavior ServiceBehavior OperationBehavior
Servicios duraderos Demo…
Intercambio de contexto • El Modelo de transporte no trabajará en procesos de larga duración • Gestión en la capa de proceso o aplicación • Necesidad de acordar un protocolo de intercambio de contexto
Protocolo de intercambio de contexto [ServiceContract] interface ICalculator { [OperationContract] int Add(int value) [OperationContract] int Complete() } Client Service Add 55 Add Response Send Receive {instanceId} 55 Add 45 {instanceId} Add Response 100 Send Receive
Arquitectura de intercambio de contexto • ContextChannel implementa el intercambio de token de contexto • Recepción • Extraer contexto de ContextMessageProperty • Aplicar contexto en respuesta a peticiones de activación • Envío • Añadir contexto a todos los mensajes salientes • Representación del contexto • Cabecera SOAP <wsc:Context /> • Cookie HTTP • En código: IDictionary<XmlQualifiedName, string> WorkflowOperationInvoker Service Runtime DurableInstanceProvider OperationInvoker MessageContextInspector OperationSelector ContextChannel ListenerChannel InstanceProvider MessageInspector
Determinar Contexto de Salida • // dentro del códio wf • IDictionary<XmlQualifiedName, string> context; • // context = … obtener contexto desde el //almacen • sendActivity.Context = context; • //dinámicamente asignar la dirección de envío • sendActivity.CustomAddress = • “net.tcp://140.141.2.5/service.svc”;
Acceder al Contexto desde clientes no WF • // aplicación de wpf, winforms, … • IDictionary<XmlQualifiedName, string> context; • // context = … obtener contexto desde el almacén • IContextManager cm = • proxy.InnerChannel.GetProperty<IContextManager>(); • if (null != cm) • cm.SetContext(context); • // se necesita usar un channel stack que incluya el • // canal de contexto, o escribir las cabeceras directamente • // en el mensaje (no-WCF)
Trabajo de larga duración Motivación: Superar el comportamiento bloqueante de la actividad de envío, permitir al workflow continuar mientras ocurre el procesamiento. Aplicabilidad: Interactuar con un servicio que retorna rápidamente mientras continua el trabajo, notificar cuando se complete
Resumen • Workflow Services proporciona una forma natural de construir servicios • Con una comprensión del contexto, se pueden implementar avanzados patrones de comunicación • Consigue los ejemplos mostrados hoy: http://www.thinkingtogether.net rgon@renacimiento.com