什么是针对WPF和Web应用程序的最佳方法?

时间:2009-03-13 19:42:53

标签: asp.net wpf design-patterns

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

1)在桌面(WPF)上运行,以便企业用户提供丰富的用户界面,与其他应用程序互操作,访问文件系统,脱机工作,使用特殊的本地硬件等。 / p>

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

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

我们有什么选择才能实现这一目标?是否有适用于这两种技术的模式?

更新

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

我不认为 UI生成器是一个不错的选择。就像爱德华多指出的那样,你可能最终会遇到两个问题。我会查看Sculpture。

3 个答案:

答案 0 :(得分:4)

我一直在考虑这些问题一段时间,而且我还没有想出一个伟大的答案。话虽这么说,这是我的一些想法:

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

您可能会考虑调查已经出现的各种DSL工具包,其目的是创建一个简单的“语言”来高级描述您的UI,并在WPF / ASPX中生成该UI的表示。

另外,我最近遇到了this。我不知道它有多好。我计划在有机会的时候仔细看看。

答案 1 :(得分:2)

祝你好运!

不幸的事实是Asp.net/ajax(一般来说就是网络)和WPF(而且,让我们把WinForms放在那里以获得良好的衡量标准)具有非常不同的用户界面模型,哪一个适用于不一定适合另一个人。这并不是说你不能在为这两种技术编写的应用程序之间共享逻辑,但是,我会在这里做一个延伸,你的UI逻辑不会属于那个类别。

我最近一直在为WPF和ASP.Net MVC使用MVVM的变体,我认为它们非常适合手头的技术。然而,虽然它们非常相似,但它们存在差异,我不确定你是否可以编写一个抽象层(在任何相当长的时间内),它可以利用这两种技术中的强大功能。

最后,我要说最好的办法是遵循一些SOA模式,尽可能多地将业务和数据访问逻辑提取到公共库中。然后,在WPF和Asp.net中编写单独的用户界面以利用这些公共库。这是我公司目前采取的方法,它的工作就像一个魅力。

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

顺便说一下,即使Silverlight不是一个选项,你考虑过XBAP吗?

答案 2 :(得分:1)

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

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

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