Una de las grandes características de WCF es la forma en como éstos pueden ser expuestos a nuestros clientes, por ejemplo los siguientes protocolos, de manera muy recurrente:
- Http
- TCP
- Net Pipe
- Http cuando el servicio y el cliente se encuentran en redes diferentes
- TCP cuando el servicio y el cliente se encuentran en la misma red, pero en equipos diferentes
- Net Pipe cuando el servicio y el cliente se encuentran alojados en el mismo equipo
Por cuestiones de redimiento y seguridad de la información
- Si una petición http toma un tiempo de 200 ms, por poner un ejemplo
- Una petición tcp tomará aproximadamente el 20% menos que la petición http (40 ms aproximadamente)
- Y una petición Net Pipe, tomará aproximadamente el 80% del tiempo que toma el hacer una petición tcp (32 ms aproximadamente)
En este post aprenderemos a publicar un servicio WCF usando NetTcpBinding y mexTcpBinding
Veamos el video que preparamos para validar el funcionamiento de lo que queremos obtener:
Validando los Requisitos Previos de Nuestro Servidor
Características de Windows
Validemos que las siguientes características de Windows se encuentren instaladas en nuestro servidor, si ya cuenta con la versión 4.6 del .NET Framework, asegúrate de tener instaladas las características correspondientes a: Servicios Avanzados de .NET Framework 4.6
Para esto, vaya al Panel de Control, Programas y después en Activar o Desactivar las características de Windows.
Herramienta de Registro de ASP.NET en IIS
Ejecute el siguiente comando desde el símbolo del sistema con privilegios de administrador, en caso de tener IIS instalado en un sistema operativo anterior a Windows 8 o Windows Server 2012:
%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis -i
Validación de Servicios Iniciados
Ingrese al Panel de Control, Herramientas Administrativas y por último en Servicios para validar que los siguientes servicios se encuentran iniciados:
- Adaptador de escucha Net.Msmq
- Adaptador de escucha Net.Pipe
- Adaptador de escucha Net.Tcp

Creación de un Sitio Para la Publicación de Servicios Sobre TCP
Este paso es opcional, puesto que puedes llevar a cabo la publicación en el sitio web predeterminado o en cualquier otro existente, tú decides como trabajarlo.
Ingresa al Panel de Control, Herramientas Administrativas y por último en Administrador de Internet Information Services.
Para crear el nuevo sitio, haz clic derecho sobre Sitios y posteriormente en: Agregar sitio web.
Configura los siguientes parámetros en tu sitio:
- Nombre del sitio: En nuestro ejemplo: Servicios
- Grupo de aplicaciones: Te recomendamos usar el grupo de aplicaciones con el Framework más actual con el que cuentes, para nuestro caso: .NET v4.5
- Ruta de acceso física: Elige la que mejor te convenga, para nuestro ejemplo usaremos: C:\inetpub\Servicios
- El enlace principal a configurar será: http y el puerto de tu elección, el segundo más común por default después del 80 es el 8080 que será el elegido para nuestro ejemplo.
Ahora crearemos un nuevo enlace para el sitio recién creado seleccionándolo y posteriormente haciendo clic en la opción: Enlaces
Agregaremos un nuevo enlace, seleccionando como tipo del mismo: net.tcp y en cuanto a la información del enlace escribiremos: 808:* que significa que todas las peticiones de tipo net.tcp solicitadas por el puerto 808 serán resueltas por este enlace.
Publicación del Servicio WCF
Descargue el código fuente al final del post y copie la publicación dentro de la carpeta asignada en el sitio web que recién creamos, en nuestro ejemplo en C:\inetpub\Servicios\CalcService
Vuelva al Administrador de Internet Information Services y haga clic derecho sobre el sitio Servicios y posteriormente en la opción: Actualizar
Expanda el sitio Servicios y verá la carpeta que acabamos de copiar en la carpeta asociada al sitio y después haga clic derecho sobre ella y seleccione la opción: Convertir en aplicación.
No necesitas configurar nada más, sólo haga clic en Aceptar
Abre el navegador de tu preferencia y si seguiste las instrucciones basadas en nuestro ejemplo deberías visualizar algo como en la imagen siguiente al escribir en la barra de direcciones: http://localhost:8080/CalcService/CalcService.svc
Archivo de Configuración
Para que todo esto funcione el archivo de configuración deberá lucir como el que a continuación te mostramos:
Vuelva al Administrador de Internet Information Services y haga clic derecho sobre el sitio Servicios y posteriormente en la opción: Actualizar
Expanda el sitio Servicios y verá la carpeta que acabamos de copiar en la carpeta asociada al sitio y después haga clic derecho sobre ella y seleccione la opción: Convertir en aplicación.
No necesitas configurar nada más, sólo haga clic en Aceptar
Por último habilitaremos el protocolo net.tcp haciendo clic sobre la aplicación recién creada: CalcService, en la parte derecha ubicaremos la opción de Configuración avanzada... y en la sección de Comportamiento, en Protocolos habilitados deberá estar configurado como: http, net.tcp.
Abre el navegador de tu preferencia y si seguiste las instrucciones basadas en nuestro ejemplo deberías visualizar algo como en la imagen siguiente al escribir en la barra de direcciones: http://localhost:8080/CalcService/CalcService.svc
Archivo de Configuración
Para que todo esto funcione el archivo de configuración deberá lucir como el que a continuación te mostramos:
Pon especial atención en lo que se encuentra dentro de la etiqueta system.serviceModel, en especial en la parte de behavior que inhabilita el devolver los metadatos del servicio por http y https.
La parte de baseAddress debe coincidir con la ruta en la que el servicio se encuentra a la escucha: net.tcp://localhost:808/CalcService
Agregar la Referencia de Servicio en un Cliente
Puedes descargar el código fuente de una aplicación cliente Windows Forms desde la que podrás probar el consumir el servicio usando el protocolo Net.Tcp. La aplicación se llama: Client.sln
Una vez abierto el proyecto haz clic derecho sobre el proyecto Windows Forms llamado Client, posteriormente en la opción Agregar y por último en la opción: Referencia de Servicio.
Considera la siguiente configuración: la dirección que usaste para publicar el servicio en el Administrador de Internet Information Services; a lo largo de este ejemplo ha sido: net.tcp://localhost:8080/CalcService/CalcService.svc/mex y el nombre del espacio de nombres deberá ser CalcService, puesto que la aplicación de cliente está configurada para hacer referencia a ese espacio de nombres.
Descarga de Código Fuente
La descarga incluye los siguientes elementos:
- Solución con el servicio a publicar: CalcService
- Cliente para llevar a cabo tus pruebas: Client
Acabamos de migrar a Visual 2017, por lo que ya nos encontramos trabajando en el Framework 4.5.2, descarga la versión Community para que lleves a cabo tus pruebas desde este link: VSCommunity2017
Comentarios
Publicar un comentario