none
comunicacion con winforms RRS feed

  • Pregunta

  • Hola un saludo, estoy realizando una aplicacion con winforms  y c# mi duda es la siguiente:

    cual es la mejor forma para que esta aplicacion que la descargaran ciertos clientes en sus maquinas, se pueda comunicar con un servidor de base de datos esto de forma remota, que la aplicacion consuma un webservice es muy sencillo, pero tal vez no sea la forma mas adecuada, es por eso que les pregunto cual es la mejor forma de comunicacion entre la aplicacion y una base de datos, un socket, con .net remoting?  gracias de antemano y espero se entienda mi duda saludos 

    viernes, 24 de febrero de 2012 16:22

Todas las respuestas

  • Yo pensaría que lo mejor es usar los proveedores de datos para ..NET. Por ejemplo, para SQL Server sería mediante System.Data.SqlClient.
     
    Cada proveedor de datos de .NET se encarga de conectarse a los servidores abriendo los sockets correspondientes, sin que tú te enteres de nada. Creo yo que ésta es la mejor opción. ¿Qué DB estás usando?
    Saludos.


    Fernando A. Gómez F.
    fermasmas.wordpress.com
    Galería de ejemplos
    viernes, 24 de febrero de 2012 17:58
  • Al igual que fernando, si no tienes nada en contra usaria cualquiera de las opciones que ofrece .NET. Tienes el diagrama de clases LINQ, los datasets y entity framework que ahora esta muy de moda jejeje

    A mi modo de ver los datasets quedan ya obsoletos, asi que dependiendo de que tipo de requisitos tengas usaria el diagrama de LINQ o entity framework.

    Si necesitas, sistemas de cache, gestion de estado y demás usa entity framework, si solamente usaras procedures y vistas con un diagrama de LINQ tienes suficiente.

    Info Entity Framework: http://msdn.microsoft.com/es-es/library/bb399572.aspx


    Vota mi respuesta si te ha sido útil. Gracias.

    viernes, 24 de febrero de 2012 18:04
  • gracias por sus respuestas, jajaja  tal vez no especifique bien, sì la comunicacion con la BD no tengo problemas, utilizo sql.client,  y stored procedures, mi duda mas bien hiba orientada a la parte de interaccion o comunicacion de una winform con un servidor en general, es decir puede solo obtener datos de un BD o leer un archivo almacenado en un servidor,

    en un principio pense en que la winform consumiera un servicio web o WCF, donde este servicio viviera en el mismo servidor que la BD, o generar un socket o con .net remoting, para la conexion con un servidor, solo q en cuestiones de seguridad  y vivilidad no se cual sea la mejor opcion gracias por su tiempo saludos

    viernes, 24 de febrero de 2012 18:43
  • Por mi experiencia los servicios web se suelen crear con el proposito de no difundir a terceros la cadena de conexion y crear como una API para esos terceros, si no es tu caso; yo personalmente no lo implementaria puesto que es añadir más capas a tu aplicación con lo que són más lineas a ejecutar (tiempo).

    Si solamente usas procedures yo optaria por un diagrama de LINQ, es tan simple como arrastrar y soltar el procedure y usarlo como una funcion de .NET cualquiera.


    Vota mi respuesta si te ha sido útil. Gracias.

    viernes, 24 de febrero de 2012 21:07
  • En uno de los foros aporte mi experiencia sobre una conexión a una base de datos remota.  Yo uso la forma descrita sin problemas. Espero sea de utilidad.
    http://social.msdn.microsoft.com/Forums/es-ES/sqlserveres/thread/9382c557-5928-4998-badf-eb01e81c2df3

    Te copio aquí la respuesta de ese foro:

    Estimado Rafael,

    Te explico cómo utilizar una base de datos SQL Server remota en tus aplicaciones:

    Cómo has de saber, la mayoría de las empresas que prestan el servicio de hospedaje web (para esta explicación en servidores Windows obviamente) también ofrecen Base de datos.

    Dependiendo de cada empresa los servicios ofrecidos varían en calidad y en cantidad de prestaciones. La mayoría ofrecen base de datos sólo para trabajar en aplicaciones web hospedadas en el mismo servidor, pero hay otras que te permite acceso a la base de datos desde tu propia máquina o desde las de tus clientes (para tus aplicaciones conectadas a esa base de datos).  Para ello sólo debes configurar la cadena de conexión según te lo indique la empresa prestadora del hospedaje de BD.

    De esta forma, puedes, desde el administrador corporativo instalado en tu máquina de desarrollo, trabajar en la base de datos remota como si estuviera instalada en tu propio equipo.  Para ello debes tener instalada alguna versión de SQL. En mi caso utilizo SQL Server 2008 R2 en su versión express que es gratuito (con él me conecto a una base de datos SQL Server 2000 residente en el servidor). De manera similar, tus aplicaciones usarán la base de datos tal como si estuviera instalada localmente.

    Como generalmente el acceso a la base de datos está sujeto a restricciones de seguridad, la empresa prestadora del servicio de hospedaje, puede conceder permiso mediante la validación de la IP desde la cual se pretende acceder la base de datos.

    Cuando cuentas con IP fija, basta con informar esta IP a la empresa prestadora del servicio de hospedaje para que ella registre esta IP como segura y permita el acceso a la base de datos.

    Cuando la IP es variable, como en mis equipos de desarrollo, la empresa te permite acceso mediante la validación temporal de tu IP variable a través de una simple autenticación en un formulario web, el que debe permanecer abierto mientras este en uso la aplicación o mientras trabajes directamente en la base de datos.

    En mi caso, algunos clientes que usan mis aplicaciones han contratado IP fija, evitándose la autenticación vía web y otros usan IP variable sin mayores complicaciones.

    Un punto crítico es la de conexión a Internet la que debe ser lo más estable posible. Generalmente las conexiones DSL sufren de pequeñas desconexiones, que en el caso de una navegación normal pasan inadvertidas para el usuario, pero en este caso, la autenticación inicial puede perderse, haciendo que la aplicación se desconecte de la base de datos.

    Generalmente las empresas proveedoras de Conectividad ofrecen diversos niveles de servicios y, dependiendo de cuanto pueda gastar tu cliente podrás optar a medios más o menos estables.

    Es premisa básica para este tipo de solución que tu cliente cuente con Conexión a Internet u otro tipo de enlace a la base de datos y, estar consciente de que el funcionamiento de la aplicación depende de que dicha conexión este en funcionamiento.

    Cómo desconozco en qué país resides, no haré referencia a los proveedores que yo utilizo, ya que puede ser un dato inservible para ti.

    Lo expuesto en fruto de mi experiencia en el área y posiblemente sea una solución cuestionable por personas con más conocimientos, pero en mi caso ha sido una buena solución y lo más importante es que a mis clientes les gusta y satisface. Sobre todo cuando instalan la aplicación en sus notebooks y pueden trabajar desde cualquier parte en que tengan acceso a internet.

    Espero que te sea de utilidad.

    Si tienes más consultas, estoy a tu disposición.

    Atentamente


    Manuel Luengo

    domingo, 26 de febrero de 2012 20:15