Entradas

Mostrando entradas de enero, 2017

Introducción a las llamadas asincronas con WCF

Cada vez es más importante no bloquear nuestra interface de usuario, para conseguir una mayor fluidez en nuestras aplicaciones. Cuanto menos tiempo utilicemos un recurso, más fluido funcionarán nuestra aplicaciones. Una forma sencilla que ofrece WCF desde su aparición es simplemente no esperar al resultado de una llamada. Para ello existe el parámetro IsOneWay del atribute OpeatonContractAttribute . Con esto el cliente no esperará a recibir una respuesta del servidor. [ OperationContract (IsOneWay = true )] void Echo(); Como es de esperar, al especificar IsOneWay, nuestro método no puede devolver nada y hay que definirlo como void. En una próxima entrada explicaré como usar asyn/await. Una forma más avanzada de hacer llamadas asíncronas sin bloquear los recursos de la máquina tanto en el cliente como en el servidor.

Traducir al ingles mensages de excepciones

Cuando se produce una excepción que no conocemos su causa una forma de obtener informaciones es utilizar google o bing para buscar información. La cual suele ser mucho más abundante en ingles que en cualquier otro idioma. Una forma de obtener estos mensajes en ingles es utilizar un Windows en ingles o cambiar la configuración regional. Pero hay una forma más sencilla de obtener este mensaje sin necesidad de estar cambiando la configuración de nuestra maquina. Y es introduciendo un nuestro código un cambio de idioma. Thread .CurrentThread.CurrentCulture = new CultureInfo ( "en-US" );            Thread .CurrentThread.CurrentUICulture = new CultureInfo ( "en-US" ); Tras esta líneas todas las excepciones aparecerán en ingles. No olvidéis eliminar las líneas tras solucionar el problema, ya que no solo se cambia el idioma en el que aparecen las excepciones, si no toda la configuración regional, como hora, formato moneda, puntuación de decimales, ...

Introducción a WCF

En alguna ocasiones me ha tocada mantener aplicaciones que utiliza las Windows Communication Foundation como herramienta de comunicación y siempre he tenido que sufrir lo complicado que es su mantenimiento, debido a la utilización de asistentes. Estos asistentes suelen funcionar muy bien para crear el servicio, ya que te crea todos los objetos de intercambio de datos. Pero complican terriblemente su mantenimiento. Desaprovechan la capacidad de .Net de funcionar en cualquier plataforma y compartir código. Y es muy complicado implementar pruebas unitarias. Con esta entrada voy a iniciar una serie en la que trataré de explicar cual es la forma de sacar toda la potencia que tiene WCF. Lo primero que hay que hacer para definir un servicio es crear una interfase que lo defina. Para que WCF la entienda se deberá marcar la interface con el atributo ServiceContractAttribute y cada propiedad con OperationContractAttribute . [ ServiceContract ] public interface IOperacioens {