RE:Ayudenme a resolver estas dudas
Hola,
Bien, para este problema hay varias opciones:
- Convertir la aplicacion a ASP.NET: Esta solución dependiendo del tamaño o complejidad del programa puede que requiera mucho tiempo y recursos. Si tienes conocimientos y experiencia en aplicaciones .NET con windows forms estoy seguro que con un libro y un poco de practica enseguida aprenderias. Si la aplicacion contiene un UI complejo, entonces quizás la mejor opción seria convertir la aplicación a Silverlight que permite mejores UIs que no una pagina web.
- Crear una capa de servicios en un servidor: Si convertir la aplicacion es demasiado complejo, una opcion és crear una intrerface a la base de datos con servicios web o WCF. Entonces, se realizan modificaciones al programa de forma que en vez de conectar directamente a la base de datos se conecta con esta interfaz en un servidor y la interfaz se encarga de realizar las transacciones con la base de datos. Esto es un poco complejo y si elijes esta opción te recomendaría previamente que leyeras mucha documentación sobre servicios web y/o WCF, especialmente en la parte de seguridad.
- Conectar mediante VPN o SSH el cliente a la red donde este la base de datos: En este caso, se trataría de hacer que los ordenadores cliente se conectaran a la red del servidor de base de datos por internet formando lo que se llama una "red privada virtual" (VPN: Virtual Private Network). Mediante esta opción no se ha de modificar nada del programa, ya que una vez los ordenadores están conectados se ven como si estuvieran en red local aunque sea a través de internet.
- Abrir directamente la base de datos a internet: Esta opcion és la mas simple pero la menos recomendable ya que estas exponiendo directamente la base de datos a internet i multiples Hackers intentaran ganar acceso. La ventaja es que no has de hacer ninguna modificacion al programa, solo cambiar la conexión de la base de datos de forma que se conecta a la IP del servidor, pero por motivos de seguridad es una opción no recomendable a no ser que no haya ninguna otra posibilidad.
En todo caso, en todas las opciones, estas enviando datos por Internet de forma que algún hacker puede intentar capturar los datos y/o acceder a los servidores de datos, así que cualquiera que sea la opción lo mas importante es la seguridad (encriptacion de datos, controles de acceso, ...)
En cuanto a la distribucion de una aplicacion web se requiere un servidor. En este caso la distribución és muy sencilla, solo has de instalar la aplicacion web en el servidor (el visual studio incluye herramientas pala la instalacion en un servidor IIS) y los clientes se conectan al servidor como a qualquier otra pagina web. No hace falta instalar nada en el cliente. En cuanto a servidor, lo mas recomendable para aplicaciones ASP.NET es un Windows Server, que normalmente ya incluye el servidor web IIS (Internet Information Services) pero es un poco caro. Tambien Windows XP professional y Vista (algunas versiones) incluyen el IIS como servidor web y se podrían a llegar a usar. Otra opcion és contratar un servicio de "Hosting". En este caso una vez se tiene realizada la aplicacion se contrata a una empresa que te pone a disposición un cierto espacio en un servidor web o un servidor web entero, y la empresa se encarga del mantenimiento del servidor.
La ventaja del PHP y Apache, aparte de que son multiplataforma, es que son gratuitas. Muchas webs usan la combinacion LAMP (Linux + Apache + MySQL + PHP) ya que todos los programas son gratuitos (solo creo que para MySql has de pagar algo para uso profesional) y no por eso menos potentes o eficientes que otros programas de pago.
Por mi experiencia, la primera opción que recomendaría es intentar que los clientes se conectaran mediante VPN a una red con el servidor de bases de datos. Esta solución me ha dado bastantes buenos resultados de seguridad y fiabilidad y evita tener que realizar demasiados cambios en el código. Si no es posible entonces mi segunda opción seria convertir la aplicación a ASP.NET a no ser que la conversión implique demasiado trabajo.