大型UI应用程序的未来验证—使用2008功能包的MFC,或C#和Winforms? 我的公司已经开发了一个长期的产品,使用VisualC++中的MFC作为UI开发的事实标准。我们的代码库包含大量必须保持运行的遗留/过时代码。其中一些代码比我早(最初是在70年代后期编写的),我们团队的一些成员仍然使用VisualStudio6

大型UI应用程序的未来验证—使用2008功能包的MFC,或C#和Winforms? 我的公司已经开发了一个长期的产品,使用VisualC++中的MFC作为UI开发的事实标准。我们的代码库包含大量必须保持运行的遗留/过时代码。其中一些代码比我早(最初是在70年代后期编写的),我们团队的一些成员仍然使用VisualStudio6,c#,c++,winforms,mfc,user-interface,C#,C++,Winforms,Mfc,User Interface,然而,谢天谢地,内部已经得出一个结论:与竞争对手相比,我们的产品看起来有些过时,需要采取一些措施 我目前正在开发UI的一个新领域,它与产品的其他部分完全不同。因此,我有机会尝试“新”技术堆栈作为一种试验场,然后才开始对UI的其余部分进行漫长的迁移 我在业余时间使用C#with Windows窗体和.net framework已经有一段时间了,我很喜欢它,但我有点担心互操作带来的麻烦。虽然UI的这个特定分支不需要与传统的C++代码库进行大量的互操作,但我可以预见到这将成为未来的问题。 另一种选择是

然而,谢天谢地,内部已经得出一个结论:与竞争对手相比,我们的产品看起来有些过时,需要采取一些措施

我目前正在开发UI的一个新领域,它与产品的其他部分完全不同。因此,我有机会尝试“新”技术堆栈作为一种试验场,然后才开始对UI的其余部分进行漫长的迁移

我在业余时间使用C#with Windows窗体和.net framework已经有一段时间了,我很喜欢它,但我有点担心互操作带来的麻烦。虽然UI的这个特定分支不需要与传统的C++代码库进行大量的互操作,但我可以预见到这将成为未来的问题。 另一种选择是继续使用MFC,但尝试利用VS2008附带的新功能包。我想这是最简单的选择,但我担心的是长寿和不利用.net的优点

那么,我该选哪一个呢?我们是一个小团队,所以我的建议很可能会被接受为我们未来发展的方向——我想把它做好


MFC死了吗?C#/Winforms是前进的方向吗?还有什么我完全不知道的吗?非常感谢您的帮助

>P> >如果你想移动到C,所以.NET,我会考虑Windows演示基础而不是WINFALSE。WPF是.NET中智能客户端的未来,如果你想制作浏览器托管的Silverlight应用程序,你所学到的技能可以重用。

我同意WPF的观点。基于标记/XML的UI似乎比WinForms更易于移植

我想你也必须考虑一下你的团队,如果没有太多的C语言技能,那么这是一个因素,但是未来MFC开发者的市场正在减少,C的增长。


也许某种零碎的方法是可能的?我曾经参与过将遗留应用程序重新编码到C#上的工作,而且所花的时间总是比您估计的要长,特别是如果您保留了一些遗留代码,或者您的团队对C#不太熟悉。

这取决于应用程序和客户安装.NET的意愿(并非所有客户都是),我肯定会选择WinForms或WPF。用C++代码将互不相关的代码重构为类库,使用C++/CLI(如您在标签选择中所注意到的),大大简化了C++的互操作。 WPF的唯一问题是可能很难保持当前的外观。移动到WinForms可以在保持GUI当前外观的同时完成。WPF使用了这样一种不同的模型,试图保持当前的布局可能是徒劳的,而且肯定不符合WPF的精神。当运行多个WPF进程时,WPF在Vista之前的机器上的性能显然也很差


我的建议是找出你的客户在用什么。如果大多数人已经迁移到Vista,并且您的团队准备投入大量的GUI工作,我会说跳过WinForms,迁移到WPF。否则,一定要认真对待WinForms。在这两种情况下,C++/CLI中的类库都是解决互操作问题的答案。

您没有提供太多关于遗留代码的功能或其结构的详细信息。如果您有某些性能标准,您可能希望在C++中维护一些代码库。如果旧代码以正确的方式公开,您将可以更轻松地与之进行互操作—您可以从C#today调用现有的代码库吗?也许值得考虑一个项目,以获得正确的结构

关于WPF,您可以认为WinForms可能更合适。迁移到WinForms对您和您的团队来说是一大步。也许他们对迁移到WinForms更为满意?它有更好的文档记录,在市场上有更多的经验,如果您仍然需要支持windows 2000客户端,它将非常有用

你可能会对我感兴趣


<>其他一些要考虑的是,但我没有经验。

< P>谢谢你们的回应,看到一般的共识遵循我的思路是令人安心的。幸运的是,我们的软件也运行在我们自己的定制硬件上(用于广播行业)——因此,操作系统的选择实际上是我们自己的,是推给我们的客户的。目前我们正在运行XP/2000,但我可以看到很快就要升级到Vista的愿望

然而,我们还需要对GPU性能保持非常良好的控制,我想这会自动排除WPF和硬件加速?我应该在我原来的帖子中指出这一点——对不起。也许可以使用两个GPU。。。但这完全是另一个问题

团队没有任何重要的C#经验,我自己也不是专家,但我认为管理环境的整体长期好处可能超过了跟上速度所需的时间


看来Winforms和C现在已经拥有了它。

我是一个应用程序的开发人员,这个应用程序有大量遗留MFC代码,我们都有同样的顾虑。我们战略的一大驱动力是尽可能地消除风险和不确定性,这意味着避免大规模重写。众所周知,TBR在大多数情况下都会失败。因此,我们选择了一种增量方法,允许我们保留当前版本中不会更改的模块,编写新的托管功能,并将增强功能移植到托管功能

您可以通过以下几种方式执行此操作:<