none
Migrar App Escritorio a Web RRS feed

  • Pregunta

  • Hola, Buen dia, tengo una App en C# y Windows Forms que esta en un servidor y los usuarios acceden a ella por medio de escritorio remoto. Ahora mas usuarios van a acceder a la aplicación por ende se deben comprar las licencias de escritorio remoto lo cual mi jefe dijo NO!! Arregleselas como sea pero no compro mas!! xD

    Lo único que se me ocurre es migrar la App a ASP .NET MVC, pero me nacen algunas dudas.

    1. La capa DAL seria la equivalente al modelo?? o la entity al modelo??

    2. Como se haría un Maestro-Detalle en ambiente web?? en Windows Forms tenia el formulario con sus textBox que llenaban el maestro y luego un Datagridview donde se llenaban los datos del Detalle, pero tengo entendido que no hay Datagridview en asp mvc, en ese caso que se usa??

    3. En asp mvc puedo loguearme con el active directory del servidor?

    sábado, 4 de abril de 2015 20:41

Respuestas

  • hola

    pero tu jefe sabe que migrar todo un desarrollo winform a web va a llevar mucho tiempo, no es algo que vas a lograr en un par de semanas, tienes que recodificar todo la UI de nuevo, debes reprogramarla por completo, analiza cuento tiempo va a llevarte y cual sera el costo, porque quizas comprar licencias de remote desktop le sea mas economico

    1. La capa DAL seria la equivalente al modelo?

    en un desarrollo web la capa de acceso a datos puede reutilizarla, no se ve afectara porque cambies la presentacion

    >>pero tengo entendido que no hay Datagridview en asp mvc, en ese caso que se usa?

    primero debes aprender mvc, porque esta pregunta es imposible de responder sino conoces sobre esta tecnologia

    despues hay varias alternativas puedes usar el WebGrid que es un helper de asp.net mvc, o usar componente javascript como ser el DataTable o el jqGrid

    >>En asp mvc puedo loguearme con el active directory del servidor?

    si el sitio donde hosteas el desarrollo web esta dentro del dominio, si puedes hacerlo

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Marcado como respuesta CrissR lunes, 6 de abril de 2015 15:59
    domingo, 5 de abril de 2015 14:21
  • Tu jefe no esta tan errado, hoy en día un website es una aplicación compleja hace un tiempo dejo de ser una forma de mostrar datos, imágenes y enlaces, hoy, creo que es uno de los objetivos de los desarrolladores es  tratar de emular una aplicación de escritorio  en un ambiente web, existe un lenguaje de programación de nombre JavaScript el cual deberás aprender a usar, de este lenguaje se desprende un framework que ha cautivado a todos , y es jquery, pero también hay un framework de javascript en particular que esta peleando la delantera y es AngularJS, que como dije antes en la carrera por emular una aplicación de escritorio Angular se abre camino con buenas perspectivas ya que fue diseñado con mucho soporte para desarrollo de PDAs, es una lástima que carece de soporte para trabajar en conjunto con otros framework pero supongo que pronto tendremos noticias.

    En relación al MVC, deberás interiorizar en el uso de ORMs, y un buen lugar donde se encuentran muchísimos ejemplos y actualizados es en el blog del Sr. Tuttini, creo que sería un buen comienzo para empezar a despejar dudas

    La capa datos?, bueno MVC apunta a un ciclo o circuito Modelo - Vista - Controlador en el modelo se ubican los tipos de datos propios(entidades) que ayudaran a compartir información con la vista, la Vista es la presentación al usuario, (botones,cajas de texto, animaciones , etc...) y en el Controlador digamos que es el corazón del circuito o la lógica, es aquí donde se negocia los requerimientos del usuario, creo que el Controlador es como un centro de empaquetado donde el producto son los datos (operaciones o consultas a bd) las cajas donde se guardan los productos serian las entidades o Modelo, y el destino final seria el Usuario o sea la vista.

    Un ejemplo para aclarar la cosa

    Vista solicita una lista de productos ---> controlador recibe la petición consulta la BD arma un modelo con los productos( usando por lo general un ORM ) ---> una vez finalizado el armado con la lista de producto es trasmitido a la vista, la vista recibe el modelo con los datos procesados y los muestra al usuario

    Nota: yo también me vi en tu situación y tuve que investigar mucho sobre el tema, hasta el dia  de hoy sigo tratando de actualizar mis conocimientos pero creo que vamos por buen camino espero que esta pequeña información le ayude a entender a muy grandes rasgos el funcionamiento de este paradigma

    Saludos y feliz Pascua  

     

    G. Poliovei

    • Marcado como respuesta CrissR lunes, 6 de abril de 2015 15:59
    domingo, 5 de abril de 2015 16:15
  • >>Su ultima respuesta fue como quien dice si no te gusto pues vete

    asi te trata tu jefe?, si el mio me dice eso ahi mismo le tiro la puerta en la cara y me voy, no podria tratar con alguien con quien no se puede dialogar, ni intercambiar opiniones

    >>Aparte nos pidió que los próximos desarrollos sean en ambiente web ya que le sale mas económico

    bien, si decide que una arquitectura web es la que debe realizarse no lo veo mal, pero de ahi a querer migrar de forma impulsiva desarrollos existentes sin evaluar riesgos no esta correcto

    no se que tan grande son las aplicacion winform que se requieren migrar, pero remarco que no sera algo que realicen en poco tiempo, menos aun si el equipo de desarrollo no tiene expriencia en esa tecnologia, va a tener su costo que alguien tendra que asumir, si tu jefe lo tiene en cuenta entonces genial planifica los sprint iterativos que seran necesarios y con esto conoceras cuantas semanas o meses requiere la migracion

    >>es buena idea de olvidarse de las aplicaciones de escritorio?

    depende, si la aplicacio requiere acceder a dispositivos del equipo de la pc del usuario no aplcia un desarrollo web, por ejeplo, una aplicacion que facture va a tener que seguir siendo winform o WPF ya que requiere acceder a scaner lectores de codigo de barra he impresoras fiscales, eso no se puede implementar con un desarrollo web

    >>Lo que no me quedo claro es donde va el acceso a datos

    el acceso a datos va despues del controlador, desde el controller invocas a la capa de negocio o datos si es que no tiene una capa de negocio

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Marcado como respuesta CrissR lunes, 6 de abril de 2015 15:59
    domingo, 5 de abril de 2015 18:27
  • >>para el acceso a datos debo crear otro proyecto?? Osea otra capa adicional?

    lo normal es definir las capas en diferentes proyectos

    mvc es una patron de presentacion, puedes desde este invocar otroas proyectos que representen las demas capas

    >>quedaría con Modelo-Vista-Controlador y Acceso a datos?

    si esa es una posibilidad, sino tienes logica de negocio podrias desd eel controller invocar a la capa de datos

    >>Crearia una biblioteca de clases adicional? o una clase nueva?

    si vas a usar capas seria un nuevo proyecto del tipo class library

    haya ejemplo que usan entity framework en donde directamente desde el action del controller acceden a los datos, tambien podrias ahcerlo de esa forma todo depende de que tan compleja es la logica que vayas a implementar

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Marcado como respuesta CrissR lunes, 6 de abril de 2015 15:59
    domingo, 5 de abril de 2015 21:08

Todas las respuestas

  • hola

    pero tu jefe sabe que migrar todo un desarrollo winform a web va a llevar mucho tiempo, no es algo que vas a lograr en un par de semanas, tienes que recodificar todo la UI de nuevo, debes reprogramarla por completo, analiza cuento tiempo va a llevarte y cual sera el costo, porque quizas comprar licencias de remote desktop le sea mas economico

    1. La capa DAL seria la equivalente al modelo?

    en un desarrollo web la capa de acceso a datos puede reutilizarla, no se ve afectara porque cambies la presentacion

    >>pero tengo entendido que no hay Datagridview en asp mvc, en ese caso que se usa?

    primero debes aprender mvc, porque esta pregunta es imposible de responder sino conoces sobre esta tecnologia

    despues hay varias alternativas puedes usar el WebGrid que es un helper de asp.net mvc, o usar componente javascript como ser el DataTable o el jqGrid

    >>En asp mvc puedo loguearme con el active directory del servidor?

    si el sitio donde hosteas el desarrollo web esta dentro del dominio, si puedes hacerlo

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Marcado como respuesta CrissR lunes, 6 de abril de 2015 15:59
    domingo, 5 de abril de 2015 14:21
  • hola

    pero tu jefe sabe que migrar todo un desarrollo winform a web va a llevar mucho tiempo, no es algo que vas a lograr en un par de semanas, tienes que recodificar todo la UI de nuevo, debes reprogramarla por completo, analiza cuento tiempo va a llevarte y cual sera el costo, porque quizas comprar licencias de remote desktop le sea mas economico

    1. La capa DAL seria la equivalente al modelo?

    en un desarrollo web la capa de acceso a datos puede reutilizarla, no se ve afectara porque cambies la presentacion

    >>pero tengo entendido que no hay Datagridview en asp mvc, en ese caso que se usa?

    primero debes aprender mvc, porque esta pregunta es imposible de responder sino conoces sobre esta tecnologia

    despues hay varias alternativas puedes usar el WebGrid que es un helper de asp.net mvc, o usar componente javascript como ser el DataTable o el jqGrid

    >>En asp mvc puedo loguearme con el active directory del servidor?

    si el sitio donde hosteas el desarrollo web esta dentro del dominio, si puedes hacerlo

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    Buen día Leandro, Intente convencer a mi jefe de eso pero es caso perdido. Su ultima respuesta fue como quien dice si no te gusto pues vete. Aparte nos pidió que los próximos desarrollos sean en ambiente web ya que le sale mas económico, (es buena idea de olvidarse de las aplicaciones de escritorio?)

    Estos días de semana santa he estado viendo varios tutoriales de ASP MVC.

    Modelo = No me queda claro es como si fuera la capa de entidades según vi.

    Vista = La capa grafica, me queda claro y fue interesante Razor.

    Controlador = Según vi con los métodos donde ejecuto acciones, operaciones, cálculos.

    Lo que no me quedo claro es donde va el acceso a datos, el DML?? se crea una capa adicional?? o va dentro de alguna del MVC??


    • Editado CrissR domingo, 5 de abril de 2015 15:06
    domingo, 5 de abril de 2015 15:05
  • Tu jefe no esta tan errado, hoy en día un website es una aplicación compleja hace un tiempo dejo de ser una forma de mostrar datos, imágenes y enlaces, hoy, creo que es uno de los objetivos de los desarrolladores es  tratar de emular una aplicación de escritorio  en un ambiente web, existe un lenguaje de programación de nombre JavaScript el cual deberás aprender a usar, de este lenguaje se desprende un framework que ha cautivado a todos , y es jquery, pero también hay un framework de javascript en particular que esta peleando la delantera y es AngularJS, que como dije antes en la carrera por emular una aplicación de escritorio Angular se abre camino con buenas perspectivas ya que fue diseñado con mucho soporte para desarrollo de PDAs, es una lástima que carece de soporte para trabajar en conjunto con otros framework pero supongo que pronto tendremos noticias.

    En relación al MVC, deberás interiorizar en el uso de ORMs, y un buen lugar donde se encuentran muchísimos ejemplos y actualizados es en el blog del Sr. Tuttini, creo que sería un buen comienzo para empezar a despejar dudas

    La capa datos?, bueno MVC apunta a un ciclo o circuito Modelo - Vista - Controlador en el modelo se ubican los tipos de datos propios(entidades) que ayudaran a compartir información con la vista, la Vista es la presentación al usuario, (botones,cajas de texto, animaciones , etc...) y en el Controlador digamos que es el corazón del circuito o la lógica, es aquí donde se negocia los requerimientos del usuario, creo que el Controlador es como un centro de empaquetado donde el producto son los datos (operaciones o consultas a bd) las cajas donde se guardan los productos serian las entidades o Modelo, y el destino final seria el Usuario o sea la vista.

    Un ejemplo para aclarar la cosa

    Vista solicita una lista de productos ---> controlador recibe la petición consulta la BD arma un modelo con los productos( usando por lo general un ORM ) ---> una vez finalizado el armado con la lista de producto es trasmitido a la vista, la vista recibe el modelo con los datos procesados y los muestra al usuario

    Nota: yo también me vi en tu situación y tuve que investigar mucho sobre el tema, hasta el dia  de hoy sigo tratando de actualizar mis conocimientos pero creo que vamos por buen camino espero que esta pequeña información le ayude a entender a muy grandes rasgos el funcionamiento de este paradigma

    Saludos y feliz Pascua  

     

    G. Poliovei

    • Marcado como respuesta CrissR lunes, 6 de abril de 2015 15:59
    domingo, 5 de abril de 2015 16:15
  • Hola George, Gracias por responder, Justo he mirado el Blog de Tuttini, es como mi biblia, el problema es que el usa entity Framework y hay quede yo, en mi caso hago consultas en SQL Server y en Informix, asi que el uso de entity Framework no es viable en mi caso.

    Según lo que me dices, La conexión a la BD, Los métodos donde tengo las consultas, eso también iria en el controlador??

    Si Uso angularJs o Jquery no tendría que usar ASP??

    domingo, 5 de abril de 2015 16:20
  • Yo diría que Angular aun no lo tomes en cuenta, ya que perderías mucho tiempo estudiando sobre el tema y según parece debes aportar una solución rápida, en cuanto a tu ultima pregunta recuerda que en un ambiente cliente servidor, el mundo se divide en dos partes

    Servidor (es la pc donde se realizan los procesos, peticiones, respuestas, etc)

    Cliente (es una instancia de un navegador web ejemplo IE o  Firefox)

    El cliente hace una solicitud en la Vista por ejemplo una lista de productos, esa solicitud es enviada a través de la RED al servidor o a la nube, el servidor procesa la información y devuelve un resultado

    el resultado puede ser la lista de productos propiamente dicha o un mensaje de error por un mal ingreso del usuario ejemplo una letra en vez de u numero

    ESTE IDA Y VUELTA se conoce como POSTBACK por lo tanto y según lo dicho el servidor antes de consultar la BD hace una verificación de rutina si sale mal, entonces devuelve un mensaje, pero todo esto sucede en el servidor y no en la PC del cliente, esto lleva a sobrecargar la solicitudes en el server y una demora en la respuesta, en una aplicación de escritorio esto no sucede , ahora bien de aquí surge la siguiente pregunta puedo yo realizar las verificaciones en el PC del Cliente y evitar un POSTBACK innecesario? la respuesta es SI SE PUEDE para ello necesitas usar JavaScript o un framework  derivado de este que puede ser  jquery

    con jquery tu puedes realizar toda clase de verificaciones antes de que la información sea enviada al servidor

      


    G. Poliovei

    domingo, 5 de abril de 2015 16:34
  • Y la conexión a la DB y Metodos de Consultas donde las debo dejar?? Controlador o Modelo?
    domingo, 5 de abril de 2015 16:36
  • Debes ver al modelo como un contenedor de datos, nada mas

    las operaciones, métodos, consultas a la bd etc es la tarea del Controlador

    ese modelo o contenedor de datos solo tendrán eso DATOS y no métodos ni otra cosa

    y lo maravilloso de MVC es que esa información que el controlador pone en el modelo es compartida hacia la vista  


    G. Poliovei

    domingo, 5 de abril de 2015 16:50
  • >>Su ultima respuesta fue como quien dice si no te gusto pues vete

    asi te trata tu jefe?, si el mio me dice eso ahi mismo le tiro la puerta en la cara y me voy, no podria tratar con alguien con quien no se puede dialogar, ni intercambiar opiniones

    >>Aparte nos pidió que los próximos desarrollos sean en ambiente web ya que le sale mas económico

    bien, si decide que una arquitectura web es la que debe realizarse no lo veo mal, pero de ahi a querer migrar de forma impulsiva desarrollos existentes sin evaluar riesgos no esta correcto

    no se que tan grande son las aplicacion winform que se requieren migrar, pero remarco que no sera algo que realicen en poco tiempo, menos aun si el equipo de desarrollo no tiene expriencia en esa tecnologia, va a tener su costo que alguien tendra que asumir, si tu jefe lo tiene en cuenta entonces genial planifica los sprint iterativos que seran necesarios y con esto conoceras cuantas semanas o meses requiere la migracion

    >>es buena idea de olvidarse de las aplicaciones de escritorio?

    depende, si la aplicacio requiere acceder a dispositivos del equipo de la pc del usuario no aplcia un desarrollo web, por ejeplo, una aplicacion que facture va a tener que seguir siendo winform o WPF ya que requiere acceder a scaner lectores de codigo de barra he impresoras fiscales, eso no se puede implementar con un desarrollo web

    >>Lo que no me quedo claro es donde va el acceso a datos

    el acceso a datos va despues del controlador, desde el controller invocas a la capa de negocio o datos si es que no tiene una capa de negocio

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Marcado como respuesta CrissR lunes, 6 de abril de 2015 15:59
    domingo, 5 de abril de 2015 18:27
  • >>Lo que no me quedo claro es donde va el acceso a datos

    el acceso a datos va despues del controlador, desde el controller invocas a la capa de negocio o datos si es que no tiene una capa de negocio

    Según te entiendo Leandro, para el acceso a datos debo crear otro proyecto?? Osea otra capa adicional??

    quedaría con Modelo-Vista-Controlador y Acceso a datos???

    Crearia una biblioteca de clases adicional? o una clase nueva?

    domingo, 5 de abril de 2015 20:25
  • >>para el acceso a datos debo crear otro proyecto?? Osea otra capa adicional?

    lo normal es definir las capas en diferentes proyectos

    mvc es una patron de presentacion, puedes desde este invocar otroas proyectos que representen las demas capas

    >>quedaría con Modelo-Vista-Controlador y Acceso a datos?

    si esa es una posibilidad, sino tienes logica de negocio podrias desd eel controller invocar a la capa de datos

    >>Crearia una biblioteca de clases adicional? o una clase nueva?

    si vas a usar capas seria un nuevo proyecto del tipo class library

    haya ejemplo que usan entity framework en donde directamente desde el action del controller acceden a los datos, tambien podrias ahcerlo de esa forma todo depende de que tan compleja es la logica que vayas a implementar

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Marcado como respuesta CrissR lunes, 6 de abril de 2015 15:59
    domingo, 5 de abril de 2015 21:08
  • >>para el acceso a datos debo crear otro proyecto?? Osea otra capa adicional?

    lo normal es definir las capas en diferentes proyectos

    mvc es una patron de presentacion, puedes desde este invocar otroas proyectos que representen las demas capas

    >>quedaría con Modelo-Vista-Controlador y Acceso a datos?

    si esa es una posibilidad, sino tienes logica de negocio podrias desd eel controller invocar a la capa de datos

    >>Crearia una biblioteca de clases adicional? o una clase nueva?

    si vas a usar capas seria un nuevo proyecto del tipo class library

    haya ejemplo que usan entity framework en donde directamente desde el action del controller acceden a los datos, tambien podrias ahcerlo de esa forma todo depende de que tan compleja es la logica que vayas a implementar

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    Hola Leandro pero el MVC se consideran capas??

    Yo me refiero a usar MVC y una capa de acceso a datos, es la única forma que se me ocurre para consultar a la Db o hay una mejor forma?

    lunes, 6 de abril de 2015 22:04
  • >>pero el MVC se consideran capas?

     mvc representa la capa de presentacion

    puedes a este unirle otros proyectos para las capas de negocio y datos

    >>me refiero a usar MVC y una capa de acceso a datos, es la única forma que se me ocurre para consultar a la Db o hay una mejor forma?

    si es es una buena forma, podrias tambien implementar el patron Repository he inyectar la dependencia para poder aplicar test en el codigo, eso seria aun mejor

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    martes, 7 de abril de 2015 1:21
  • >>pero el MVC se consideran capas?

     mvc representa la capa de presentacion

    puedes a este unirle otros proyectos para las capas de negocio y datos

    >>me refiero a usar MVC y una capa de acceso a datos, es la única forma que se me ocurre para consultar a la Db o hay una mejor forma?

    si es es una buena forma, podrias tambien implementar el patron Repository he inyectar la dependencia para poder aplicar test en el codigo, eso seria aun mejor

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    Perfecto, entonces le agregare el proyecto, me nace una duda, en el DAL los métodos recibían una entidad, tenia un capa entity, ahora que tengo mvc el modelo haría de capa entity cierto? Los veo muy similares.

    martes, 7 de abril de 2015 13:10
  • Hola, puede que también te interese considerar alguna solución como RemoteApps, que permiten ejecutar aplicaciones de Windows tradicionales desde diferentes clientes.

    Nosotros tenemos una situación similar, en la que hay que deslocalizar una serie de recursos y probablemente tiremos por ahí, porque es prácticamente inmediato.

    Para vendérselo a un jefe tan particular yo le mencionaría la palabra cloud y creo que quedaría seducido en su ignorancia. ;D

    Salu2

    martes, 7 de abril de 2015 13:52