2010-12-07 13 views
7

No pensé que fuera posible, pero solo estaba hablando con un compañero de trabajo que dijo que lo había hecho antes. ¿Ella está tirando de mi cadena?¿Es posible convertir un WinForm a un WebForm en .NET?

+1

¿Posible? Sí. Posible sin escribir ningún código nuevo? No (y no creo que te gustaría el resultado si pudieras). –

Respuesta

8

No es algo que pueda hacer automáticamente.

El truco es que, tanto en las formas de pago como en las formas web, una forma se representa mediante una clase antigua simple. Sin embargo, 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 intentar cubrir este problema lo más posible, pero al final no es una buena idea pensar en un formulario web en los mismos términos que un winform.

Así que definitivamente puede tomar una aplicación de winforms y volver a escribirla para usar formularios web, pero será solo eso: una reescritura.

2

Agregando a respuestas anteriores, tenga en cuenta que hay algunas funcionalidades de winform que simplemente no existen en un formulario web, por lo que depende en primer lugar de qué se trate exactamente.

3

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 a una aplicación de formularios web simplemente intercambiando la capa UI y reemplazándola. Está reutilizando la lógica y las capas de datos (que es donde estaría toda la funcionalidad).

Obviamente, tiene que escribir una nueva capa UI desde cero, pero, si la capa lógica está escrita lo suficientemente bien, no va a ser demasiado trabajo en comparación con volver a escribir toda la aplicación desde cero.

Sin embargo, hay algunos problemas 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 pueden necesitarse más adelante ... porque más adelante habrá un ciclo de solicitud/respuesta diferente y todos los datos que recoger ahora se eliminará tan pronto como se complete la respuesta actual.

Recientemente he puesto 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 vuelve a escribir para WPF (otro entorno con estado) sin tantos problemas.

1

tan solo un comentario más: la reescritura depende de la cantidad de lógica que tenga el formulario en sí. Con preocupaciones separadas, solo es cuestión de conectar otra UI en la capa empresarial.

El problema es, por supuesto, que el 90% de las aplicaciones no es nada más que algo complejo de UU de CRUD (sin lógica comercial real) ...

1

conversión de una aplicación de escritorio para una aplicación web tiene varios retos:

  • acceso al hardware
  • API
  • Windows llama
  • Gestión del estado de la aplicación
  • acceso al sistema de archivos
  • Control de acceso
  • Uso de UI/UX/controles específicos del escritorio

Hay opciones para convertir las aplicaciones de escritorio de una forma automática, éstos se pueden convertir tanto la interfaz de usuario y el código de la aplicación:

Incluso cuando se utilizan herramientas de migración automática, en la mayoría de los casos tendrá que realizar una gran cantidad de manual trabaje para que la aplicación funcione de la misma manera que la original.

Algunas de estas herramientas le ayudarán con diferentes objetivos, la primera le ayudará a convertir solo la interfaz de usuario y WebForms, las últimas dos generarán ASP.NET MVC, una utilizando un tiempo de ejecución personalizado y un conjunto de bibliotecas y otro con bibliotecas HTML/JS/CSS comunes como Kendo MVVM, Kendo UI, AngularJS o Bootstrap, entre otras. Estas herramientas proporcionarán una solución que será más rápida que escribir la aplicación en la web desde cero y proporcionarán soluciones o al menos directrices para abordar los desafíos mencionados anteriormente. Sin embargo, habrá algunas diferencias con respecto a una aplicación que fue diseñada para la Web, simplemente porque las arquitecturas son diferentes y generalmente la forma de escribir el código para una aplicación de escritorio supone algo que no se puede asumir para una web.

Descargo de responsabilidad: Trabajo para Mobilize.Net, quien creó WebMAP2.

Cuestiones relacionadas