【发布时间】:2009-01-11 20:32:06
【问题描述】:
我想知道是否有人具有 WPF 应用程序开发经验——也许更有趣——在生产中运行 WPF。
它是否足够成熟,可以在更大的项目中使用?有哪些明显的陷阱?有什么最佳实践吗? (WPF 中的数据绑定看起来很漂亮,但它在“真实”项目中有效吗?)
提前致谢!
【问题讨论】:
-
在 MSDN 论坛上对此问题进行了大规模讨论。
我想知道是否有人具有 WPF 应用程序开发经验——也许更有趣——在生产中运行 WPF。
它是否足够成熟,可以在更大的项目中使用?有哪些明显的陷阱?有什么最佳实践吗? (WPF 中的数据绑定看起来很漂亮,但它在“真实”项目中有效吗?)
提前致谢!
【问题讨论】:
WPF 推出了 .NET 3.0。我们在 3.5 sp1 上,所以如果它没有准备好生产,MS 有很多 essplainin' 要做。坦率地说,当 3.0 发布时,它已经准备好生产了。
我目前正在开发一个使用 WPF 进行模板和数据绑定的项目(不是用于 UI 显示,但我使用 UI 类来定义模板)。我也将 WPF 用于个人资料。而且,坦率地说,我必须被狠狠地殴打才能考虑使用 Windows 窗体作为 UI。 WPF 以其简单性和灵活性而著称。它的数据绑定设施与被破解的窗口表单绑定模型相比是壮观的。恕我直言,XAML 是软件设计中的革命性一步。
WPF 中的数据绑定不仅漂亮,它还允许您实现一些非常好的架构设计。 This is a good post that covers some of the more popular ones. 把它想象成类固醇上的 MVC/MVP。
长话短说,快跑。不要走路。
【讨论】:
我不确定它是否适用于大型应用程序,但它肯定适用于中型数据库驱动的应用程序,如果那是你的一杯茶的话。我用WPF+SQL Server 2008做了一个病人管理系统,没那么麻烦。
陷阱 - 我有一个 - 字体。说真的,你如何解释你的非技术客户,没有什么可以改善 XP 上的 WPF 字体渲染?这个领域非常痛苦,而且看起来微软并没有解决这个问题。 (如果我错了,请纠正我。)
最佳实践?嗯,是的,你提到了数据绑定,它工作得很好,虽然它当然会在某种程度上抑制清晰的层分离。实际上,我认为从 WinForms 时代继承的大多数意识形态仍然适用,前提是您已经设法开始以不同的方式思考 UI。我对 WPF 的最佳实践是使用代码生成将数据库映射到保存在 WrapPanel 中的一系列控件中。事实上,这些环绕面板非常棒,因为它们可以缩放到任何屏幕尺寸,而且布局实际上感觉流畅自然。
【讨论】:
我会说是的,它已经准备好生产了,并且已经有一段时间了,但是有一些警告:
【讨论】:
代表一家主要目的是在应用中获取公司业务的小公司发言。我必须说 wpf 还没有准备好。
不是那么容易维护,也不是(非常)简单,而且开发人员浪费了太多时间来获得正确的 UI,而不是编写业务代码。
我们将回到智能客户端;)
亲切的问候, 维姆
【讨论】:
其实我觉得答案是肯定的和否定的……
根据我的经验,WPF 中没有可用的工具。现在,这是一个非常陡峭的学习曲线,迫切需要的东西之一是使技术变得平易近人的好工具,例如表达式混合/工作室和 Visual Studio 的集成水平非常差。 IMO简单的任务应该是简单的,复杂的任务应该是可能的,用WPF复杂的任务确实是可能的,但简单的任务也很复杂。
话虽如此,如果您确实完成了学习曲线,并且能够应对低于标准的工具,那么生成的应用程序肯定可以投入生产。
【讨论】:
重要的是你必须让自己适应 WPF,而不是试图让 WPF 适应你。 你必须忘记你所知道的关于 UI 编程(winform 或 spring)的一切。如果你认为 WPF 就像 winform,你的生活会很痛苦...... 这项技术已准备好用于生产,但可能不是您的代码...花时间了解 WPF 中的良好编程实践,您的 WPF 代码将“准备好生产”。
【讨论】:
我在一个小团队中使用 WPF 的经验。
我会同意 Hypo 并说是和否。
我是 3 位公司开发人员中的一位,我们从事体育行业,其中一个项目是锦标赛软件。我最近在 WPF 中重写了我们的分数/括号显示应用程序。显示器 100% 更漂亮,但这并不容易。来自 WinForms 的学习曲线很大,绑定功能强大但同样复杂。我在 VS 2008 中有很多 WPF 问题,它每天至少使我的 IDE 崩溃一次,我经常不得不删除我的用户文件或打开项目文件上的属性会关闭我的 IDE。在 XP SP3 上运行动画似乎只有 50% 的 XP sp3 机器流畅,另外 50% 存在大量丑陋的伪影,并且表单似乎无法正确重绘。我的 XAML 编辑器有时会崩溃,我必须关闭选项卡并重新打开它。我引用的所有问题都在 4 台不同的机器上持续发生。
我对框架的最终回答是肯定的。拒绝我浪费了太多时间与我的 IDE 对抗的工具。不适合只需要快速推出一些业务应用程序的小型团队。一旦有更多的控件、主题、项目模板,它就可以在 VS 下工作。我可能会改变主意。
尽管我在学习 WPF/XAML 时非常痛苦,但与它一起工作仍然令人兴奋,我经常对你能做的一些很酷的事情感到震惊。
【讨论】: