jul 24 2009

WebServices (Simple Chat)

Category: Artículos | Servicios | Web | Silverlight | Windowsdwaks @ 15:15

WebServices
Definición
http://es.wikipedia.org/wiki/Servicio_web

En esta entrega se hablará sobre el uso de WebServices (Servicios Web) que son un conjunto de protocolos y estandares para intercambia datos entre diferentes plataformas. Mejor que lean sobre la definición de WebServices que brinda wikipedia.

WebServices muchos lo ven como procesos que se realizan remotos y que centralizan las operaciones entre aplicaciones Windows y Web ASP.NET, permitiendo por ejemplo que un programa Desktop de inventario con todas sus funcionalidades pueda ser pasado a Web en ASP.NET facilmente porque todos los procesos estan centralizados en el WebServices como Administrar Productos, Reportes de Salidas, Reportes de Inventarios y Ventas y mucho más. Como el WebService tiene toda la lógica de negocio el programa Desktop y Web solo son los visuales que interactuan con el usuario y manda todo a el WebServices.

Los WebServices también pueden ser usados como utlidades de uso público que cualquier empresa quiera poner, ejemplo calculos matemáticos, fecha y hora mundial, calculos Estadisticos que son todos la misma cosa siempre y no varia. Si un sitio web tiene para saber la raiz cuadrada de un número en un WebServices que cualquier puede usar solo es conectarlo a tu web ó programa Desktop y utilizarlo sin necesidad de programar el proceso.

Muchos son los usos que se les pueden dar, pero en este Artículo lo usaremos para que trabaje como Servidor de un Chat, donde los usuarios se conecten a el registrandose y compartiendo con los demás usuarios. Para este ejemplo de un Chat Simple se usará el WebService y una Página aspx que lo referencie. Los 4 métodos más importante son AgregarUsuario, ObtenerUsuarios, AgregarMensajes y ObtenerMensajes que son las funcionalidades básicas.

Para el control de la salida de un usuario que no dijo que estaba saliendo y que no quede colgado se usara un DateTime para saber si tiene actividad el usuario despues de cierto tiempo y si no tubo actividad será retirado de la Sala.

private static int MaximoMinutosIdle = 15;

Para que los mensajes no crescan hasta el infinito se le pondrá un contador que lleve el total de mensajes adaptado y si llega al límite se limpie lo que este de más permitiendo siempre tener un límite de mensajes.

001private static int MaximoMensajes = 30;
002
003[WebMethod]
004public string[] ObtenerMensajes()
005{
006    if (Mensajes.Count > MaximoMensajes)
007    {
008        int total = Mensajes.Count - MaximoMensajes;
009        for (int i = 0; i < total; i++)
010        {
011            Mensajes.RemoveAt(i);
012        }
013    }
014    return Mensajes.ToArray();
015}

Para persistir los usuarios y mensajes entre todos los clientes activos se usan variables estáticas que trabajarán como un Objeto Singleton ayudando a la persistencia de la información que el WebServices mantendrá.

private static Dictionary<string, DateTime> Usuarios = new Dictionary<string,DateTime>();
private static List<string> Mensajes = new List<string>(); 

Cabe destacar que una forma de uso muy buena sería creando el Cliente desde una aplicación Silverlight ó usando Ajax que le dará una calidad buenisima a el chat porque el control de el refresh se hace por timer y no se afectará tanto el visual como pasa con el refresh de una página html.

Aquí les dejo el código de el proyecto para que lo bajen y lo vean para que lo modifiquen hagan sus propios Clientes y lo amplien si gustan.
WSSimpleChat_VisualStudio2008_Framework3_5.zip (7.95 kb)

Si les pareció util espero sus comentarios. 

Tags:

Sea el primero en calificar este post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5