Una primera mirada a WCF & WF en el .NET Framework 3.5
April 13, 2007 — emoritoHola muchachos!!!, estuve investigando acerca de que trae de nuevo WCF y WF en el .NET Framework 3.5. En base a eso desarrolle un simple ejemplo con el Orcas March CTP, el conocidisimo HelloWorld. En este post voy a tratar de darles una primera mirada a WCF & WF en el .NET Framework 3.5 (a.k.a Silver) con este sencillo ejemplo.
Estos son los pasos para desarrollar la aplicacion de ejemplo, HelloWorld:
- Crear un proyecto WCF Service Library.
- Este es el project template para hostear el servicio WCF en la aplicacion WCF Service Host, esta hostea todos los servicios que se configuren en el App.config del servicio.
- Este es el service contract:
using System; using System.Collections.Generic; using System.Text; using System.ServiceModel; namespace HelloWorldService { [ServiceContract()] public interface IHelloService { [OperationContract()] string GetHelloWorld(); } }
- y esta la implementacion del servicio:
using System; using System.Collections.Generic; using System.Text; namespace HelloWorldService { public class HelloService : IHelloService { #region IHello Members public string GetHelloWorld() { return "Hello, World!"; } #endregion } }
- Crear un proyecto Sequential Workflow Console Application.
- Este proyecto es el cliente que contiene el Sequential Workflow, HelloWorldWorkflow.

- Este proyecto es el cliente que contiene el Sequential Workflow, HelloWorldWorkflow.
- Crear el App.Config:
<?xml version="1.0" encoding="utf-8"?> <configuration> <system.serviceModel> <client> <endpoint address="http://localhost:8008/hello" binding="wsHttpBinding" bindingConfiguration="" contract="HelloWorldService.IHelloService" name="EndPointHelloWorld" /> </client> </system.serviceModel> </configuration>
- Agregar una SendActivity al HelloWorldWorkflow.
- SendActivity se utiliza para enviar y para recibir un mensaje a traves de un endpoint de WCF. Su uso es bastante directo.
- Agreguen una SendActivity al HelloWorldWorkflow y denle una mirada a las Propiedades de esta activity.
- Primero seteamos la propiedad ServiceOperationInfo. Para ello le damos click sobre las ellipsis (…) y se abre la ventana Choose Operation. Presionamos sobre Import para importar el service contract HelloWorldService.IHelloService.
- Seleccionamos el metodo GetHelloWorld para terminar de setear la propiedad ServiceOperationInfo.
- Luego de setear la propiedad ServiceOperationInfo, aparecera la propiedad Return, esta es una propiedad Binding y debemos setearla con un Dependency Property. Para ello le damos click sobre las ellipsis (…) y seleccionamos Bind to new member en la ventana que se abre. Aca creamos una nueva dependency property, a la cual llamamos Answer.
- Por ultimo seteamos la propiedad EndPoint, utilizando los endpoints que configuramos en el App.config.
- ConfigurationName: EndPointHelloWorld
- OwnerActivityName: EndPointHelloWorld
- Primero seteamos la propiedad ServiceOperationInfo. Para ello le damos click sobre las ellipsis (…) y se abre la ventana Choose Operation. Presionamos sobre Import para importar el service contract HelloWorldService.IHelloService.
- Finalmente, para mostrar los resultados, agregamos un Code activity al HelloWorldWorkflow. Hacemos doble click sobre la Code activity y pegamos el siguiente codigo:
private void codeActivity1_ExecuteCode(object sender, EventArgs e) { Console.WriteLine(Answer); Console.Read(); }
- Para terminar con este ejemplo, necesitamos resolver algunos problemas que tiene Orcas:
- WF Project templates tiene mal seteado la version del framework; Esto genera, que al intentar utilizar assemblies mayores que 3.0.0.0, el proyecto falle.
- Solution: click derecho sobre el proyecto, seleccionamos properties, y cambiamos la version del framework a 3.5.0.0
- Un ServiceHost no lee las settings porque el App.config no se copia a la carpeta Bin, (solamente sobre Windows Server 2003): Esto genera que al correr la aplicacion, nos tire la siguiente exception "no application endpoints can be found"
- Solution: agregar el siguiente Post Build Event "copy “$(ProjectDir)\app.config” $(TargetName).config "
- WF Project templates tiene mal seteado la version del framework; Esto genera, que al intentar utilizar assemblies mayores que 3.0.0.0, el proyecto falle.
Bueno, esta fue una primera mirada a WCF & WF en el .NET Framework 3.5. Espero que les haya gustado
Aca les dejo el codigo.