¿Qué es y Cómo funciona?
Este ejemplo muestra 2 formularios que realizan una llamada asíncrona por Ajax:
- 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).
- 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:
-
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.
-
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.
-
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.
-
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.