1

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

所以我的想法是继续使用 C#(因为需要运行 C# 并且无法移植的基本子程序需要)并尝试将其重写为 Windows、Mac 或 Linux 上的任何用户都可以轻松访问并制作的 Web 应用程序这行得通。

我的应用程序保持“开箱即用”的工作也很重要,因为它的目标是高可访问性。

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

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

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

非常感谢您的帮助。

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

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

我的目标是将我的 GUI 应用程序转换为 Web 应用程序应用程序,这样 Mac 和 Linux 上的 Windows 窗体 GUI 就不再麻烦了。

4

2 回答 2

1

您的核心应用程序是否需要在客户端上运行?

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

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

  • 查看可用于单声道的GUI 工具包,并选择一个可在所有目标平台上使用的工具包,以避免每个平台都有不同的前端。
  • 为了确保在所有平台上获得最佳用户体验,您应该为每个平台选择原生 GUI 工具包并为它们编写不同的前端:使用 Mono 或使用原生开发环境,只要您的核心应用程序具有可以从它访问(例如命令行或类似的)。
于 2012-03-10T18:53:07.367 回答
0

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

简而言之,答案是:不要这样做。您不能在一对一的基础上将桌面应用程序转换为 Web 应用程序:这两种范式太不同了。

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

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

这可能不是你的想法。

于 2012-03-10T22:42:01.377 回答