Bitácora del Desarrollador: WCF
Mostrando las entradas con la etiqueta WCF. Mostrar todas las entradas
Mostrando las entradas con la etiqueta WCF. Mostrar todas las entradas

sábado, 8 de mayo de 2010

Como obtener la IP del cliente en WCF 3.5

  1. Private Function GetIP() As String
  2.     Dim context As OperationContext
  3.     context = OperationContext.Current
  4.     Dim messageProperties As MessageProperties = context.IncomingMessageProperties
  5.     Dim endpointProperty As RemoteEndpointMessageProperty
  6.     endpointProperty = messageProperties(RemoteEndpointMessageProperty.Name)
  7.  
  8.     Return endpointProperty.Address
  9.  
  10. End Function

viernes, 6 de junio de 2008

Reducir tiempos de compilación en VS.NET

Cansado de esperar que Visual Studio termine de compilar para poder seguir trabajando, decidimos comenzar a compilar desde linea de comando nuestros proyectos.

Sí, aunque a muchos desarrolladores hoy les parezca cavernicola, es increíble el tiempo que uno ahorra. No solo complia más rapido, sino que tambien VS queda libre para seguir trabajando.
Claro que recomiendo compilar desde la linea de comando para cuando estés trabajando con varios proyectos con muchas clases.

Para compilar puedes hacerte un simple batch (.bat) con las lineas de comando que VS escribe en la ventana de Output al momento de hacer un Rebuild sobre tus proyectos o solución.

Nuevamente; vale la pena perderse 15 minutos escribiendo el archivo batch.

Si no tienes idea de como empezar, te dejo algunos enlaces que te pueden ayudar a hacer tu batch, pero recuerda que es mucho más fácil copiar el resultado de la ventana Output en la vista de Build;
[Creating a Visual Basic application from the Command Line]
[Generar mediante la línea de comandos]
[Comandos Batch]

jueves, 22 de mayo de 2008

Introducción a WCF

Hoy nos toco hacer una introducción al desarrollo de aplicaciones distribuidas con Windows Communication Foundation.
El objetivo de esta presentación era introducir a los desarrolladores a las principales características de WCF.

Pueden descargar el material utilizado con notas extras, y la pequeña demo utilizada para ilustrar lo hablado.

lunes, 15 de octubre de 2007

Manejando servicios polimórficos en WCF en VS.NET 2008

Resultaba increíble que WCF manejara una solución tan rebuscada para soportar Polimorfismo en los servicios -en la versión de VS.NET 2005-, siendo que polimorfismo es una de las características más importantes de la Programación Orientada a Objetos.

Podemos leer en el post de Augusto Ruiz como en VS 2005 se configura un servicio para que soporte polimorfismo mediante la configuración del KnownTypes en el web.config

Por suerte VS.NET 2008 implementa una solución más adecuada y cómoda para el programador.
Para configurar los Known Types en VS.NET 2008 se indica directamente los tipos que debe soportar en el behavior del DataContract en cuestión, y con eso es suficiente.

Más Info. [Data Contract Known Types]

miércoles, 31 de enero de 2007

WebCast WCF

El día Lunes 05 de febrero, a la hora 17:00 pm (GMT -3:00) el equipo de MSDN presentará un WebCast sobre las nuevas posibilidades de desarrollo de aplicaciones distribuidas con la tecnología Windows Communication Fundation.

Recomendable para todos los que estén iniciando en WCF o estén evaluando la posibilidad de desarrollar utilizando el framework 3.0 -seguramente sea algo introductorio con ejemplos simples.-

[WCF WebCast]

lunes, 29 de enero de 2007

Host WCF en IIS

He visto que muchos programadores buscan como hostear un servicio WCF en IIS, por lo recomiendo leer el artículo How to: Host a WCF Service in IIS, donde explica paso a paso como crear un servicio hosteado en IIS.
Recordemos que utilizar IIS como host de nuestros servicios significa aprovechar todas las funcionalidades beneficiosas de IIS, como ser el recycle pool, monitoreo, etc. De esta manera no tendremos que programar dichas funcionalidades.

[How to: Host a WCF Service in IIS]

martes, 23 de enero de 2007

Web Service Software Factory para WCF

Está disponible la segunda versión de Web Service Software Factory de patterns & practices.
Se trata de una colección de herramientas, patrones y ejemplos especialmente para desarrollar Web Services con VS.NET 2005 y WCF.

Entre varias cosas, encontraras ayuda para aplicar seguridad (X.509 y Kerberos), crear service interfaces, messages y data contract.

Sin duda mejorará la calidad y la productividad en el desarrollo de Servicios en WCF.

[http://msdn2.microsoft.com/en-us/library/aa480534.aspx]

sábado, 20 de enero de 2007

Ejemplo de Implementación WCF

Para todos aquellos que buscan un ejemplo simples y completo de implementación de la tecnología WCF (Windows Communication Foundation), recomiendo vean este excelente ejemplo.

Este caso es un servidor para Chat sobre TCP, donde el servidor de chat es un aplicación de consola y el cliente un WinForm convencional.
Puedes ver ejemplos de implementación y configuración de SessionMode, CallBack Contract y Duplex NetTcpBinding.

[Ir a WCF Chat room client and server]
[WCF WPF Chat]

viernes, 8 de diciembre de 2006

Implementando Duplex Contract

Creo que un servicio muy interesante, en el que vale la pena investigar, son los realizados con un duplex contract. Estos contratos permiten por ejemplo, que el servicio invoque una método de callback al cliente, para informar que una operación ha terminado.

Los Binding disponibles para Duplex Contract son; WSDualHttpBinding, NetTcpBinding, NetNamedPipeBinding, y NetPeerTcpBinding.

Para implementar un Servicio Duplex Contract , es necesario definir el Service Contract y una interface para el CallBack.
El Service Contract se implementa de forma tradicional y usamos un CallBackContract pasado por parametro para referenciar a ICallBack.

[ServiceContract(CallbackContract = typeof(ISomeCallbackContract))]
interface IMyDuplexContract


Puedes ver un ejemplo de implementación Consume Services with a Duplex Contract

Otro ejemplo muy interesante es el Salón de Chat
que implementa contratos duplex utilizando NetTcpBinding.

miércoles, 6 de diciembre de 2006

Hosting WCF

Cuando hablamos de Hosting en WCF, nos referimos al entorno en el que se crea y expone el servicio y la forma en que se controla su tiempo de vida.
WCF es flexible porque sus servicios pueden ser hosteados en diferentes tipos de aplicaciones.

Lo escenarios comunes de hosting en WCF son;

Internet Information Server: Los servicios hosteados en IIS tienen grandes ventajas cuando se hace sobre HTTP.
En este ambiente reutilizamos los tiempos de vida, recycle de pool, etc.
Los servicios se pueden funcionar dentro de IIS creando un archivo de .svc

WAS (Windows Activation Server): Es un nuevo mecanismo de activación disponible para IIS 7.0
Con WAS podemos usar HTTP, NET.TCP, NET.PIPE, NET.MSMQ

Self-hosting: El hosting se programa mediante código. Por ejemplo Aplicaciones de Consola, WinForm, WPF.
El desarrollador crea una clase que implementa la interfaz del Contrato del servicio WCF, y especifica las opciones de binding en el archivo de configuración.
En el código se usa una instancia a la clase System.ServiceModel.ServiceHost, de modo que el servicio esté disponible en un URI (unifor resource identifier) particular.

//Ejemplo.
ServiceHost myHost = new ServiceHost(typeof(MyService), baseAddress);

myHost.Open();
Console.WriteLine("Press Enter to stop the service");
Console.ReadLine();
myHost.Close();

Managed Windows Service: Puede hostearse el servicio WCF, como un Windows Service. bajo el control de Windows Service Control Manager (SCM).
Para que el servicio esté disponible en el entorno de SCM, es necesario heredar de la clase System.ServiceProcess.ServiceBase

sábado, 2 de diciembre de 2006

WCF Contracts

Una de las ideas fundamentales en Windows Communication Fundation son los contratos (son parte del ABC - Address, Binding, Contract).

Los contratos en WCF definen el comportamiento de los servicios. Hay cinco tipos de contratos;

Service Contracts
Define las operaciones que el servicio soporta y mapea las operaciones en WSDL.

[ServiceContract]
public interface IMyContract { ...}
Una clase que implementa el contrato de un servicio se denomina Service Type


Operation Contracts
Define operaciones individuales que un servicio soporta y mapea la operación en WSDL.
[OperationContract]
void MyOperation();

Estas pueden ser Sincrónicas y Ansincrónicas. [OperationContract(AsyncPattenr=true)]


Data Contracts
Define la representación serializada de la estructura, normalmente utilizada para tipos complejos. Para ello utilizamos los Tags DataContract y DataMember

[DataContract(Name="PersonType")]
public class Person{
[DataMember]
public string Name;

[DataMember(IsRequired=true)] // Por defecto es false
public string Age;
}

Con atributo IsRequired podemos tener valores opcionales en las nuevas versiones de la estructura.


Message Contracts
Los Message Contracts describen todo el formato de los mensajes SOAP. Generan schema para tipos complejos.
También permiten controlar los Head y Body de los mensajes SOAP de forma explicita.

[MessageContract]
public class MyRequest {
[MessageHeader] public string field1;
[MessageBody] public MyClass field2;
}

Normalmente los MessageBody serán DataContract


Fault Contracts
Los servicios WCF reportan los errores usando Fault objects. El tipo especificado en el Fault Contract no tiene por que ser del tipo Exception, pero normalmente lo será.
Para generar un Fault lanzamos un FaultException.

[OperationContract]
[FaultContract(typeof(System.Exception))]
void MyMethod();

Está disponible el curso de WCF en Microsoft Learling de forma gratuita.