Está en la página 1de 28
Aagentina $2.20 " Microsoft Curso tedrico y practico de programacién pesarrollagar ’ my W Con toda la potencia @| IS de Visual Basic .NET y C# on La mejor forma de aprender ufu.f-f.h. a programar desde cero Dear eee A Vat ate Coy VS Communication Foundation Service, Data Ae a (oyalar-icws Binding / MSMQ: Conceptos e\integraciénséA Web-Service Enhancements / Remoting g N°1 DE =n ers Wea eee Rea “heed eed a PAU Mai bir MT ND a OHO HA ° aS UL aC Te USS p51) NOE sens i A Seguinos en: € redusers.com (srcscs-" g : www,youtube.com/redusersvideos. Web Services Enhancements (WSE) Microsoft Web Services Enhancements (WSE) 3.0 brinda una plataforma para implementar algunos de los estandares WS-*. Organizaciones como el World Wide Web Com sortium (W'3C) y la Organization for the Adnance ment of Structured Information Standards (OASIS) hhan desarrollado estindares y especificaciones para aseguras la interoperabilidad, seguridad y confiabilidad de los servicios Web a través de diversas plataformas tecnolégicas. Algunas especificaciones, como WS-Security 1.0 y Lil, WS-Trust, WS-SecureConyersation, WS-Addressing y Message Transmission Optimization Mechanism (MTOM), fueron creadas en colaboracién con Microsoft y otras industrias, Debido a que muchos de sus ‘nombtes comienzan con “WS-*, se las cono- ce como WS, Web Services Enhancements (WSE) para Mi- crosoft NET es un add-on pata Microsoft Visual Studio y Microsoft NET Framework que permite a los desartolladores constrair servicios Web basados en los estindares WS-* F1 foco principal de WSE esta puesto en brindar seguridad a nivel de mensaje en el desarrollo de aplicaciones distribuidas. Debe- ‘mos asegurar la autenticidad y confidenciali- dad de los mensajes seaside por nuestros servicios, Web, icione§ do sepurida ive UAC raniporte, come BF (punto a punto), presentan limitaciones si los mensajes deben ser examinados 0 necesitan ser procesadas por alptin intermediario (por ejemplo, no puede eneriptarse sdlo una parte dc ellos). La especificacion WS-Security esra- blece e6mo podemos erear servicios Web se- ‘puros a nivel de mensaje (final a final). WS: Addressing provee la forma de especificar la informacion de destino y ruteo dentro de los mensajes SOAP, para hacerlos independien- tes del protocolo de transporte. WSE también nos permite cl envio eficiente de datos binarios (documentos ¢ imigenes) como parte de un mensaje SOAP. Fsto se ha- cea través de un proceso de optimix (transpatente para el desartollador) provisto, por MOM, Otto beneficio es que MTOM permite securitizar tanto los datos como el mensaje SOAP usando WS-Security, MTOM. es una recomendacidn de W'3C como reempla- zo de DIME y WS-Attachments en el envio de gran cantidad de datos. 1.as dos iltimas versiones proviseas por Mi- crosoft como descargas son WSE 2.0 SP3 y WSE 3.0. El primero es soportado pot el NBT Framework 1.1 y 2.0. Bl segundo esti Web Services Enhancements (WSE) para Microsoft .NET ©8 un add-on para Visa Studio! -NET que permite a los desarrolladores construir servicios Web basados en los estandares WS-*. 505 construido para los desarrolladores que usan Visual Studio 2005 y NET Framework 20. Esta versién nos otorga una herramienta de tiempo de diseio (WSE Settings 3.0) que se integra con Visual Studio 2005. WSE.3.0 y WSE 2.0 SP3 pueden ser instalados lado a la- do en la misma maquina, Pero WSE 2.0 0 ¢ “wire-level” compatible con WSE 3.0 (ni con WCF), debido a cambios en las especifi- caciones (como WS-Addressing). Por su par te, WSE 3.0 ¢s “vite-level” compatible con WCE Esto significa que si desarrollamos instalamos servicios Web con WSE 3.0, los clientes WCF pueden comunicarse con ellos. De la misma forma, los clientes WSE 3.0 pueden comunicarse con servicios WC El Basic Profile es definido por la organiza cién Web Service Interoperability (WS-A), la cual promueve la interoperabilidad de servicios Web entre plataformas, sistemas operativos y enguajes de programacion. Es una guia para la construccién de servicios Web que pueden ser consumidos a través de distintas platafor- mas recnolégicas. WCF conforma el Basic Profile 1.1. Debemos asegurarnos de que ‘Setup Type Choose the setup type tha best sus your needs tale ent les oly, nuestros servicios Web conformen el Basic Profile 1.1. En Visual Studio 2005, el templa- te para la creacién de servicios Web hace al servicio compatible con él usando el atsibuto WebServiceBinding para decorar el servicio, A continuacién, veremos unos ejemplos en VBNET y C#.NET: VB: Imports systes.teb Imports Systes.tieb.Services Imports Systos.tieb. Services Protocols 1) 1 Breve descripelin para MiNebservice vo) epsunmary> -tvebservice (Nanespace :="http://tenpuri.org/")> “tlebServiceBinding ConformsTo:=WsiProfiles. BasicProtilet_1)> _ - _ Public Class Mimebservice Inherits systen.Meb.Services Webservice _ FIGURA 010 | Pantalla de instalacion de WSE 3.0, unten tal pus standalone tok, Sutable fora deployment ‘cent whee the tol are needed fr coigraben. Adinstratcr neal pls documentation ane samples. Mirosft ‘NET Framonerk sok 20 or Morse eu Sto 2008 ae Fequredt vat the documentation, Merosft Visual Sedo 2005 ‘equredto bull and runthe samples. cane rl ORL e ALIS C. 2005 requted farts rstalatin ype. ‘Choose which program Features you wantinstaled and vere they bibs nctled Reconmende tor aavanees ure 506 uplte Function HeLioviorie() As String Eee WSE también nos permite el oo envio eficiente de datos binarios nd class como parte de un mensaje _ SOAP. Esto se hace a través TERE de un proceso de optimizacién ising Syston coLtections; provisto por MTOM. using syston.teb; using Systen.teb. Services; using Syston.tieb.Services Protocols; » 111 IWebuethod 111 Breve descripcisn para MiNebservice pubiie string He2oHort4() < 11) return “Hello World; IMiebservice Wanespace = "http://tempuri.org/")1 ¥ IWebserviceBineing(ContormsTo = WsiProfiles. BasicProfilet_1)] > public class wiebservice : Syaten.lieb. Services.WebService ( E] gran beneficio de WSE. 3.0 es que inteodu- ce un framework ficil de usar para otorgar se- public winesservice() ( guridad y autenticacion a los servicios Web, abstrayendo a los desarrolladores de los deta- "Uncomment the Following Line if using Iles de las especificaciones soportadas (ver Ta- designed components bla 18). Cada versién de una especificacién /1nitsarizeconponent (1; posce un namespace XML. | Especificaciones soportadas por WSE 3.0 ea ena eee ne ne re ee el ae Peer) 507 .NET Remoting Remoting permite la comunicacién entre objetos en diferentes dominios de aplicacién usando distintos protocolos. Podemos usar Remoting para resolver los si- uientes tipos de comunicacién entre objetos en diferentes dominios de aplicaci6n: en el mismo, proceso, en procesos distintos en la misma PC, yen procesos distintos en computadoras dife- rentes conectadas por una red. Remoting usa el modelo cliente-servidor. Los clientes y servidores que emplean Remoting pueden cjecutarse en cualquier entorno de ejecucién provisto por el Framework NET, por ejemplo, en aplicaciones de consola. Un objeto considerado remoto puede ser accedi- do fuera de su dominio de aplicacién por medio de un proxy, o puede ser copiado y su copia pasada fuera de su dominio de aplica~ Gién, Esto €s, los objetos remotos pueden ser pasados por referencia 0 por valor. Los primeros se denominan objetos de tipo ‘Marshal-by-reference (MBR) y los segun- dos, de tipo Marshal-by-value (MBV). Re- cordemos que marshalling es el proceso de transformar la representacién en memoria de un objeto en un formato que pueda ser usa- do para persistencia 0 transmisién a través de una red. La manera mas sencilla de definir una clase en Visual Basic que nos permita obtener instancias de tipo MBY es usar Ia clase System SerializableAttribute: Seriatizable()> _ Public Clase Test Ena cass: :NET Remoting iblogspot.com.ar FIGURA 01 | | Esquema de comunicacién 508 Si la clase necesita controlar su proceso de serializacién, puede implementar la interfax ISerializable: Public Class Test Implenonts ISortalizable End Class Obtendremos instancias de tipo MBR si lt clase deriva de System.MarshalByRefObject: Public Clase Tost Inherits arshalByRerObject End class Dependiendo del tipo de activacién declara- do, cuando un cliente crea una instancia de un objeto MBR, la infraestructura de. NET Remoting genera un proxy que representa al KRESS »bjeto MBR en el dominio de aplicacién del cliente, y a dicho cliente le retorna una refe- rencia al objeto prox Cuando el cliente hace una llamada a un mé todo, lo hace sobre el proxy. La infraestruc tura de NET Remoting recibe la llamada, hace el marshalling correspondiente hacia el dominio de aplicacién del objeto remoto ¢ invoca la llamada sobre el objeto kemoto. F nalmente, retorna el resultado al proxy, que lo devuelve al cliente. Para establecer comunicacién entre un clien- ervidor, debemos configurar, me diante eédigo o usando archivos de configu- raci6n, el canal (channel), cl formateador (formatter) y el modo de activacién. Los canales (channel) son los objetos que trans: portan mensajes entre dominios de aplicaciones, procesos y computadoras, Definen el protocolo de comunicacisn y los end-points que el cliente Tabla 19 | Canales implementados en .NET Framework 2. 509 [earituco 4] | Windows Communication Foundation y el servidor usan para intercambiat mensajes, ‘Cuando un cliente hace una llamada aun obje- to remoto, dicha llamada es seralizada dentro de un mensaje, ste es enviado por un canal dliente y recibido por un canal servidor; enton- ces se deserializa y procesa, Los valores de re- tomno son transmitidos por el canal servidor y recibidos por cl canal cliente. El namespace ‘System, Runtime.Remoting.Channels contic- ine las clases que soportan y manejan canales, Los formateadores (formatter) son los obje: tos que gobiernan Ia forma en que se seriali- van y deserializan los abjetos antes de ser transmitidos y Inego de ser recibidos por los canales, respectivamente. La clase Binary. Formatter del namespace System.Runti- me.Serialization.Formatters.Binary s para serializar y deserializar objetos en for- ‘mato binatio (propietatio). La clase Soap- Formatter del namespace System.Runti- me Serialization.Formatters.Soap se em- plea para serializar y deserializar objetos en formato SOAP. un formatter por default e, incluso, pode- ‘mos configurarlos. También podemos crear nuestros propios canales y formateadores usa ada canal tiene asociado El modo de activacién determina si el cliente 0 el servidor controlan el tiempo de vida (tiempo total durante el cual un objeto perma nece activo en memoria) y el Ambito de los objetos remotos. Remoting soporta dos mo- dos de activacién para objetos de tipo MBR: la Activacin Cliente (referida como Activated) hace que el cliente cree Client-activated objects (CAOs) en cl servidor cuando llama a new 0 Activator.CreateInstance: y la Activa cién Servidor (ccferida como Well known) hace que el servidor cree Server-activated objects (SAOs) s6lo cuando se necesita, El objeto proxy se crea al llamar a Activator. GetObject, pero el objeto servidor correspon- diente no se crea hasta que el cliente invoca por primera vez un método sobre el proxy. A su vez, un SAO puede ser de tipo SingleCall © Singleton, Cuando se usan objetos Single- Calll, el servidor crea una nueva instancia del objeto remoto por cada llamada a un método hecha por un cliente, Cuando la Hamada se completa, marca el objeto para el garbage co ctor (recolector de basura). Cuando se usan objetos Singleton, una tinica instancia del ob- jeto es creada en el servidor para manejar to- das las lamadas de todos los clientes. | Formateadores por defecto on Formateador por defecto ese) Paes eee SoapFormarcer eet cote) Siete TepClionChanne! eins connote) Eien arte) Eien Peter) Pieces rete) Pees 510 Pees Be Integraci6n de WCF y MSMQ MSMQ permite la comunicacién entre aplicaciones que pueden permanecer fuera de linea en forma asincrénica. Las aplicaciones envian mensajes a colas (queue!) y Tos Teen en colas, de las que pueden climinarlos 0 no, MSMQ esta disponible en los sistemas operativos Windows NT, 2000, XP y 2003 como un componente adicional que se ejecuta como un servicio una vex ins- talado, Las colas de mensajes se mantienen cn algtin tipo de almacenamiento. Pueden usarse gurenes de MSMQ pata la co- municacién entre aplicaciones IV indows Communication Foundation (WCE), Esra capaci- dad hace que se pueda garantizar el envio de mensajes en forma independiente del tiempo de ejecucién de los dominios de aplicacion que los mandaa y seciben. Existie’ uaa dife- rencia de tiempo entre el momento en que uaa aplicacién (sender) eawia un mensaje y aquél en que otra (reaver) lo recibe. Este tiempo se denomina latencia. MSMQ imple- menta un protocolo nativo (natir) para teansferencias de queue a gneve, ‘También im- plementa un prorocolo basado en SOAP, la- mado SRMP (Sqp Reliable Messaging Protoco)y que se usa cuando en transferencias de guene a quete se emplea HTTP. SRMPS (Soup Refi ble Messaging Protoco? Secure) se utiliza cuando usamos HTTPS para las transferencias. La clase System,ServiceModel. NetMsmq- Binding es ¢l binding provisto por el frame- work para que dos end-points de WCE muniquen usando MSMQ. Fn un archivo de configuracién el elemento es . También podemos integrar aplicacio- nes Messque Quening (MSMQ) existentes con aplicaciones Windour Communication Foundation WCE) usando Message Quening Integration Binding para convertic mensajes MSMQ en mensajes WOR, y viceversa, Usando .NET, las aplicaciones MSMQ se consteuyen con las ela- ses proporcionadas por el espacio de nombres System. Messaging. El namespace System.ServiceModel. MsmqIntegration contiene clases que per miten la comunicacién entre aplicaciones MSMQ y WCE Bn particular, la clase MsmgIntegrationBinding permite comuni- car un end-point WC MSMQ (mapea mensajes MSMQ con mensa- jes WCF). En un archivo de configuracién el clemento es . EL MSMQ Queue Manager es implementado con una aplicacién como un servicio, y se ejecuta en back- ground en las compuradoras que envian y re- ciben mensajes. PUEDEN USARSE QUEUES DE MSMQ PARA LA COMUNICACION ENTRE APLICACIONES WCE ESTA CAPACIDAD HACE QUE SE PUEDA GARANTIZAR EL ENVIO DE MENSAJES EN FORMA INDEPENDIENTE DEL TIEMPO DE EJECUCION DE LOS DOMINIOS DE APLICACION QUE LOS MANDAN Y RECIBEN. SII ssssssen” | femmois¥ Windows Comrmunistion Foundation esa Ses = anes Seguridad en WCF Es esencial garantizar la seguridad de los mensajes entre clientes y servicios. Veremos como efectuar esta tarea. La seguridad en WCE esti dividida en tres re as funcionales: + Seguridad de transferencia + Control de acceso + Anditoria La seguridad de tansferencia debe asegurar- nos la integridad y la confidencialidad de los mensajes, como asf también la autenticacisn de identidades. Los modos de implementar seguridad de transferencia en WCF se deno- minan Transport, Message y Transport- WithMessageCredential. Fl modo Transport implementa seguridad a La seguridad de transferencia debe asegurarnos la integridad de los mensajes, asi como la autenticidad de las identidades. nivel de protocolo de transporte (por ejemplo, usando SSL sobre HTP). Si un mensaje ne~ cesita ira través de multiples puntos para al canzar su destino final, cada punto intermedio debe hacer un forward del mensaje sobre una nueva conexién SSL. (punto a punto). Fl modo Message implementa seguridad a nivel de mensaje SOAP mediante el uso de specificaciones como WS-Security. Toda la informacién relativa a la seguridad se encap- sula en el mensaje. La seguridad del mensaje se mantiene a través de cualquier cantidad de puntos intermedios entre el emisor origen y el destino final (final a final). Pueden ser fir- madas digitalmente o encriptadas sélo partes de un mensaje, en vez del mensaje completo. 1 facilita que distintos intermediarios puedan ver partes del mensaje. modo TransportWithMessageCreden- tial autentica el cliente usando seguridad a nivel de mensaje, Para autenticar el servicio, y asegurar la integridad y confidencialidad de Jos mensajes, se usa seguridad a nivel de | Aspectos por considerar sobre seguridad Pee Per ner ens Auutenticacion del cliente Sats eee ee ome RRR protocolo, Control de acceso se encarga de la autorizacion de los usuarios, y Auditoria se ocupa de grabar eventos de seguridad en el Los bindings son objetos usados log de eventos de Windows. para especificar los detalles de comunicacién requeridos para conectarnos a un end-point. Los bindings en WCF son objetos usados para especificar los detalles de comunicacién (co. mo protocolo de transporte o mecanismo de \_ seguridad) requeridos para conectarnos a un end-point WCF. Podemos crear nuestros pro- Din b AB New WsHtepBinatng() pios bindings (custom) 0 usar los provistos _b.Security.tiode = Securstysode Transport por el sistema (por ejemplo, System.Service- Model. WSHpBinding) Fl objeto retornado por la propiedad Security del binding también posce las propiedades Para configurar cl modo de seguridad utiliza- Message y Transport, que permiten determi- do, recuttimos a la propiedad Mode del obje- nar las configuraciones de seguridad a nivel de to retornado por la propiedad Security del mensaje y transporte, respectivamente. Por binding correspondiente. Veamos un ejemplo. ejemplo, la propiedad ClientCredentialType Seguridad a Nivel de Protocolo a] —— =) ——- aae),| LI Cliente Servicio WCF | Vemos cémo se aplica I proteecién a nivel de protocolo, ea er co Message Petree ro TransportWithMessageCredentil Seguridad a nivel de protocolo de transporte para integridad, confidencialidad eee ee eee a ee ee 513 de Transport para el binding WSHupBinding (por defecto, None) puede configurarse con alguno de los valores de la enumeracién HupClientCredentialType Basic, Certifica te, Digest, None, Ntlm 0 Windows) En cédigo, en Visual Basic: Din b As New WSHEEeBinding() b.Security.tlode = b.Security Transport .clientGredentisiType = HetpotientcredentiatType.mindors cur itylfode Transport Usando archivo de configuracién: “sit tpainding> [cariruco 4] | Windows Communication Foundation binding nane="Transportsecurity"> transport elient¢redentialtype = “windows” i> Por defecto, todos los bindings provistos por el sistema tienen habilitado algiin modo de seguridad, excepto System.ServiceModel. BasicHttpBinding (por defecto, Secu- tity. Mode tiene como valor el BasicHttp- SecurityMode.None). Seguridad a Nivel de Mensaje Servicio WCF | En este caso, la proteccién se apica a nivel de mensaje. | Modos de seguridad por defecto eps eae PeereT Te Nene cere cee ee =" or iene Pera ce ra eee ene NetTepBindin eee “Transport eee es es Renee nen co ee coe 514 [cariruto is} | Windows Workflow Foundation Windows Workflow Foundation Disefio e implementaciéon | 5 Contenidos En este capitulo aprenderemos sobre esta herramienta llamada Windows Workflow Foundation, que esté integrada en el nuevo Framework de Microsoft. Veremos cémo crear un workflow, implementarlo y las ventajas de su uso. Temas tratados Conceptos generales Arquitectura Servicios Runtime Creacién de workflows Compensacién de workflows www. reduserspremium.blogspot.comsar Windows Workflow Foundation Conoceremos este nuevo concepto que cada vez es mas popular dentro del mundo del desarrollo. ® Lee tke Urey Muchos de nuestros trabajos consisten en > Definicién resolver problemas de negocios de diversas Flujos de trabajo en Ia vida cotidiana actividades, Su complejidad dependerd de la > Herramientas que utilizaremos nawuraleza de la actividad. Diferentes flujos de trabajo ® Arquitectura ‘Aprenderemos en qué escenarios puede usarse Escenarios de usos Windows Workflow Foundation y para qué Libreria de clases plataformas se encuentra disponible. Repasaremos > Componentes su estructura de clases y sus componentes. Runtime Engine y Runtime Services (>) BT Ta Colo Aprenderemos a utilizar los servicios de tiempo Servicios de tareas programadas de ejecucién que nos brinda Windows Workflow > Servicios de persistencia Foundation, como asi también, para qué Servicios de monitoreos propésitos empleartos Servicios transaccionales ® Creacién de workflows Aprenderemos a utilizar los diferentes disefiadores > Reglas ‘que vienen con esta herramienta, y veremos cémo > Condiciones crear flujos de trabajo y extenderlos através de > Politicas actividades personalizadas. > Actividades personalizadas (>) COtoy tLe lo ( Mola ile Conoceremos, ademas, c6mo interconectar > Transacciones un flujo de trabajo con otro utilizando > Trabajando con workflows diferentes tecnologias.y aprenderemos a > Métodos y eventos utizar transacciones en ellos. Workflows y Servicios Web Windows Workflow Foundation Veremos de qué se trata exactamente y como implementarlo para llevar adelante nuestros desarrollos. Workflow es la automatizacién de un proceso de negocios, en forma completa o parcial, urante la cual los documentos, la informacién o kes tarcas se pasan de un patticipante a otto para ejecutar una accién, segtin un conjunto de reglas de procedimiento. La definicién precedente proviene de la organizacién Work/fow Management Coalition (WHC), que desarrolla estindares para proveer de interoperabilidad entre los sistemas de workflow y las aplicaciones, como asf también, entre diferentes sistemas de workflow. ‘También establece lo que es un Workflow Mana genet System (WMS), como un sistema que defi- re, crea y maneja la ejecucién de workflows a través del uso de software, corriendo en uno 0 mas motores de workflow, que pueden interpre- tar la definicién del proceso, interactuar con los participantes del workflow y, si se requiere, invo- car el uso de hersamientas de TI (tecnologgas de la informacién) y aplicaciones. Mucho de nuestro trabajo como desarrolla- dores consiste en resolver problemas de ne~ gocios de diversas actividades (bancarias, fi- nnancieras, manufactureras, etc). La compleji- dad de dichos procesos de negocios depen- deri de la naruraleza de la actividad. Mas alli de lo complejo que sea el problema, para Workflow Elemental FIGURA 00| |Vemos edmo seria el easo de un worifiow elemental, emium.blogspot. .com.ar 517 resolverlo, tenemos que dividirlo en tareas pequeiias, comprensibles y manejables, cuya ejecucién deberi producirse en un orden de- terminado y en conformidad con ciertas #e- glas. La implementacién de la solucién puede hacerse con un lenguaje de propésito general (como C# o Visual Basie). Nuesteas lineas de codigo especificarin qué hacer, en qué se- cuencia, y tomatin decisiones basadas en va- lores de variables, eventos y el estado de la aplicacién. En forma consciente 0 n0, hemos descrito un workflow. La mayorla de aues- tros proyectos para implementar un proceso de negocios cuenta con easos de uso y/o diagramas UML; es decir, con modelos que permiten visualizar el proceso. También sole- mos usar diagramas informales en el sentido de que no tienen una semantics formalmente definida. Peto lo que necesitamos son herra- mientas grificas, de modo que, mientras mo- delamos el workflow, también se esté cons- truyendo la aplicacién. Consideremos el siguiente ejemplo: ‘Una persona coneurre a un baneo para solic tar un crédito, Un oficial de negocios del baneo chequea su historia crediticio. Basado en dicho historial, el oficial ofrece diferentes lineas de crédito posibles o infor- ma ala persona que no califica pata obte- ner un crédito, Si califca, a persona elige una de las opciones. Bl oficial de negocios inicia cl expediente y so- Ticita a la persona determinada documentacién. El oficial de negocios preaprueba el expediente ylo envia al oficial de riesgo creditici, Ei oficial de riesgo crediticio aprueba o recha- 2a €\ crédito basado en informacién adicional sobre el solicitante y el sistema financiero. Siel crédito es aprobado, el dinero se transfiere ala cuenta que la persona indique. i el crédito es rechazado, la persona es infor- mada de tal suceso. Recepcién de Muestras en Laboratorio VWww.et FIGURA 002 | Ejemplo de un workliow de personas m.blogspot.com.ar Como vemos, el control y una parte de Ta ejecu- i6n del proceso son realizados por personas. El oficial de negocios obtendri el historial crediticio de la persona con el banco basindose en un siste- ‘ma de informacién interno, Pero requeriri de da- tos 0 eventos que llegan desde el exterior pata co- nocer el historia crediticio con otras entidades; esto involuera la comunicacién asinerénica con ottos sistemas. En ocasiones, debemos esperar a «que se produzcan datos o eventos para poder continuar fealizando un trabajo. sto ocurre ‘cuando pedimos a la persona documentacién que, posiblemente, no tenga consigo. Este hecho hhace que muestro flujo de trabajo quede inactivo minitas se esperan esos datos, lo cual puede de~ mandar horas, dias o, incluso, meses, Por lo tanto, nuestro flujo de trabajo deberi ser persistido has- ta el momento en que se produzcan los datos o eventos necesatios para continuat, Una vex per- sistida Ia instancia de flujo de trabajo, deberemos removerla de memoria, Al recibir los datos, tene ‘mos que restaurarla y continua la ejecucién. Qué pasa si el proceso de negocins es modifica- do antes de que las solicitudes pendientes termi- rnen de ser procesadas? Podemos resolver todo el proceso usando un lenguaje de propésito general (como C# 0 Visual Basic), pero tendremos que escribir mucho cédigo de soporte para la ejecu- én del workflow: Quisiéramos especificar cl workflow de forma declarativa ~si es posible, gri- ficamente- y contar con un motor de workflow ‘que interprete dicha definicidn e implemente los pasos necesatios para completar a tarea, Los componentes de workflow son usados para controlar la secuencia de distintas funciones. Los Workflow Management Systems (WMS) pueden ser auténomos o embebidos. Los primeros son aplicaciones que proven de la funcionalidad de -workflow sin necesidad de tener otra aplicacion, excepcién hecha de un sistema de manejo de ba- ses de datos (por ejemplo, SQL Server) y un siste- ‘ma de cola de mensajes (como MSMQ). Los se- gundos son funcionales slo si se los usa dentro del contexto de otra aplicacién; por ejemplo, un sistema ERP (Enterprise Ressurer Planning), Bn este caso, los eomponentes de workflow son usados para controlar la secuencia de distintas functones dela aplicacidn, asf como para manejar colas de mensajes, notificaciones, eventos y excepciones, Microsoft Windows Werkffow Fondation (WF) fie creado para cubrir este tipo de sequerimientos co- mo un componente micleo del. NET Framework 3.0, Hs declarativo, visual y flexible, El modelo de programacién que peopone separa lo que tene- ‘mos que hacer (nuestra légica de negocios) del momento en que debe hacerse (mestro Fiujo de teabajo). Esto permite modificar el modelo del ‘workflow sin afectar la Ibgica de negocios. Al des- arrollat, definiremos el modelo de nuestro works flow como un mapa de actividades, y lo compila~ remos como un assembly NET que seri ejecuta- do por el runtime de workflow y el Coman ~o AMAA p EST logepet.com.ar mentados, As el desarrollo de software gené- rico para el manejo de procesos de negocios, Hamados Warkjinw Management Systems (WEMS), cobra importancia, La idea de contar con esc tipo de herramientas genéricas se re- monta a los aos '70 con precursores como Skip Ellis y su grupo de trabajo en Xerox. nas y de sistemas, Los workflows de personas implican coordinar procesos de negocio que in- volucran Ia interaccién de individuos. Disefiar workflows de este tipo eficaces requiere com- prender en deralle los requisitos téenicos de los pasos individuales del proceso, asi como de la forma en que los usuarios finales realizan esos 519 pasos. De dicha comprensién dependesi el desarrollo de una solucién acertada. Un ejem- plo tipico es el de un laboratorio de andliss quimicos. Fn este caso, las personas (los ana- listas)interactian entre si, con software y con maquinas especializadas. Entre otros detall Ja preparacisn, la registraci6n y el almacena- ‘miento de las muestras ingresadas en el labo- ratorio dependerin de los tipos de anilisis que se deban realizar, de las maquinas que se utili cen y de las téenicas de determinacisn em- pleads, Para soportar la comunicacién entre personas y sistemas, los workflows de perso- ‘nas tienen que brindar funciones bisicas de asignacién de tateas, manejo de identidades, notificaciones, seguimiento e interoperabilidad con sistemas de gerenciamiento del negocio- proceso (lusineseprocesr management o BPM). La pregunta que surge es si los Workflow ‘Management Systems y los BPM son To mis- mo. En el sentido en que ambos se centran en el manejo del proceso, si. Tradicional- mente, se consideran como BPM los produc tos optimizados para los procesos que son au- tométicos, que no implican la interaccidn hu- mana. Fs decir, workflows de sistemas. “También suele encontrarse que estos produc tos se denominan de Integracin de Aplicacio- nes Empresariales (Enterprise Application Integra. tion 0 EAD), siendo un ejemplo Microsoft BizTalk. Los productos de tipo Workflow Ma- ‘agement Systems se consideran optimizados para controlar la incertidumbre y el reteaso asociados ala interaccién de ls personas. En el mercado también se habla de BPM como el tipo de sistemas que cubre ambos workflows “de personas y de sistemas, y se los denomi- ‘na BPMS (BPM Suite). Microsoft usa la palabra workflow en su Windows Workslow Foundation (WE) para deseri- bit una tecnologia central que permite cons- truir workflows. Un workflow de sistemas o tun workflow de personas desetihe formas di- ferentes de usar la misma tecnologta. Workflow de Sistema Equipo A www.rea FIGUIRA 003 | Ejemplo de un workflow de sistema. hium.blogspot.com.ar Arquitectura componentes WWF otorga a los desarrollad genérico para construir flujos de trabajo. Windows Workflow Foundation puede ser usa- do en distintas escenatios para coordinas la interaccién entre aplicaciones, personas o am- bos. Bjemplos de ello son el manejo del ciclo de vida de documentos dentro del contexsto de la certificacién de una norma en una empresa (Co- mo la ISO}; el desarrollo de un sistema BPM; 0 el workflow de una aplicacién de compras ¢ in- ventario que requiera aprobacién de proveedo- res, presupuestos, requerimientos de compra y Grdenes de compra. WF no es una aplicacion de workflow para usuatios finales Windows Workflow Foundation soporta los modelos de workflow secuencial (sequential) y miquina de estado (ate machine). disenador de Windows Workflow Foundation disponible para Visual Stadio 2005/2008 (en 2005, a tra- ‘vés de la instalacién de las extensiones para WWE) provee a los desarrolladores de un en- torno de trabajo altamente productivo. Pode- FIGURA 004 | Cadro de ore ee a —— didlogo Nuevo am. ase ae vcore = Proyecto, |}) Windows ‘moty Woon Paes Bseqveril Wotton Console Appt. envio sede |] Pee Bepcctwecioy ——Bacaymaundwegnevcouan ort scwlintecweer wy ‘RBar aay ey 2008. ofice ‘lasek Database bad Feporting Dsearch Onine Templates | neta | Terre ‘An emp rot for cesing 2 woo (NET Famever 30) | weww.reduserspremium.blogspot.com.a Y de WWF lores un motor de workflow mos construir workflows geificamente con cl diseiador, usando un dialecto XML. especifico, cédigo cn lenguajes NET 0 una combinacién de todo, Finalmente, se compila en un assembly .NE'T estindar, Una vez instaladas las extensiones, dispondremos del tipo de pro- yecto Workflow con varias plantillas, como se muestra en la Figura 4. Las plantillas Sequential Workflow Console Application y State Machine Workflow Console Application brindan ¢l modelo de workflow para dos tipos de flujo que pueden crearse: secuencial (sequential) y maquina de estado (stale maching). ‘Veamos 4 continuacién algunos elementos y caracteristicas de WWF: ~ Libreria de clases: el NET Framework 3.0 ‘nos provee de las clases base e interfaces nece- sarias para construir aplicaciones de workflow, 521 [earituco 15} | Windows Workflow Foundation organizadas en varios namespaces System Work- Las plantillas Sequential flowcios nls ve presen en’ TSA Workflow Console Application _aabeeaiatcinenoae Workflow Foundation incluye un conjunto de basicas: Windows y State Machine Workflow actividades pata el diseiio de workflows deno- Console Application brindan minado Base Activity Library (BAL). El conjun- to de clases que las definen esta incluido en el el modelo para dos tipos namespace System. Workflow.Activities, y de flujo: secuencial y maquina brindan funcionalidades tales como control de desestado.. flujo, condiciones, manejo de eventos, manejo de estados, y comunicaciéa con aplicaciones Tabla | | System.Workflow namespaces 522 servicios. Estin disponibles en el Toolbox del disefiador en Visual Studio. - Motor de tiempo de ejecucién (Runtime Engine): el motor de runtime se encarga de Ja ejecucién de los workflows y del manejo de su estado a lo largo de todo su ciclo de vida. Prove un entorno de ejecucién para Jos workflows. No es una aplicacién auto- contenida, y esti representado por la clase WorkflowRuntime del namespace System.Workflow.Runtime. Debemos pro- porcionar una aplicacién host que seri res- ponsable de la ereacién de una instancia de la clase WorkflowRuntime, y obtendremos la ejecucién in-process del motor dentro del host. Los tipos de aplicaciones que pueden actuar como host son: + Aplicaciones Windows de consola + Servicios Windows (por ejemplo, Windows SharePoint Services 3.()) *+ Aplicaciones Windows Forms (WinForms) + Aplicaciones WPF + Aplicaciones Web ASPNET + Servicios Web ASPNET - Servicios de tiempo de ejecucién (Runtime Services): el motor de runtime extiende su funcionalidad mediante el uso de servicios ex- ternos que cumplen propésitos determinados. Estos servicios son instancias de clases que se crean y registran con el motor de runtime des- de la aplicacién host. Windows Workflow Foundation otorga cuatro servicios, denomina- dos core, que son: + Scheduling + CommitWorkBatch + Persistence + Tracking Los servicios denominados core sélo pueden agregarse al motor de ejecucién (método Add- Service de la clase WorkflowRuntime) antes de que éste atranque (método StartRuntime de la clase WorkflowRuntime). Workflow de sistema logspot.com.ar FIGURA 005 |Vemos cdmo trabaja un workflow de sistema, 523 Definicién de actividades Una actividad es el bloque basico de cons- truccién de un workflow en WE Todas las, actividades derivan de la clase base System, Workflow.ComponentModel. Activity. WE nos provee de un conjunto de actividades para cl diseho de workflows de- nominado Base Activity Library (BAL). BL conjunto de clases que las definen esta in- dluido en el namespace System.Work- flow.Activities. El toolbox del Workflow Designer en Visual Studio 2005 contiene iconos para las actividades en la BAL. Las actividades que aparecen en el toolbox va- rian segtin el tipo de workflow que estemos modelando: secuencial 0 de maquina de es- tado, Las actividades se clasifican en sim- ples (bisicas) y compuestas (compasi). Simples son aquellas cuya légica y ejecu- cién se encapsulan dentro del e6digo de la actividad, como ejecutar una sentencia SQL. 1 vidades (denominadas hijas) y dependen de Ia ejecucidn de todas ellas para alcanzar su propésito funcional. compuestas contienen otras acti- Podemos crear nuestras propias activida- des, tanto basicas como compuestas. Para hacerlo, creamos un proyecto de tipo Work- flow en Visual Studio usando el template Workflow Activity Library. Obtenemos tuna actividad por default (representada por los archivos Activity.vb y Activity Desig. nervb si usamos Visual Basic), cuya clase base es System. Workflow.Activities. SequenceActivity. Fste tipo de actividad compuesta reusa el control de ejecucién de Ia clase hase SequenceActiviry (la cual deri- va de CompositeActivity). Si queremos te- ner mayor control sobre la ejecucisn de las actividades hijas, nos conviene derivar m tra actividad compuesta de la clase base CompositeActivity y sobrescribie su méto- do Execute. Este método recibe como pa- rimetzo un objeto de tipo System.Work- flow.ComponentModel ActivityExecu- tionContext cuando es invocado por el motor de runtime para ejecutar una activ dad, Un ActivityExecutionContext (AEC) representa cl entorno de ejecucién de una actividad. Se crea implicitamente un AEC cuando la aplicacién host invoca el método WorkflowInstance.Start. Para cambiar la clase base de Ia cual derivaremos muestra actividad, usamos la Ventana de Propieda des, En ella seleccionamos la propiedad Base Class y hacemos clic en el botén ‘Showing types which derive from Activity. Type Name: [System Workflow. Component Model. Activity [Type advanced || scirron roma igen = (ry quate | || 208 Referenced Assemblies “activity ‘System, Workflow. Component Model. Activity | || ca System. Wortlaw etvties | 5 conomeacyey Se Can SO FIGURA 005 | Cuadro de dislogo para buscar y seleccionar un tipo en NET. 524 “12” asociado, Aparece el cuadro de diflogo. Browse and Select a .NET Type, que nos permite seleccionar una elase base: El cédigo por defecto en el archivo ActivityL.vb es similar al siguiente Public Class Activity! Inherits systen.Workflow Activities. Sequencerctivity End Class Este se modificari de la siguiente manera si cam- biamos a una clase base CompositeActivity: Public Class Aetivityt Inherits systen.Ntorktlow.Componenttiodel. Conpositesctivity End Class Propiedades de actividades La clase Activity deriva de System. Workflow.ComponentModel.Dependency Object, de modo que pueden definirse pro- piedades estindar del CLR o propiedades de dependencia (clase System.Workflow.Com- ponentModel.DependeneyProperty) al cre- ar una actividad, Hay dos tipos de propieda- des de dependencia en las actividades de WP: de metadatos y de instancia Ta clase DependencyObject participa en el sis- tema de dependencia de propiedades (Dependency Property Syste), cuya fanci6n primaria es compu- tar los valores de las propiedades y otorgat un sistema de nosificaciin sobre el cambio de los valores. En este contexto, la clase Depen una funcionalidad importante en WE deno- minada Activity binding. Como su nom- bre lo indica, nos permite hacer el binding de una propiedad en una actividad, con una propiedad en otra actividad, 0 con una propiedad en el workflow. Esto hace que el valor de la propiedad se propague en for ma automitica. De lo contratio, deberia- mos progtamar todas las asignaciones de valores necesarias Para usar propicdades de dependencia en huestras actividades seguimos un patron, Agregamos una instancia de Dependency- Property que sea Public Shared (Public- Static en C#) para manejar la propiedad en todas las instancias de la actividad. Luego, agtegamos una propiedad estindat con Get y Set. En el Get usamos el método Get- ‘Value definido en ta clase DependencyOb- ject, para obtener el valor almacenado de la propiedad. Fin el Set usamos el método Set- Value definido en la clase DependencyOb- ject para almacenar el valor de la propiedad. Un code snippet nos ayuda a crear ficil- mente propiedades de dependencia poses serspremium.blogspot.comm.a Property petmite la registra Wi eouserspremium.blogspot.com.ar dades de dependencia dentro del sistema de de- pendencia de propiedades a través del método Register. Fl valor de una propiedad de depen- dencia se almacena en un repositorio central Las propiedades de dependencia nos ofrecen FIGURA 007 | Code snippet en acelén. 525 [cariruco 1s} | Windows Workflow Foundation Introduccién a los disefiadores de workflows Para disefiar workflows en Visual Studio 2005 debemos instalar las extensiones para W dows Workflow Foundation (disponibles para su descarga en el sitio de Microsoft); en Visual Studio 2008, ya vienen instaladas por defecto. Tendremos disponible el tipo de proyecto Workflow con los templates que se presentan a Ia Tabla 3, FIGURA 008 | Agregar una actividad Code. Modos de autoria Windows Workflow Foundation soporta los si- guientes modos de autoria para la implementa cidn de workflows: + Code-only + Code-separation + No-code El modo code-only es el usado por default en el entorno de desarrollo de Visual Studio, En este modelo, la definicién del workflow se hace por completo en un Ienguaje como C# 0 Visual Basic NET usando el modelo de objetos de WE. Por «jemplo, vamos a crear un proyecto de tipo Workflow con el template Sequential Workflow Console Application usando Visual Basic. En este caso, se generan dos archivos; Workflowl.vb contiene por default el siguiente c6digo: vB: Public class Workflow! Inherits SequentialNorktlowsctivity End class En este archivo se agrega cédigo para manejo de eventos y légica de negocios, | Templates para el proyecto Workflow a Pred acl ed ree es (Crea un proyecto para construir workflows que contiene un workflow secueneial por r ales sin desarrollar una apli Ca on 0 libreria de cla 526 ‘También vemos en el proyecto el archivo Workflow1.Designer.vb, que contiene el mo- delo de workflow mantenido por el disenador. Luego, agregamos desde la toolbox una activi- dad Code en nuestro workflow, como se ve en Ja Figura 9, El disefiador insertara cédigo en Work- flowlDesigner.vb para reflejar este cambio en el diseito, $i hacemos doble clic sobre la ac- tividad, se crea el cddigo en Workflow!.vb: Private Sub codedctivity!_ Executecode ByVal sender As System.Odject, Byval © AS System EventArgs) End sub Y este otto en Workflow! Designer.vb: Adsiiandler le.codeAetivityt executecode, Address0f Me. codeActivity!_Executecode Esto demuestra el uso del evento Execute Code, que ocurre cuando la actividad Code se inicia. A continuacién, agregamos el siguiente cédigo en el método manejador del evento y ejecutamos la aplicacién. VB: ‘consoe.Foregroundcoler = consoLecolor.Green Console.weiteLine( ‘console.ReadLine() onsole.Resetcolor() jola tundo!") Los archivos mencionados definen la clase Workflowl (observar el uso de la palabra clave partial cn cl archivo Workflow! Designeryb).. Al construir (build) la solucién, cl compilador — genera el tipo Workflow! combinando el con- tenido de ambos archivos. Cabe norar que la clase Workflow! deriva de la clase SequentialWorkflow Activity. Esta diltima deriva de la clase SequenceActivity, que, a su deriva de Composite Activity, que deriva de Activity. Asi es que los workflows en si mismos estén implementados como actividades. Otro modo de autoria en WE se denomina code-separation 0 code-beside, y resultaré familiar para quienes desarrollan con este caso, el modelado del SPNET. workflow seré mantenido por el diss un archivo XML (con extensién .xoml) que declara el workflow usando XAML (Extensible Application Markup Language). SAML (markup) hos permite especificar instancias de objetos como elementos XML, y las propiedades de dichos objetos, como attibutos XML. Un se~ gundo archivo, referido como code-beside, se crea para contener cédigo de manejo de even- tos y légica de negocios. Para usar este modo, ccreamos un workflow empleando el template Sequential Workflow (with code separa- tion) del cuadso de dislogo Add New Item. ador en Se generan dos archivos Workflow2.xoml.vb contiene el siguiente c6- digo (el mismo que Workflow1.vb): Public Clase work#lov2 Inherits Sequentialiorktiowactivity End Claes Y Workflow2.xoml declara el modelo como: schemas. El atributo x:Class apunta a la clase definida, en Workflow2.xoml.vb. Si usando el disetia- dor, agregamos una actividad Code y hacemos doble clic sobre ella, en Workflow2.xoml se agrega este elemento: codenotivity!” En este caso, al construir la solucién, el compi- Jador interpreta el archivo xoml y genera en for- ‘ma temporal una clase parcial en Visual Basi. Esta es combinada con el archivo code-beside xomlvb para generar el tipo Work low2, La tinica linea de eddigo que tenemos que cambiar de la aplicacién host es la siguiente: workflovinstance = workfLouiuntima.Crasteork Flon(GotType(Work#10"2)} Ambos modos de autoria nos oftecen facilidad de uso en un entorno eficiente y con el cual los desarrolldores NET ya estin familiariza- dos. E] modo code-separation es mas flexible, Fl tercer modo de autoria posible se deno- mina no-code (0 markup-only). Bn este so, no hay ningtin archivo code-beside, y to- FIGURA 010 | Archivos de Ia Salucién Ejemplo, 528 seysprenmiiaiiaal da la definicién del workflow se realiza utli- vando XAML. No hay ningin template en Vi- sual Studio que nos permita trabajar en este modo. Lo que si podemos utilizar para crear nuestros archivos XAML es el editor XML in- cluido en Visual Studio. ‘Vamos a agregar un nuevo item de tipo archivo XML en nuestra solucién, nombrindolo Work- flow3.xoml. Si copiamos en este archivo el con tenido de Workflow2.xoml (cambiando el nombre del workflow), podeemos ver en el di- sefador el mismo modelo, Como queremos im- plementar el workflow completamente en XAML, pondtemos el eédigo Visual Basie en un bloque CDATA dentro de un elemento xcCode, como se muestra a continuacién: XAML: 00> microsoft.con/ <1[ODATAL Private Sub codosotivity1_exeeutecode (ByVal sender As System.object, Byval & ‘As System. EventArgs) Console. Forearound¢olor « Consolecolor.Green Conso1e egSp Ss om.ar Console. Resetcolor() End Sub ie ee) Etsiehs) cena INTENSIVOS Los temas mas importantes del universo de la tecnologia desarrollados con la mayor profundidad y con un desplieque visual de alto impacto: Explicaciones tedricas, procedimientos paso a paso, videotutoriales, infografias y muchos recursos mas. ee ee eee ety BIR eke melu see seas Men eas eae aise Unie merie she PR LCR ACL CIS Iai me TRC » 25Fasciculos Curso para dominar las principales herramientas del paquete Adobe ree eae eS Te See ee eee eeu ae i Eee eee ee a Geese Moree as eye ee eee nee mca eect eae lad Bele) ere en ec See ea CO ea ca Puce Ee ay EM es a oe EUS RO RUT be Ler m omceara _ fe usershop@redusers.com © +54 (011) 4110-8700 @® usershop.redusers.com.ar Se ene CP] Aagentina $2.20 " Microsoft Curso tedrico y practico de programacién pesarrollagar ’ my W Con toda la potencia @| IS de Visual Basic .NET y C# on La mejor forma de aprender ufu.f-f.h. a programar desde cero Dear eee A Vat ate Coy VS Communication Foundation Service, Data Ae a (oyalar-icws Binding / MSMQ: Conceptos e\integraciénséA Web-Service Enhancements / Remoting

También podría gustarte