Porting C # Windows GUI a C # Aplicación web: ¿Cómo obtener el trabajo fuera de la caja para Win, Mac & Linux?

StackOverflow https://stackoverflow.com//questions/9648555

  •  10-12-2019
  •  | 
  •  

Pregunta

Me gustaría reescribir una aplicación que actualmente funciona como GUI de Windows en C #. El problema es que funciona bien en Windows, pero no está adaptado para Mac y Linux debido a los problemas de la GUI con MONO.

Por lo tanto, mi idea, debía continuar con C # (necesaria debido a un programa secundario esencial que necesita ejecutar C # y no puede ser portada) e intente reescribirlo como una aplicación web que cualquier usuario en Windows, Mac o Linux podría acceder Fácilmente y hacerlo funcionar.

También es importante que mi aplicación permanezca funcionando "fuera de la caja" porque apunta a una alta accesibilidad.

He buscado soluciones como:

  • kayakhttp ¡Pero no es compatible con los datos de publicación! (necesario para una gui web)
  • xsp2 de Mono y haz una aplicación web ASP.NET MVC, pero ¿realmente funcionará con mi aplicación web para hacer una aplicación fuera de la caja?

    Alternativamente, ¿tiene alguna otra idea para que tenga una aplicación web de C # que trabaje fuera de la casilla para los usuarios finales? Lo único necesario sería instalar Mono en Mac y Linux.

    Muchas gracias por tu ayuda.

    Editar 1 : Me doy cuenta de que no he explicado todos los aspectos correctamente. De hecho, hay 2 aplicaciones en mi proyecto:

    • la aplicación central que está escrita en C # y es demasiado grande para ser portada o reescrita y, por lo tanto, debe usar Mono para ejecutar en Mac y Linux
    • My GUI Solicitud utilizando formularios de Windows que se escribe en C # también y controla la aplicación central

      Mi objetivo es convertir mi aplicación GUI en una aplicación de aplicación web, por lo que no hay más que Windows Forms GUI HASSLE en MAC y Linux.

¿Fue útil?

Solución

¿Es necesario que su aplicación básica se ejecute en el cliente?

Si no, entonces el mejor enfoque es volver a escribir todo como una aplicación web (ASP.NET) que se va a ejecutar en un servidor Windows. Los usuarios en todas sus plataformas de destino accederán a esta aplicación a través de un navegador web.

En caso afirmativo, entonces una aplicación web no es una buena idea. Realmente no desea requerir un servidor web en sus clientes. Tienes dos posibilidades:

  • Eche un vistazo a la kits de herramientas de GUI disponible para MONO y seleccione uno que esté disponible en todos Sus plataformas de destino para evitar tener diferentes extremos frontales para cada una de sus plataformas.
  • Para garantizar la mejor experiencia de usuario en todas las plataformas, debe elegir el kit de herramientas de GUI nativo para cada una de las plataformas y escribir un extremo frontal diferente para ellos: usando Mono o usando un entorno de desarrollo nativo siempre que su aplicación básica tenga una interfaz a la que se le puede acceder (por ejemplo, línea de comandos o similares).

Otros consejos

Esta es una pregunta duplicada, pero no tengo tiempo para encontrar el duplicado.

brevemente, la respuesta es: no hagas esto. No puede traducir una aplicación de escritorio a una aplicación web de una a una base: los dos paradigmas son demasiado diferentes.

Recomiendo en su lugar refactorar su aplicación actual para eliminar todas las dependencias en la GUI. Luego, escriba una aplicación web totalmente nueva para cumplir con los requisitos, y haga que la aplicación web llame al código que se refactore de la aplicación de escritorio.

Sé consciente de la gran diferencia oculta entre las dos plataformas: la aplicación web se ejecutará en un servidor. Será utilizado por múltiples usuarios al mismo tiempo, y por múltiples hilos al mismo tiempo. Mientras está refactorizado, asegúrese de observar cualquier código que sea sensible a la diferencia. Por ejemplo, el código que utiliza los campos de miembros de static ahora podría funcionar en la aplicación de escritorio porque solo hay un usuario a la vez. En una aplicación web, ese static se comparará en todos los usuarios y todos los hilos.

Esto puede no ser lo que tenías en mente.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top