C#转换和#x27;旧的';WinForms到Web应用程序,还是在新平台中重写?

C#转换和#x27;旧的';WinForms到Web应用程序,还是在新平台中重写?,c#,wpf,winforms,silverlight,C#,Wpf,Winforms,Silverlight,我正在开发WinForms应用程序。到目前为止,我已经完成了大约50%的工作 我是否可以在不重写整个GUI的情况下将其转换为Web应用程序 如果没有,我应该使用什么平台(重写我的项目)来轻松实现Web和Windows UI 在过去的三年里,这门学科有什么新的东西吗 我当然知道WPF和Silverlight非常相似,但我不确定这是否是bust解决方案。这将取决于您构建架构的方式。WPF和Silverlight可互换的主要原因是它们倾向于使用MVVM模式和体系结构(也包括PRISM) 从理论上讲,

我正在开发WinForms应用程序。到目前为止,我已经完成了大约50%的工作

我是否可以在不重写整个GUI的情况下将其转换为Web应用程序

如果没有,我应该使用什么平台(重写我的项目)来轻松实现Web和Windows UI

在过去的三年里,这门学科有什么新的东西吗


我当然知道WPF和Silverlight非常相似,但我不确定这是否是bust解决方案。

这将取决于您构建架构的方式。WPF和Silverlight可互换的主要原因是它们倾向于使用MVVM模式和体系结构(也包括PRISM)

从理论上讲,如果你遵循这个模式,你可以在你喜欢的时候把前面放下,然后用完全不同的东西来设计它。这被称为:

使您的UI松散耦合

如果您想将前端显示切换到web应用程序,显然必须将UI层更改为使用
HTML
,理论上,如果您为应用程序提供了合适的体系结构,那么您的业务逻辑应该能够保持不变,然而,如果您在多个
Windows窗体中绑定了大量逻辑,恐怕您将经历一个漫长而痛苦的迁移过程,并伴随着许多错误

把你的申请想象成一栋房子——你有房子的主要基础(隔热层、砖块等),你可能希望不时地改变这些基础,以使结构更新,但是基本基础通常保持不变。然而,你可以随心所欲地装饰房子,而不影响基本面(很抱歉,这个比喻不好)

希望这能有所帮助

编辑:


我刚刚注意到,您想知道在项目中使用的最佳体系结构,就我个人而言,我知道我将使用PRISM、WPF和MVVM-您可以

这将取决于您构建体系结构的方式。WPF和Silverlight可互换的主要原因是它们倾向于使用MVVM模式和体系结构(也包括PRISM)

从理论上讲,如果你遵循这个模式,你可以在你喜欢的时候把前面放下,然后用完全不同的东西来设计它。这被称为:

使您的UI松散耦合

如果您想将前端显示切换到web应用程序,显然必须将UI层更改为使用
HTML
,理论上,如果您为应用程序提供了合适的体系结构,那么您的业务逻辑应该能够保持不变,然而,如果您在多个
Windows窗体中绑定了大量逻辑,恐怕您将经历一个漫长而痛苦的迁移过程,并伴随着许多错误

把你的申请想象成一栋房子——你有房子的主要基础(隔热层、砖块等),你可能希望不时地改变这些基础,以使结构更新,但是基本基础通常保持不变。然而,你可以随心所欲地装饰房子,而不影响基本面(很抱歉,这个比喻不好)

希望这能有所帮助

编辑:


我刚刚注意到,您想知道项目中使用的最佳体系结构,就我个人而言,我知道我将使用PRISM、WPF和MVVM-您可以

哦,我绝对知道如何将BL与GUI分离,等等。。但尽管如此,我还是在GUI本身上做了很多努力。所以,使用WPF/Silverlight和PRISM,我会把所有东西都写一次,然后我会同时拥有Web和桌面应用程序?“这太令人印象深刻了!”莱特曼的确如此,当我们转换到PRISM时,我们本来打算为我们的项目做这件事的,但你必须按照特定的顺序来做,因为我们已经开始了这个项目,很遗憾,它无法实现。我甚至认为在某些情况下你可以把它编译成Windows Phone!哦,我绝对知道如何将BL从GUI中分离出来。。但尽管如此,我还是在GUI本身上做了很多努力。所以,使用WPF/Silverlight和PRISM,我会把所有东西都写一次,然后我会同时拥有Web和桌面应用程序?“这太令人印象深刻了!”莱特曼的确如此,当我们转换到PRISM时,我们本来打算为我们的项目做这件事的,但你必须按照特定的顺序来做,因为我们已经开始了这个项目,很遗憾,它无法实现。我甚至认为在某些情况下你可以把它编译成Windows Phone!