Locked. This question and its answers are
locked,因为该问题是题外话,但具有历史意义。它目前不接受新的答案或互动。
我们正在开始一个新项目,并试图决定使用Windows Forms还是WPF。
我已经阅读了其他一些Stack Overflow帖子,并意识到WPF在数据绑定(bind)和外观方面具有一些优势,但是学习曲线陡峭,工具和控件还很不成熟。
我们想更好地了解Microsoft是否计划停止Windows Forms技术的新开发并强制所有新开发最终使用WPF,或者是否将维护和改进这两种技术。 (还是只是在决定下定决心之前就等着看它进展如何?)
当前,似乎WPF不一定是不需要ui中多余的
line of business应用程序的最佳方法。但是,很高兴知道WPF是迟早需要接受的东西。
这部分是有理有据的论点,部分是发自内心的rant ...
WinForms基于自现代Windows诞生以来就已经存在的user32 / GDI技术。从任何意义上说,它都不会走到任何地方:它不会获得新功能;它不会失去支持。
也许它会。 .NET 4.0中的图表API是新的,是针对GDI(而非WPF)编写的。
通常,Microsoft具有以下新技术的历史:
发明新的API。 使用该API进行2到3个产品周期的创新。 意识到继续创新意味着对向后兼容性做出不合理的让步,或者意识到该技术最初并未解决。 通过包装或保留现有API来发明新的API。现有的API不会消失,但是新的东西也不会使用它。 RDO-> DAO-> ADO-> ADO.NET-> LINQ to SQL-> Entity Framework ,折腾了一些ODBC ...有很多“死”技术和包装技术,这些技术仍然可用,并且今天仍然存在。这些是数据访问技术,但适用相同的想法; UI框架的使用时间更长一些,因为它们是应用程序中最可见的区域。
如果我戴上Nostradomus帽子,我可以放心地说,当.NET在2015年发布6.0时,听起来很遥远,但与2003年差不多,WPF就像Windows一样“死”形成表单是因为将创建其他一些漂亮的托管界面,以平滑WPF尚未发现的所有错误和不便之处。谁在乎?到那时,我们正在 mock 的一切都将被弃用。 (由于框架越来越大,总之,.NET 5.0必须提供某些东西。)
如果有的话,Windows Forms所追求的是它基于已经存在了十多年的技术,并且惯性不会很快消失:您输入的浏览器正在使用GDI,任务栏是使用GDI,您的即时消息应用程序使用GDI,Windows 7中的新功能区控件使用GDI,坐在办公桌前的60美元打印机使用GDI打印机驱动程序,手机上运行的Windows CE应用程序运行Windows Forms端口, GDI是Windows Vista中新的事件查看器,它正在使用Windows Forms,并且Windows Forms平台背后有一个庞大的第三方组件社区-WPF是一种很小的小众产品,仅存在于托管世界中比其不受管理的同类产品小。
为此,我感到所有这些“WinForms vs. WPF”讨论都超出了预期。这些技术并非互斥或优劣,正如微软营销可能认为的那样,微软的开发人员足够聪明来实现这一目标。它们只是不同而已,其中之一恰好比较老。如果我们不定期考虑这一点,那么我们都会在2005年听取Gartner的意见,并完全停止构建Windows应用程序,并将所有内容都移到Web上的AJAX上……使用我们的SOA接口(interface)……公开了另一个REST接口(interface)。在后端上使用TDD DDD模型的....由ORM从数据库中提取。
如此急于放弃技术而担心它会被淘汰,这只能向我们的客户保证,我们将在编程软件解决方案方面保持恒定的经验和能力水平。
当然,WPF是 future 的一部分,但这不是 future 。就个人而言,我很想知道WPF是否在UI技术上“做到了”,这意味着以前的数据访问技术还没有,尽管Visual Studio在2010年采用了它是一个令人欣慰的信号,表明Microsoft实际上对它很认真。狗粮作为旗舰产品。
总结:如果您正在构建LOB应用程序,那么使用WinForms不会感到内gui。如果需要高级布局方案,则WPF互操作始终可用,就像偶尔使用Flash对象增强常规网站一样。但是,对于其他任何事情,您都应该向客户提出一个将整个团队和 shell 过渡到WPF的充分理由; Windows Forms有其问题,但是与任何平台的一半战斗都是知道问题和局限在哪里,并且世界上大多数国家(包括Microsoft)仍在学习WPF。