我们正在规划一个应用程序,将在Silverlight和WPF中开发。
我想知道,既然我们将用XAML实现接口,那么它在这两种技术中是否都是兼容的?
在从一种技术移植到另一种技术时,我们应该预料到什么类型的问题?
发布于 2011-01-31 22:54:12
我已经构建了一个双重目标的silverlight / wpf应用程序。它不像将一个移植到另一个那么简单。
你的第一步应该是查看文档,了解wpf和silverlight的不同之处,以便更好地理解你的问题,XAML Processing Differences Between Silverlight and WPF。不要止步于此。了解基于不同应用程序环境发挥作用的设计模式。现在你开始对你正在处理的东西有了一个概念。
在为wpf和silverlight构建UI时,必须非常小心所使用的控件和命名空间。共享UI代码可能非常乏味,在适用的情况下,创建两个使用共享模板的单独UI层通常更容易。富客户端应用程序中的许多UI功能将与silverlight应用程序中的功能有所不同。您可能会在wpf应用程序中提供更丰富的数据密集型视图,而不是在silverlight应用程序中提供更简洁的视图。最终,您可能能够实现相同的目标,但这将比仅重定位和部署更困难。
如果您正在从头开始构建应用程序,那么我建议您同时构建wpf应用程序和silverlight应用程序。通过这样做,您将有机会抽象出在不同环境中使用的服务层和数据访问策略。Silverlight可能需要通过web服务访问数据,而您的wpf应用程序可能会与本地数据库实例通信。这可以很容易地完成。使用IoC容器或其他工具注入适当的服务实现。这一领域提供了最大程度的代码重用的机会。您可以创建要在两个UI之间共享的所有视图逻辑和服务逻辑。您还可以创建共享业务逻辑和数据访问逻辑。
如果您的富客户端应用程序中没有本地数据存储,那么忘记下一段。
如果你计划有一个偶尔连接的离线客户端(wpf app),你可能不得不想出某种同步策略和架构。根据您的数据结构的复杂程度,这可能会相当困难。使用可用的框架构建复杂的同步逻辑是一个P.I.TA。你可能不得不构建自己的框架,或者生活在另一个框架的限制下。
一句忠告:从测试开始,以测试结束
发布于 2011-01-31 22:12:59
最终,Silverlight只是WPF实体的一个子集,因此当移植到Silverlight时,您将倾向于发现WPF中的一些可用元素不存在,这些东西包括:
在Silverlight.
Triggers在代码中触发的。
诸若此类。
我猜想,你最终遇到的最大问题将是你的自定义控件的移植,就像你的许多其他代码一样,这将在很大程度上是可转移的,但在标记和代码背后都有一堆明显的警告。你可能不得不调整大多数WPF控件以在Silverlight中编译,改变模板、资源等的TargetType值,并用一个控件替换另一个控件(或者有时不得不创建自己的控件来实现某个目标,例如Silverlight中缺少的UniformGrid )。
我想发布链接,但其他人似乎已经暴露了你需要知道的关于网络的一切。玩得开心。
https://stackoverflow.com/questions/4851774
复制相似问题