在.NET中,将WinForm转换为WebForm是否可行?

10

我原本认为这是不可能的,但刚刚我跟一个同事说话,她说她以前做过。她是在开玩笑吗?


1
可能吗?是的。不写任何新代码就能实现吗?不行(如果可以,我认为你也不会喜欢结果)。 - Tim Robinson
5个回答

10

这不是一件可以自动完成的事情。

诀窍在于,无论是Winforms还是Webforms都使用普通的类来表示表单。然而,在Webforms中,类的实例与Winforms相比生命周期较短;每个Webforms类实例仅代表一个HTTP请求,而不像Winforms一样代表整个表单的生命周期。每当您在ASP.Net Webforms中处理表单事件时,都会使用一个全新的类实例。微软花了很多力气来尽可能地弥补这个问题,但最终将Webform视为Winform的同一术语并不是一个好主意。

您肯定可以将Winforms应用程序重写为使用Webforms,但它只是一次重写。


5
是的,这是可能的。如果您设计的应用程序足够好,通过仅交换用户界面层并替换它,将Win Forms应用程序转换为Web Forms应用程序应该相对容易。您正在重复使用逻辑和数据层(这是所有功能的地方)。
显然,您必须从头开始编写新的用户界面层,但是,如果逻辑层编写得足够好,与从头开始编写整个应用程序相比,这不会太费力。
然而,即使您有一个编写非常良好的应用程序,也会存在一些捆绑问题。逻辑层可能假定为有状态应用程序,因此可能依赖于延迟加载。在Web应用程序中,您有一个无状态模型,它在请求和响应上运行。在这种情况下,您需要提前确切地了解您所需的内容,并且可以仅加载您需要的部分,而不是可能稍后需要的其他内容......因为稍后将是不同的请求/响应周期,现在收集的所有数据都将在当前响应完成后删除。
我最近将原来是WinForms的应用程序的逻辑放入MVC中,最大的障碍是逻辑层假定有一个有状态环境,导致响应速度很慢。同样的应用程序也正在为WPF(另一个有状态的环境)重新编写,但问题不会那么多。

4
将桌面应用程序转换为 Web 应用程序存在多个挑战:
  • 访问硬件
  • Windows API 调用
  • 管理应用程序状态
  • 访问文件系统
  • 访问控制
  • 使用桌面特定的 UI/UX/控件
有几种选项可以自动方式转换桌面应用程序,这些选项可以转换应用程序的 UI 和代码: 即使使用自动迁移工具,在大多数情况下,您仍需执行大量手动工作才能使应用程序以与原来相同的方式运行。
一些工具将有助于不同的目标,第一个工具将帮助您仅转换UI和WebForms,最后两个工具将生成ASP.NET MVC,其中一个使用自定义运行时和一组库,另一个使用常见的HTML/JS/CSS库,如Kendo MVVM、Kendo UI、AngularJS或Bootstrap等。这些工具将提供比从头开始编写应用程序更快的解决方案,并提供解决方案或至少指导如何解决上述挑战的指南。然而,与为Web设计的应用程序相比,会有一些差异,因为架构不同,通常为桌面应用程序编写代码的方式假定无法假定Web应用程序的事情。
免责声明:我在Mobilize.Net工作,他们构建了WebMAP。

我猜测Visual Web GUI已经停业了。 - NoChance

2

在之前的回答中,需要注意的是,有些winform功能在webform中根本不存在,因此这取决于首先在winform中有什么。


1

再多说一句:重写取决于表单本身有多少逻辑。如果关注点分离得当,只需要将另一个 UI 插入到业务层即可。

问题在于,当然,90% 的应用程序仅仅是相对复杂的 CRUD UI(没有真正的业务逻辑)...


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接