none
Recomendación desarrollo de aplicación distribuida por Clientes DeskTop y BD remota RRS feed

  • Pregunta

  • Hola buenas tardes amigos, les comento que estoy por desarrollar un proyecto para un cliente, este cliente tiene 4 sucursales, desgraciadamente por cuestiones de operatividad y rapidez, mi cliente me pide que la aplicación sea por aplicación Desktop, originalmente se haría por Web, pero es un negocio que hay que utilizar códigos de barras, miniprinters, etc. Así que decidimos hacerla completamente en Desktop, ahora bien, ando viendo la posibilidad de integrar el proyecto con WCF y que los clientes Desktop consuman el servicio.

    Pero también he visto desarrollo de aplicaciones que se conectan directamente a una base de datos remota, así que me gustaría que me recomendaran que modelo usar y cual es más seguro. (Conectar directamente mis clientes hacia una BD remota o usar WCF), ya que la base de datos pretendemos que este en la nube.

    Además les comento que la app cliente la hare en capas, no sé si sea recomendable al momento de consumir servicios WCF. ( Bussines Layer, Data Access Layer, Presentacion y WCF)

    En internet he visto ejemplos de uso de WCF pero todos están en un solo proyecto y usando ASP, no he visto un ejemplo donde la aplicación este en DeskTop y el WCF este por aparte conectado a una base.

    Como comentario final, pensamos alojar la BD en Microsoft Azure, entonces mi pregunta es:¿ Es recomendable hacer una conección directa desde una app de escritorio hacia la bd alojada en Azure? Gracias.

    Muchas gracias y espero su recomendación y experiencia.


    IcebergDelphi





    • Editado Icebergdelphi jueves, 9 de febrero de 2017 18:12 de
    • Cambiado Joyce_AC viernes, 10 de febrero de 2017 15:54
    jueves, 9 de febrero de 2017 17:33

Respuestas

  • hola

    >>Pero también he visto desarrollo de aplicaciones que se conectan directamente a una base de datos remota, así que me gustaría que me recomendaran que modelo usar y cual es más seguro.

    Si te animas a usar servicios ve por ese lado ya que de esta forma la logica del negocio la tendras en el servidor y alli tambine estara la persistencia, de esta forma separas fisicamente le UI de las demas capas de forma fisica

    Tener la logica en el cliente y que este se conecte al servidor no es una opcion que sea recomendada ultimamente, en resumen no conectes el cliente directo a la db

    >>la app cliente la hare en capas, no sé si sea recomendable al momento de consumir servicios WCF

    peudes aplicar capas sin problemas, es mas si usas wcf estarias implementando una capa de servicio, la cual permite desacoplar la UI del resto

    >>¿ Es recomendable hacer una conección directa desde una app de escritorio hacia la bd alojada en Azure?

    con mas sentido, usa servicio, los cuales podras alojar en un Web Site en azure sin problemas

    desde azure no vas a poder exponer la conexion directa a la db, bueno salvo que armes alguna VPN entre la red local y una maquina virtual en azure, lo cual no recomendaria si puedes evitarlo

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Marcado como respuesta Icebergdelphi sábado, 11 de febrero de 2017 14:23
    jueves, 9 de febrero de 2017 19:04

Todas las respuestas

  • hola

    >>Pero también he visto desarrollo de aplicaciones que se conectan directamente a una base de datos remota, así que me gustaría que me recomendaran que modelo usar y cual es más seguro.

    Si te animas a usar servicios ve por ese lado ya que de esta forma la logica del negocio la tendras en el servidor y alli tambine estara la persistencia, de esta forma separas fisicamente le UI de las demas capas de forma fisica

    Tener la logica en el cliente y que este se conecte al servidor no es una opcion que sea recomendada ultimamente, en resumen no conectes el cliente directo a la db

    >>la app cliente la hare en capas, no sé si sea recomendable al momento de consumir servicios WCF

    peudes aplicar capas sin problemas, es mas si usas wcf estarias implementando una capa de servicio, la cual permite desacoplar la UI del resto

    >>¿ Es recomendable hacer una conección directa desde una app de escritorio hacia la bd alojada en Azure?

    con mas sentido, usa servicio, los cuales podras alojar en un Web Site en azure sin problemas

    desde azure no vas a poder exponer la conexion directa a la db, bueno salvo que armes alguna VPN entre la red local y una maquina virtual en azure, lo cual no recomendaria si puedes evitarlo

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Marcado como respuesta Icebergdelphi sábado, 11 de febrero de 2017 14:23
    jueves, 9 de febrero de 2017 19:04
  • Muchas Gracias Leandro, de hecho asi estoy pensando ya hice como prueba el WCF y por otro lado la conexion con una app cliente de prueba, el unico problema o más bien duda ,al hacerlo en capas del lado del cliente como buenas practicas ¿que capas debo de utilizar cuando uso WCF?, ya que he desarollado aplicaciones para escritorio usando las siguientes capas: VISTA, EBL(ENTITY BUSSINES LAYER), DAL (DATA ACCESS LAYER), BLL(BUSSINESS LOGIC LAYER).

    Alguna de ellas ya no tendria que usar.

    ya que me he dado cuenta que al llamar el servicio, este trae las clases remotas por ejemplo, por asi decirlo: clase proveedores, (creada en el WCF), al desarollo del lado del cliente.

    Te comento que igual estare usando EntityFramework



    IcebergDelphi


    jueves, 9 de febrero de 2017 20:11
  • hola

    >>al hacerlo en capas del lado del cliente como buenas practicas ¿que capas debo de utilizar cuando uso WCF?,

    es que del lado del cliente no creas ninguna capa, porque esta de por si es la capa de presentacion

    entonces desde el UI consumes la capa de servicio implementada con WCF y despues en el servidor tendras el resto de las librerias con las capa de negocio y persistencia

    por supuesto vas a necesitar entidades de transporte, las concidas como DTO (DataTransfer Objet) podrias implementar el patron Request/Response

     WCF by Example - Chapter III - Response

    Nota: la EBL no es una capa, las dto tampoco

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    jueves, 9 de febrero de 2017 21:08
  • Muchas gracias Leandro, aunque soy algo testarudo, para fines de organización en el codigo del lado del cliente deje dividido en 3 proyectos ( aunque no es necesario) : Capa presentación, WCF (donde se alojaran los Service References) y una mas que se llama BLL que es donde llamo  a los metodos remotos, por ejemplo:

    WCF:

    ServiceRefUsuarios

     BLL:

    public static bool bllLogin(String sNick, String sPassword)        {            using (ServiceUsuariosClient WcfUsuarios = new ServiceUsuariosClient())            {                return WcfUsuarios.dalLogin(sNick, sPassword);                           }               }

    Y en la capa de presentacion;

    UsuariosBLL.bllLogin(txtUsuario.Text,txtPassword.Text)

    Del lado del WCF lo que tengo planeado hacer es crear un servicio por cada modulo.

    Muchas gracias Leandro.


    IcebergDelphi

    jueves, 9 de febrero de 2017 22:43