未来保证的大型UI应用程序 - MFC与2008功能包,或C#和WinForms?(Future

2019-06-25 04:58发布

我公司已开发在Visual C使用MFC ++作为UI开发的事实标准一个长期的产品。 我们的代码库包含了传统的/过时的代码必须保持运行了很多东西。 有些这段代码的比我大(原文为70年代末),我们的团队的一些成员仍然在Visual Studio中6。

然而,结论已经谢天谢地了内部达成我们的产品进行比较,我们的竞争对手的样子会有些陈旧,需要做的东西。

我目前的工作是从产品的其余部分完全分离的UI的一个新的领域。 因此,我一直在考虑尝试“新”技术堆栈作为一种移动在UI的其余部分开始的漫长的过程之前试验场的机会。

我一直在使用C#Windows窗体和.NET Framework一会儿在我的业余时间,享受它,但我对造成的Interop头痛有些担心。 虽然UI的这个特定分支不需要与传统C ++代码库太多的互操作,我可以预见这成为未来的一个问题。

另一种选择就是继续与MFC,但尝试,并采取与VS2008附带的新功能包的优势。 这是我的猜测是最简单的选择,但我担心的长寿和不采取任何.NET是善良的优势...

所以,这就挑选呢? 我们是一个小团队,所以我的建议很有可能被接受作为我们发展的一个未来发展方向 - 我要得到它的权利。

是MFC死了吗? 是C#/的WinForms前进的道路? 还有什么我完全失踪? 帮助非常感谢!

Answer 1:

我在那有一吨的遗留代码在MFC应用程序开发人员,我们有所有的同样的担忧。 我们的战略的一大驱动力是消灭尽可能多的风险和不确定性,因为我们可以,这意味着避免大重写。 大家都知道,TBR失败的大部分时间。 因此,我们选择了一个循序渐进的方法,使我们能够保持,不会在目前的版本中改变,编写托管的新功能模块,andporting那些获得了增强管理功能。

你可以这样做几种方法:

  1. 在你的MFC观点主机WPF内容(见这里 )

  2. 对于MFC MDI应用程序,创建一个新的WinForms框架和托管MFC MDI意见(见这里 )

  3. 在MFC对话框和查看主机的WinForms用户控件(参见这里 )

与采用WPF(选项1)的问题是,它会要求你立刻重写所有UI的,否则会看起来很精神分裂症。

第二种方法看起来可行的,但很复杂。

第三种方法是我们的​​选择之一,它一直工作得很好。 它可以让你有选择地刷新你的应用领域,同时保持整体的一致性和不接触的东西,没有破损。

在Visual C ++ 2008功能包看起来很有趣,我还没有发挥它虽然。 好像它可能与你的过时的外观的问题有所帮助。 如果“丝带”将是太不和谐了你的用户,你可以看看第三方MFC和/或控制的WinForms厂商。

我的整体建议是,互操作+增量变化肯定是最好彻底改变。


读你跟进后,我可以肯定地确认框架的生产率的提高大大超过投资在学习它。 我们队没有人使用C#在这方面的努力的开始,现在大家都喜欢它。



Answer 2:

根据不同的应用和客户的意愿来安装.NET(并非全部都是),我肯定会移动到的WinForms或WPF。 互操作与C ++代码被无限通过重构非UI代码到使用C ++ / CLI类库(如你在你的标签选择说明)简化。

与WPF唯一的问题是,它可能很难维持目前的外观和感觉。 移动到的WinForms,同时保持你的GUI的当前外观来完成。 WPF使用这种不同的模式,试图保持目前的布局很可能是徒劳的,绝对不会在WPF的精神。 WPF显然也有当一个以上的WPF进程正在运行在Vista之前的机器性能差。

我的建议是找出你的客户使用的是什么。 如果大部分已经转移到Vista和您的团队准备投入大量的图形用户界面的工作,我想说跳过WinForms和移动到WPF。 否则,肯定在的WinForms认真看。 在这两种情况下,在C ++ / CLI类库是回答您的互操作的关注。



Answer 3:

你不给什么你的遗留代码呢,或者它如何构成的很多细节。 如果你有一定的性能标准,你可能要保持一定的C ++代码库中。 你将有一个更容易的时间与你的旧代码的互操作做的,如果它是在以正确的方式暴露 - 今天,你可以调用从C#现有的代码库? 可能是值得思考的一个项目获得这种结构的权利。

在WPF的时候,你可能会说的WinForms可能更合适。 移动到的WinForms是为您和您的团队的一大步。 也许他们可能会更舒服的举动的WinForms? 这是更好证明,在市场上更多的经验,和有用的,如果你仍然需要支持Windows 2000客户端。

您可能会感兴趣的扩展使用.NET Framework MFC应用程序

别的东西要考虑的是C ++ / CLI ,但我没有与它的经验。



Answer 4:

谢谢大家亲切您的答复,这是令人欣慰地看到,一般的共识遵循我的思路。 我对我们的软件也运行在我们自己的定制硬件(为广播行业)的可喜局面 - 所以OS的选择确实是我们的,在我们与客户是推力。 目前,我们正在运行XP / 2000,但我可以看到很快拉升到Vista的愿望。

但是,我们也需要保持对GPU性能非常精细的控制,这点我自动猜测排除了WPF和硬件加速? 我应该做这一点在我原来的职位 - 对不起。 也许是可以使用两个GPU ......但这是另一个问题完全...

球队没有任何显著C#经验,我不是专家,不过我觉得一个管理环境的整体长远利益很可能超过它会采取起床速度的时间。

貌似WinForms和C#有它现在。



Answer 5:

是你看移动到C#和.NET因此,我会考虑的Windows Presentation Foundation,而不是WinForms的。 WPF是.NET智能客户端的未来,你会是你拿起技能能够重复使用,如果你想使浏览器承载的Silverlight应用程序。



Answer 6:

我同意WPF情绪。 基于标签/ XML UI似乎是比WinForms的略偏便携。

我想你也必须考虑你的团队,如果没有大量的电流C#技能,那么这是一个因素,但日后市场对MFC开发商正在减少和C#也越来越大。

也许某种零敲碎打的方式将是可能的吗? 我已经参与了重新编写的遗留应用程序到C#相当多的,它总是需要花费很多的时间比你会估计,特别是如果你保留了一些旧代码,或者你的团队是不是用C#是精通。



文章来源: Future proofing a large UI Application - MFC with 2008 Feature pack, or C# and Winforms?