- Private Function GetIP() As String
- Dim context As OperationContext
- context = OperationContext.Current
- Dim messageProperties As MessageProperties = context.IncomingMessageProperties
- Dim endpointProperty As RemoteEndpointMessageProperty
- endpointProperty = messageProperties(RemoteEndpointMessageProperty.Name)
- Return endpointProperty.Address
- End Function
sábado, 8 de mayo de 2010
Como obtener la IP del cliente en WCF 3.5
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.
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]Una clase que implementa el contrato de un servicio se denomina Service Type
public interface IMyContract { ...}
Operation Contracts
Define operaciones individuales que un servicio soporta y mapea la operación en WSDL.
[OperationContract]Estas pueden ser Sincrónicas y Ansincrónicas. [OperationContract(AsyncPattenr=true)]
void MyOperation();
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")]Con atributo IsRequired podemos tener valores opcionales en las nuevas versiones de la estructura.
public class Person{
[DataMember]
public string Name;
[DataMember(IsRequired=true)] // Por defecto es false
public string Age;
}
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]Normalmente los MessageBody serán DataContract
public class MyRequest {
[MessageHeader] public string field1;
[MessageBody] public MyClass field2;
}
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.