WCF jQuery Support

Últimamente el equipo de Microsoft dedicado al desarrollo de WCF ha venido desarrollando algunos proyectos que mejoren nuestra experiencia al desarrollar aplicaciones con WCF y especialmente en el consumo de nuestros servicios a través de clientes HTTP, una de estas iniciativas es el proyecto WCF Support for JQuery , dicho proyecto consiste en un API que nos permite que nuestros clientes web interactúen fácilmente con nuestros servicios WCF a través del intercambio de objetos JSON .

Por otra parte este proyecto es de código abierto y lo podemos encontrar en wcf.codeplex donde además de este proyecto ser irán sumando otros proyectos que el equipo de WCF vaya desarrollando para extender el desarrollo de WCF.

Cuando instalen el paquete de instalación WCF jQuery Support, este añadirá una nueva plantilla entre nuestras aplicaciones web que además nos muestra un sencillo ejemplo de como empezar a usar esta API y como consumir y enviar objetos JSON desde nuestro cliente WEB.

La documentación de este proyecto aún está en proceso de desarrollo pero puede ver sus avances aquí.

Además dos ejemplos: Envió de datos de un formulario HTML y Manejando una colección de objetos desde el servicio.

ScriptJunkie , recursos para desarrollo del lado del cliente /ScriptJunkie,resources to client side development

The current trend in web development is to be taking more and more the logic involved with the updated HTML to the client side, hence the birth of AJAX and the XMLHttpRequest object, the serialization of objects through JSON, the javascript framework like JQuery and other technologies that prevent us to send the entire HTML content of a page to the server to update its status. Proceeds from this trend Microsoft has developed a new site called scriptjunkie where we can get code or script to help us perform partial updates of our pages with client-side code, to take a look at this new site please click here.

Actualmente la tendencia en el desarrollo web es el de ir llevando cada vez mas la lógica involucrada con la actualización del HTML hacia el lado del cliente, de allí el nacimiento de AJAX y el objeto XMLHTTPRequest , la serializacion de objetos a través de JSON, los framework javascript como JQuery y otras tecnologías que evitan que tengamos que enviar todo el contenido HTML de una página al servidor para poder actualizar su estado.  Producto de esta tendencia Microsoft ha desarrollado un nuevo sitio llamado scriptjunkie donde podremos conseguir código o script que nos ayudaran a realizar actualizaciones parciales de nuestras páginas con código del lado del cliente,  para echarle un vistazo a este nuevo sitio hagan click aquí.

Instrucciones Básicas con JQuery

A continuación le dejo algunas instrucciones básicas de JQuery con las que se pueden empezar si se quieren ir familiarizando con este framework javascript.

Además les dejo este enlace donde pueden acceder a una JQuery CheatSheet creada por la gente de colorcharge que además está bastante completa y muy bien hecha.

Seguir Leyendo…

Mejores practicas en el manejo de excepciones.

Información presentada al usuario.

Cuando se produce un error lo normal es presentar al usuario una pagina que le informe al usuario de dicho error y que al mismo tiempo le permite seguir usando la aplicación, lo idóneo es que dicha pagina le indique al usuario, que ha ocurrido, como le afecta el error producido en cuanto al proceso o transacción que estaba llevando a cabo, que debe hacer a partir de ese momento, y algún tipo de información sobre servicio de soporte de la aplicación.

Registrar el error.

Es evidente que el registro de nuestros errores es muy importante si no queremos que estos sigan ocurriendo, guardar información sobre el contexto en el cual se produjo el error nos permitirá determinar las causas del mismo y su posterior solución. La siguiente es una tabla con algunos datos que serán de tremenda ayuda en el diagnostico del error y como podemos obtener dicha información.

Date and time of exception DateTime.Now
Machine name Environment.MachineName
Exception source Exception.Source
Exception type Type.FullName obtained from Object.GetType
Exception message Exception.Message
Exception stack trace Exception.StackTrace—this trace starts at the point the exception is thrown and is populated as it propagates up the call stack.
Call stack Environment.StackTrace—the complete call stack.
Application domain name AppDomain.FriendlyName
Assembly name AssemblyName.FullName, in the System.Reflection namespace
Assembly version Included in the AssemblyName.FullName
Thread ID AppDomain.GetCurrentThreadId
Thread user Thread.CurrentPrincipal in the System.Threading namespace

Manejo de la excepción dentro de la aplicación.

En cuanto al manejo de la excepción lo idóneo es que la capa de presentación reciba excepciones creadas por nosotros a través de la creación de una clase que herede de ApplicationException , esto nos permitirá añadir contenido nuevo y personalizar nuestras excepciones que se produzcan en las capas de negocio o datos de manera que en la capa de presentación se pueda obtener acceso a mensajes de error que el usuario pueda entender. También al crear una nueva clase podemos realizar acciones en el constructor de la misma como el registro de los datos del error en basa de datos o en un archivo.

Por supuesto para realizar la captura de nuestro error en las capas intermedias de la aplicación tenemos que hacer uso intensivo de los bloques try{} catch{} ya que estos no permitirán capturar la excepción producida y convertirla en una personalizada por nosotros.

Si dejamos métodos en las capas intermedias sin captura de errores estos subirán hasta nuestra capa de presentación tal como se produjeron y generaran mensajes que no valdrán de nada para el usuario y expondrán debilidades de nuestra aplicación y generaría problemas se seguridad.

Tampoco hay que dejar de recordar que no deberíamos dejar bloques catch {} vacíos ya que esto produciría un comportamiento inestable o comprometer el correcto hilo de procesamiento de nuestras transacciones o inclusive generar inconsistencia de datos.

Los errores a nivel de aplicación que no hayan sido capturados deberán mostrar alguna pagina de error con la información para el usuario, para eso una buena opción es usar el evento Application_Error del Global.asax, desde donde podemos obtener el error producido y registrarlo para luego redirigir al usuario a una pagina de error.

void Application_Error( object sender, EventArgs e)

{
Exception ex = Server.GetLastError().GetBaseException();
Session["ultimaException"] = ex;
Server.Transfer(“Error.aspx”);
}

Los errores a nivel de pagina también se pueden tratar usando el evento Page_Error  de la pagina en el caso de que se quiera dejar al usuario seguir usando la pagina.

protected void Page_Error(Object sender, EventArgs e)
{
Exception ex = Server.GetLastError();
// Aqui podrias registrar el error
//
o redireccionarlo a otra pagina de error
}

Manejo de Errores en Ajax

Ya en un articulo anterior habíamos habado sobre este tema y mencionábamos que el ScriptManager posee un evento OnAsyncPostBackError que nos permite capturar los errores Ajax de nuestra aplicación de la siguiente manera.

<asp:ScriptManager ID=”ScriptManager1″ runat=”server”

OnAsyncPostBackError=”ScriptManager1_AsyncPostBackError” />

protected void ScriptManager1_AsyncPostBackError(object sender,AsyncPostBackErrorEventArgs e)

{
//manejo del error }

Para mayor información sobre manejo de excepciones pueden darse un paseo por la guía Design Guidelines for Exceptions que encontraran en la MSDN.

Este post esta basado en un artículo publicado en ingles por jankoatwarpspeed.com

DNJ un Framework JQuery para .Net

DNJ  es un Framework JQuery para desarrollo de aplicaciones ASP .Net el mismo trata de hacernos la vida mas facil a la hora realizar desarrollos basados en el uso constante de JQuery y Ajax, por medio de DNJ podemos realizar llamadas a métodos de manera remota y provee muchas otras funciones  para extender el comportamiento Ajax de nuestros controles entre ello la posibilidad de convertir todos nuestros controles web en controles ajax.

Por otra parte DNJ posee una serie de controles JQuery UI que ademas son wysiwyg y entre los cuales se encuentran Tabs, accordion, Datepicker, slider y themeswitcher.

En mi opinión es una buena alternativa para aplicaciones cargadas con mucho logica del lado del cliente y que aprovecha las bondades de JSON y JQuery.

Para visitar la pagina de DNJ pueden hacer click aquí donde además de descargar el Framework DNJ tendrán acceso a la documentación.

Mejora los tiempos de repuesta usando un CDN

cdn

Un CDN (content delivery network) esta compuesto por una red de servidores ubicados estratégicamente para proveer contenidos a diversos clientes y de esta manera maximizar el ancho de banda y aumentar la cantidad de peticiones por unidad de tiempo que pueden servir nuestras aplicaciones Web debido a que cada cliente accede al contenido estático de nuestra aplicación a través del servidor mas cercano que compone el CDN, el CDN posea copia del contenido en cada servidor  y este contenido puede estar compuesto por archivos descargables, documentos, stream de aplicaciones multimedia, archivos de script, etc.

Seguir leyendo

Mejora el rendimiento de tus aplicaciones AJAX usando el objeto XmlHttpRquest

speed

Este objeto hoy presente en la mayoría de los exploradores fue creado originalmente por Microsoft y es la base de la tecnología que conocemos como AJAX y la característica principal de este objeto es que nos permite a través de javascript realizar peticiones Get y Post por medio del http y https de esta manera  podemos recibir y enviar información a un servidor sin necesidad de refrescar la pagina y también podríamos consumir información desde distintos Web Services sin tener que enviar la pagina entera al servidor lo cual aumenta el consumo de ancho de banda y los tiempos de respuesta de nuestras aplicaciones Web.

Seguir leyendo

Llamando a métodos de pagina con AJAX

ajax_p

El uso de llamadas a métodos de pagina es comúnmente usado en AJAX ya que esta técnica permite llamar a métodos estáticos desde javascript, para esto en necesario que el método que se desea exponer para ser consumido por javascript sea un método estático de esta manera no hará falta hacer una instancia de la pagina y no ahorramos todo el procesamiento que conlleva el ciclo de vida de una pagina, además de esto el método debe de tener el atributo WebMethod tal cual como si perteneciera a un servicio Web.

Para poder realizar la llamada desde javascript solo tenemos que colocar la propiedad EnablePageMethods  del ScriptManager igual a true luego podemos usar el método de la pagina con tan solo colocar PageMethods.NombreDelMetodo, el ultimo parámetro que recibirá nuestro método será el nombre de la función que será llamada al recibir el retorno del método de pagina.

Un ejemplo:

Del lado del servidor:

[WebMethod()]

Public static sting Mensaje (sting mensaje)

{

Return “Este es e mensaje:” + mensaje ;

}

Del lado del cliente:

<script>

function Enviar()

{

PageMethods.Mensaje($get(“mimensaje”).value , MensajeRecibido);

}

function MensajeRecibido(msg)

{

alert (msg);

}

</script>

<form runat=”server”>

<input />

<input

value=”Enviar Mensaje” onclick=”Enviar();” />

<br />

<asp:ScriptManager

runat=”server” EnablePageMethods=”True” />

</form>