2010-12-07 57 views

回答

8

这不是您可以自动执行的操作。

诀窍是,在这两种WinForms和web表单一个形式是通过一个普通的旧类表示。但是,每当您在asp.net webforms中为您的表单处理事件时,您都正在使用该类的全新实例。微软为尽可能多地尝试掩盖这个问题付出了很大的麻烦,但最终以与Winform相同的方式来考虑网络表单并不是一个好主意。

所以你绝对可以采取WinForms应用程序,并把它改写使用web表单,但它会是公正的:重写。

2

添加到以前的答案,请注意,是简单所以它取决于什么是在首位的winform没有在一个WebForm存在着一些WinForm的功能。

3

是的,这是可能的。如果您已经将应用程序设计得足够好,只需将UI层交换出来并将其替换,就可以相对容易地将Win Forms应用程序转换为Web窗体应用程序。您正在重新使用逻辑和数据层(这是所有功能所在的地方)。

很明显,你必须从头开始写一个新的UI层,但是,如果逻辑层写入不够好,是不会与从头编写整个应用程序相比,太多的工作。

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

我最近一直把原本是WinForms的应用程序的逻辑放到MVC中,获得响应速度的最大障碍是这样一个事实,即虽然编写得相当好,但逻辑层假定了一个有状态的环境。同样的应用程序也被重写为WPF(另一个有状态的环境),没有太多问题。

1

只是一个评论更多:重写取决于多少逻辑是在形式本身。有了恰当分离的关注点,只需将另一个UI插入到业务层即可。

的问题是,offcourse,90%的应用程序是没有什么更多的有点复杂CRUD UI的(没有真正的业务逻辑)...

1

转换一个桌面应用程序的Web应用程序有几个挑战:

  • 硬件访问
  • Windows API调用的应用程序状态的
  • 管理
  • 访问文件系统
  • 访问控制
  • 使用桌面特定的UI/UX /控件

有选择桌面应用程序转换以自动化的方式,这些可以转换两种用户界面和应用程序的代码:

即使使用自动迁移工具,在大多数情况下,您也必须执行大量手动努力让应用程序以与原始应用程序相同的方式工作。

其中一些工具将有助于实现不同的目标,第一个工具将帮助您仅将UI转换为WebForms,最后两个工具将生成ASP.NET MVC,一个使用自定义运行时和一组库以及其他与常用的HTML/JS/CSS库,如Kendo MVVM,Kendo UI,AngularJS或Bootstrap等。 这些工具将提供一种解决方案,将比从头开始在网络上编写应用程序更快,并将提供解决方案或至少指导方针来应对前面提到的挑战。但是,与为Web设计的应用程序存在一些差异,仅仅是因为体系结构不同,通常为桌面应用程序编写代码的方式假定不能为网络应用程序假设。

声明:我为构建WebMAP2的Mobilize.Net工作。

相关问题