【问题标题】:What's the best way to target both WPF and Web apps?针对 WPF 和 Web 应用程序的最佳方式是什么?
【发布时间】:2009-03-17 21:03:12
【问题描述】:

我们目前正在设计一个业务应用程序,它的 UI 有两个主要要求:

1) 运行在桌面 (WPF) 上,为企业用户提供丰富的用户界面、与其他应用程序互操作、访问文件系统、离线工作、与特殊的本地硬件一起工作等。

2) 在 ASP.NET/Ajax 上运行以向客户(互联网)提供此应用程序的多个组件。不幸的是,Silverlight(还)不是一种选择。

尽管我们不必在网络上提供完整的应用程序,但其中一些组件相当复杂,我们希望与 WPF 实现共享尽可能多的 UI 代码 .

为了实现这个目标,我们有哪些选择?是否有一种模式适用于这两种技术?

更新:

感谢您的答案,即使它们不包括我正在寻找的答案! :)

我不认为 UI 生成器 是一个好的选择。就像 Eduardo 指出的那样,您最终可能会在两个世界中遇到问题。不过我会去看看 Sculpture。

【问题讨论】:

    标签: asp.net wpf design-patterns


    【解决方案1】:

    我已经按照这些思路思考了一段时间,但我还没有想出一个很好的答案。话虽如此,以下是我的一些想法:

    如果您使用各种 MVP/MVC/MVVM UI 方法的一些变体,并且在这种方法中非常自律(即不将演示内容与行为内容混为一谈),那么您可能会走得更远。

    您可能会考虑研究已经出现的各种 DSL 工具包,其想法是创建一种简单的“语言”来从高层次描述您的 UI,并在 WPF/ASPX 中生成该 UI 的表示。

    另外,我最近遇到了this。我不知道它有多好。有机会我打算仔细看看。

    【讨论】:

    • 谢谢,我已经下载了 Sculpture 并且会看看它!
    • Sculpture 不是我想用于任何应用程序的东西,所以我会坚持使用 MVVM 和 MVC,谢谢!
    【解决方案2】:

    祝你好运!

    不幸的事实是,Asp.net/ajax(一般来说是网络)和 WPF(见鬼,让我们把 WinForms 扔在那里作为一个很好的衡量标准)有非常不同的用户界面模型,最适合一个的是不一定会为另一个人工作得很好。这并不是说您不能在为这两种技术编写的应用程序之间共享逻辑,但是,我会在这里延伸一下,您的 UI 逻辑不会属于该类别。

    我最近一直在为 WPF 和 ASP.Net MVC 使用 MVVM 的变体,我想说它们非常适合手头的技术。但是,尽管它们非常相似,但它们也有区别,我不确定您是否可以编写一个抽象层(在任何相当长的时间内)来利用这两种技术的强大功能。

    最后,我想说,最好的办法是遵循一些 SOA 模式,并将尽可能多的业务和数据访问逻辑提取到公共库中。然后,在 WPF 和 Asp.net 中编写单独的用户界面以利用这些公共库。这就是我的公司目前正在采用的方法,而且效果很好。

    编写两次 UI 逻辑似乎令人生畏(一次用于 asp.net,一次用于 wpf),但我认为这样做是值得的,这样您的代码才能适应最适合这些技术的模式和实践。

    顺便说一句,即使 Silverlight 不是一个选项,您是否考虑过 XBAP?

    【讨论】:

      【解决方案3】:

      如果以前的工作我们做了类似的事情。正如 Daniel Pratt 所说,我们用 XML 描述我们的接口,然后渲染将创建表单、报告或我们决定创建的任何内容。

      我们必须提供一个 Javascript 函数来在 HTML 渲染中进行一些 UI 验证,并在 Swing 渲染中调用一个 java 函数。

      请注意,您可能会在两个世界中都以不完美的应用程序告终。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-03-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-05-13
        • 2011-07-03
        • 2010-09-05
        相关资源
        最近更新 更多