Hola gente!
Nicolas, gracias por el detalle. Si, habia querido decir SCADA ;-)
Bien, seria interesante tener un servicio o conjunto de servicios remotos (digo, remotos al desktop, pero siguen estando en la LAN) por modulo. Mi unica duda seria si alguna operacion en el desktop necesita ingente cantidad de datos del SQL.
Como esos servicios se tienen que exponer por alguna tecnologia (no es un servicio, digamos, unos metodos en un(os) objeto(s)/clase(s) en una DLL in proc), veria el tema REST. Habria que resolver el tema seguridad/autenticacion desde la aplicacion desktop a esos servicios.
Se podria replicar (no exactamente quizas) esos servicios remotos, como una DLL local. Algo asi:
Projecto Desktop --> referencia y usa Projecto de Clases local a el, que contiene los metodos que necesita
y
Ese proyecto de clases local llama al servicio expuesto remoto, Seria como la primer figura de
(aunque discutiria el resto del texto ;-)
La parte local (para seguir el vocabulario de ese articulo, el service gateway), no necesariamente llama al remoto en cada llamada local. Por ejemplo, local.getProvincias() quizas trae las provincias del remoto, pero luego, ante otras llamadas, bien puede entregar una copia local, para no ir a cada rato al remoto.
Si no existe conexion con el remoto, local.getProvincias() tratara de resolverlo con la base local. Pero aca no me queda claro: que operaciones hace tu aplicacion actual, para sobrevivir, seguir funcionando aun sin conexion? No hay operaciones que hace el operador, que quedan pendientes de confirmacion? Ejemplo, si fuera una aplicacion bancaria, y el operador transfiere plata de una cuenta a otra, el sistema DEBERIA avisarle que, bueno, si, todo bien, se lo acepta, PERO QUE LA OPERACION esta pendiente. Hay operaciones asi en tu aplicacion actual y futura? No veo que con una replicacion de datos se pueda resolver eso.
Al aparecer un nuevo modulo, aparece un nuevo servicio expuesto en algun servidor de la LAN. Y aparece una nueva aplicacion desktop que tiene acceso a eso.
O quizas, necesitas que la aplicacion desktop SEA UNA, y cada modulo se "cuelgue" como una opcion mas del menu?
Bueno, me tocan los ravioles ahora ;-)
Nos leemos!
Angel "Java" Lopez