Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
可以在.NET中将WinForm转换为WebForm吗?_.net_Asp.net_Winforms_Webforms - Fatal编程技术网

可以在.NET中将WinForm转换为WebForm吗?

可以在.NET中将WinForm转换为WebForm吗?,.net,asp.net,winforms,webforms,.net,Asp.net,Winforms,Webforms,我不认为这是可能的,但我只是和一位同事聊天,她说她以前做过。她在拉我的链条吗?这不是你能自动完成的事情 诀窍在于Winforms和Webforms都使用普通的旧类表示表单。然而,与Winforms相比,Webforms中的类实例是短暂的;每个Webforms类实例只表示一个HTTP请求,而不是像Winforms那样表示表单的整个生命周期。每次在ASP.NETWebForms中处理窗体的事件时,您都在处理该类的一个全新实例。微软费了很大的劲才尽可能地为这个问题做掩护,但最终,用Winform的术语

我不认为这是可能的,但我只是和一位同事聊天,她说她以前做过。她在拉我的链条吗?

这不是你能自动完成的事情

诀窍在于Winforms和Webforms都使用普通的旧类表示表单。然而,与Winforms相比,Webforms中的类实例是短暂的;每个Webforms类实例只表示一个HTTP请求,而不是像Winforms那样表示表单的整个生命周期。每次在ASP.NETWebForms中处理窗体的事件时,您都在处理该类的一个全新实例。微软费了很大的劲才尽可能地为这个问题做掩护,但最终,用Winform的术语来看待Webform并不是一个好主意


您当然可以使用Winforms应用程序并重写它以使用Webforms,但这只是一次重写。

除了前面的答案,请注意,有些winform功能根本不存在于webform中,因此它首先取决于winform中的内容。

是的,这是可能的。如果您设计的应用程序足够好,那么将Win Forms应用程序转换为web Forms应用程序应该相对容易,只需替换UI层即可。您正在使用逻辑层和数据层(这是所有功能的所在)

显然,您必须从头开始编写一个新的UI层,但是,如果逻辑层编写得足够好,那么与从头开始编写整个应用程序相比,这不会是太多的工作

然而,即使你有一个写得很好的应用程序,也存在一些问题。逻辑层可以假设一个有状态的应用程序,在这种情况下,它可能依赖于延迟加载。在web应用程序中,您有一个在请求和响应上运行的无状态模型。在这种情况下,您将确切地知道您需要什么,并且可以加载您需要的位,而不是以后可能需要的其他东西。。。因为稍后将是一个不同的请求/响应周期,您现在收集的所有数据将在当前响应完成后立即删除


我最近一直在把一个原本是WinForms的应用程序的逻辑放到MVC中,获得响应速度的最大障碍是,尽管写得相当好,但逻辑层假设了一个有状态的环境。同样的应用程序也在为WPF(另一个有状态的环境)重新编写,没有那么多问题。

还有一点需要说明:重写取决于表单本身有多少逻辑。对于适当分离的关注点,只需将另一个UI插入业务层即可


当然,问题在于,90%的应用程序并没有比CRUD UI更复杂的东西(没有真正的业务逻辑).

将桌面应用程序转换为web应用程序有几个挑战:

  • 获取硬件
  • Windows API调用
  • 应用程序状态的管理
  • 访问文件系统
  • 访问控制
  • 使用特定于桌面的UI/UX/控件
有自动转换桌面应用程序的选项,这些选项可以转换应用程序的UI和代码:

  • (显然已不存在)
即使在使用自动迁移工具时,在大多数情况下,您也必须执行大量的手动工作,才能使应用程序以与原始应用程序相同的方式工作

其中一些工具将有助于实现不同的目标,第一个工具将帮助您仅将UI转换为WebForms,最后两个工具将生成ASP.NET MVC,一个工具使用自定义运行时和库集,另一个工具使用常见的HTML/JS/CSS库,如Kendo MVVM、Kendo UI、AngularJS或Bootstrap等。 这些工具将提供一个比从头开始在web上编写应用程序更快的解决方案,并将提供解决方案或至少指导方针来应对前面提到的挑战。然而,与为Web设计的应用程序相比,会有一些不同,这仅仅是因为架构不同,并且通常为桌面应用程序编写代码的方式假定了Web应用程序无法假定的事情


免责声明:我为Movesite.Net工作,他创建了WebMAP。

可能吗?对不写任何新代码就可以吗?不(如果可以的话,我想你不会喜欢结果的)。我想VisualWebGUI已经破产了。