De las cosas más interesantes para programar, son las aplicaciones distribuidas. Éstas, requieren que un programa cliente se pueda comunicar con un programa servidor, lo cual puede ser logrado de varias formas. La forma más moderna, es utilizando WebService, tanto asíncronos como sincronizados. Otra forma, utilizando colas de mensajes lo cual es un método bien asícrono. Pero si queremos un sicronía completa y además, velocidad, debemos utilizar Windows Sockets.
Un socket es una dirección de comunicación que utiliza una aplicación y que tiene asociado una dirección IP y un número de puerto.
Mi primer intento con Windows Sockets murió con Visual Basic 6. Con .Net, la cosa es bastante más sencilla, en especial porque existe más información que antes. Y sobre todo, en Visual Basic. Así que navegué un rato por Internet buscando algo sencillo y rápido, y encontré un resultado muy bueno en http://www.elguille.info/colabora/puntoNET/PabloTilli_SocketsVBNET.htm, una página de el amigo Guille, uno de los Gurú de Visual Basic en español.
Mi único problema al respecto, es que ese artículo está escrito utilizando aplicaciones Windows Form. Yo lo necesitaba con Servicios de Windows. Pero eso es otro artículo.
Para entender lo que hace el ejemplo mencionado, basta mencionar que utiliza algo de multitarea y algunas cosas del System.Net. En principio se separa el código en 4 partes.
1) Código de la aplicación servidor
2) Clase conteniendo el código de comunicaciones del servidor
3) Código de la aplicación cliente
4) Clase conteniendo el código de comunicaciones del cliente
Realmente esta separación está muy buena, porque nos permitiría construir nuestro propio ensamblado de comunicaciones por sockets y referenciarlo en varias aplicaciones. Incluso, hasta podríamos construir clases que permitiera untilizar diferentes métodos de comunicación en una misma aplicación. Así, dejaríamos la aplicación cliente con toda la lógica que le es importante e independizándola de las comunicaciones que utilicemos.
Y encontraste como hacerlo como un servicio de windows.?
Hola Jaime!
Creo que no encontré como hacerlo… porque no recuerdo haber buscado! Pero este post es de 2008, así que 4 años después ya debe haber algún ejemplito por ahí.
Saludos y muchos éxitos en la búsqueda!