Este escrito ha sido aprobado por nuestros especialistas así aseguramos la exactitud de nuestro post.
Solución:
No es algo que puedas hacer automáticamente.
El truco es que tanto Winforms como Webforms representan un formulario usando una clase simple y antigua. Sin embargo, las instancias de la clase en Webforms son de corta duración en comparación con Winforms; cada instancia de clase de Webforms representa solo una solicitud HTTP, en lugar de toda la vida útil del formulario, como con Winforms. Cada vez que maneja un evento para su formulario en ASP.Net Webforms, está trabajando con una nueva instancia de la clase. Microsoft se tomó muchas molestias para tratar de cubrir este problema tanto como fuera posible, pero al final no es una buena idea pensar en un Webform en los mismos términos que en un Winform.
Definitivamente puede tomar una aplicación Winforms y reescribirla para usar Webforms, pero será solo eso: una reescritura.
Sí, es posible. Si ha diseñado la aplicación lo suficientemente bien, debería ser relativamente fácil convertir una aplicación Win Forms en una aplicación de formularios web simplemente intercambiando la capa de la interfaz de usuario y reemplazándola. Está reutilizando las capas de lógica y datos (que es donde estaría toda la funcionalidad).
Obviamente, debe escribir una nueva capa de interfaz de usuario desde cero, pero, si la capa lógica está escrita lo suficientemente bien, no será demasiado trabajo en comparación con escribir toda la aplicación nuevamente desde cero.
Sin embargo, hay algunas trampas incluso si tiene una aplicación muy bien escrita. La capa lógica puede asumir una aplicación con estado, en cuyo caso puede depender de la carga diferida. En una aplicación web, tiene un modelo sin estado que se ejecuta en solicitudes y respuestas. En ese escenario, sabría exactamente lo que necesita por adelantado y puede cargar solo los bits que necesita y no otras cosas que puedan ser necesarias más adelante… porque más adelante habrá un ciclo de solicitud/respuesta diferente y todos los datos que recopilar ahora se eliminará tan pronto como se complete la respuesta actual.
Recientemente coloqué la lógica de una aplicación que originalmente era WinForms en MVC y la mayor barrera para obtener una velocidad de respuesta es el hecho de que, aunque razonablemente bien escrita, la capa lógica asumió un entorno con estado. La misma aplicación también se está reescribiendo para WPF (otro entorno con estado) sin tantos problemas.
Convertir una aplicación de escritorio en una aplicación web tiene varios desafíos:
- Acceso al hardware
- Llamadas a la API de Windows
- Gestión del estado de la aplicación
- Acceso al sistema de archivos
- Control de acceso
- Uso de UI/UX/controles específicos de escritorio
Hay opciones para convertir aplicaciones de escritorio de forma automatizada, estas pueden convertir tanto la interfaz de usuario como el código de la aplicación:
- http://www.codeproject.com/Articles/9307/Converting-WinForms-Web-Forms-using-CodeDom
- http://www.mobilize.net/webmap
- http://visualwebgui.com/ (aparentemente ya no existe)
Incluso cuando utilice herramientas de migración automatizadas, en la mayoría de los casos tendrá que realizar una cantidad significativa de trabajo manual para que la aplicación funcione de la misma manera que la original.
Algunas de estas herramientas ayudarán con diferentes objetivos, la primera lo ayudará a convertir solo la interfaz de usuario y a WebForms, las dos últimas generarán ASP.NET MVC, una usando un tiempo de ejecución personalizado y un conjunto de bibliotecas y la otra con HTML común. Bibliotecas /JS/CSS como Kendo MVVM, Kendo UI, AngularJS o Bootstrap entre otras. Estas herramientas brindarán una solución que será más rápida que escribir la aplicación en la web desde cero y brindarán soluciones o al menos pautas para abordar los desafíos mencionados anteriormente. Sin embargo, habrá algunas diferencias con una aplicación que fue diseñada para la Web, simplemente porque las arquitecturas son diferentes y, por lo general, la forma de escribir el código para una aplicación de escritorio asume cosas que no se pueden asumir para una web.
Descargo de responsabilidad: trabajo para Mobilize.Net, que creó WebMAP.
Si para ti ha sido provechoso este post, nos gustaría que lo compartas con otros programadores de esta forma nos ayudas a dar difusión a nuestro contenido.