Llamadas asíncronas II


Carga plantas que empiezan por la letra...

llamada a servicio asmx

  Cargar Plantas

 

Carga planetas del sistema solar

llamada a servicio WCF

  Cargar Planetas

 


¿Qué es y Cómo funciona?

Este ejemplo muestra 2 formularios que realizan una llamada asíncrona por Ajax:

  1. A un servicio asmx que devuelve y muestra en un textarea plantas que empiezan por la letra introducida (hay letras para las que no existe ninguna planta).
  2. A un servicio WCF para cargar en un textarea una lista de los planetas del sistema solar.

Las llamadas pueden ser visualizadas desde cualquier navegador en su herramienta de desarrollo "F12" (FireBug en FireFox, Herramienta para desarrolladores en Chrome, etc.)

 

Teoría

Un formulario con llamadas asíncronas a servicios tiene en mi opinión varios puntos mínimos obligatorios:

  1. Tecnología a utilizar
    Los servicios asmx aún cuando añadimos seguridad, encriptación, etc. con WSE cumplen la función "justa" para alojarlos en IIS bajo protocolo Http. Esta función la cumple perfectamente ASP.NET Web API (2), una buena alternativa a los servicios asmx. Es fácil de integrar en web forms y MVC, y añaden funcionalidades como tipos no primitivos (p.e. IEnumerable) a devolver. Si se requiere otro protocolo (TCP, MSMQ, etc.) o alojamiento (Windows Service, aplicación de consola que se esté ejecutando y exponga el servicio, etc.), o simplemente queremos dar robustez a nuestro servicio la mejor opción es migrar asmx a WCF.
  2. Gestión de errores
    Al invocar a un Servicio debemos tener en cuenta que ocurre si se produce un error bien porque la estructura de la entidad enviada no es correcta, porque el servicio ya no existe o ha devuelto un error por otras causas.
  3. Seguridad
    asmx:
    • Si queremos un servicio disponible solo desde cierta/s página/s debemos chequear la página desde la que se llama al servicio (UrlReferrer) para evitar accesos no autorizados o ataques XSS (cross-site scripting).
    • Las llamadas se realizarán siempre por POST añadiendo solo el protocolo "HttpPost" en el WebConfig.
    • Si queremos personalizar la página de ayuda para no mostrar el detalle de nuestro servicio añadiremos el correspondiente "wsdlHelpGenerator" al WebConfig.
  4. JSON / JSONP

 

Configuración y Test

Se ha utilizado Visual Studio Express 2013 para Web y actualmente Visual Comunity 2015.
La programación se ha desarrollado con C#, Razor y acceso a Base de Datos por Entity Framework.

Las tablas mostradas en la aplicación se encuentran en un Microsoft® SQL Server® 2012 y actualmente en SQL de Azure

El alojamiento de las páginas se realizó en https://www.smarterasp.net con el plan .NET ADVANCE y actualmente se han movido a 2 Aplicaciones Web en Azure: una para este proyecto Web MVC y otra para un WCF usada en un ejemplo.

Se ha testeado con exito en diferentes navegadores y sistemas operativos, en pantallas de PC, tabletas y moviles.