将C#WINDOWS GUI移植到c#web应用程序 :如何让它开箱即用的Win,Mac和Linux?

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

  •  10-12-2019
  •  | 
  •  

我想重写一个应用程序,目前在C#中作为Windows GUI工作。问题是,它在Windows上运行良好,但由于Mono的GUI问题,不适用于Mac和Linux。

所以我的想法是继续使用C#(因为需要运行c#并且无法移植的基本子程序而需要),并尝试将其重写为windows,Mac或Linux上的任何用户都可以轻松访问并使其工

同样重要的是,我的应用程序仍然工作"开箱即用",因为它的目标是高可访问性。

我一直在寻找解决方案,如 :

  • KayakHTTP 但它不支持POST数据!(web GUI所需)
  • 来自Mono的XSP2并制作一个ASP.NET MVC web应用程序,但它真的会与我的web应用程序一起工作以制作开箱即用的应用程序吗?

或者,您是否有任何其他想法让我为最终用户提供开箱即用的C#web应用程序?唯一需要的是在Mac和Linux上安装Mono。

谢谢你的帮助。

编辑1 :我意识到我没有正确解释所有方面。事实上,我的项目中有2个应用程序 :

  • 核心应用程序是用C#编写的,太大而无法移植或重写,因此必须使用Mono在Mac和Linux上运行
  • 我的GUI应用程序使用Windows窗体,它也是用C#编写的,并控制核心应用程序

我的目标是将我的GUI应用程序转换为web应用程序应用程序,以便在Mac和Linux上不再有Windows Forms GUI麻烦。

有帮助吗?

解决方案

是否有必要在客户端上运行核心应用程序?

如果不是,那么最好的方法是将所有内容重写为Web(ASP.NET)应用程序,该应用程序将在Windows服务器上运行。所有目标平台上的用户将通过Web浏览器访问此应用程序。

如果是,那么Web应用程序不是一个好主意。您真的不想在客户端上需要Web服务器。你有两种可能性:

其他提示

这是一个重复的问题,但我没有时间找到重复的。

简单地说,答案是:别这样您无法将桌面应用程序一对一地转换为web应用程序:这两种范式太不同了。

我建议改为重构当前应用程序以删除GUI上的所有依赖项。然后,编写一个全新的web应用程序以满足要求,并让web应用程序调用您从桌面应用程序中重构的代码。

请注意两个平台之间隐藏的巨大差异:web应用程序将在服务器上运行。它将在同一时间被多个用户使用,并在同一时间被多个线程使用。在重构时,一定要注意任何对差异敏感的代码。例如,使用 static 成员字段现在可以在桌面应用程序中工作,因为一次只有一个用户。在web应用程序中, static 将在所有用户和所有线程之间共享。

这可能不是你所想的。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top