【问题标题】:Silverlight / Moonlight / WPF for cross-platform GUI's?Silverlight / Moonlight / WPF 用于跨平台 GUI?
【发布时间】:2014-02-23 19:39:23
【问题描述】:
我需要用 F# 编写一个跨平台的 GUI,而且我似乎没有太多选择。我有两个问题。
1.) Silverlight 是 WPF 的子集,也可以作为桌面应用程序运行,这可能足以满足我的需求。但我总是必须为任何基于浏览器的 silverlight 应用程序安装 silverlight 运行时。这是否也适用于桌面应用程序,还是安装 .NET/Mono 就足够了?
2.) 我刚刚读到可以在浏览器中运行 WPF,这是否意味着我可以将 WPF 用于跨平台 GUI?
【问题讨论】:
标签:
.net
wpf
silverlight
user-interface
mono
【解决方案1】:
基于 XAML 的技术仅适用于 Windows。
Moonlight 已打折且不受支持,因此不推荐用于任何新项目。
XBAP(浏览器托管的 WPF)仍然是 WPF。它需要 .Net 框架并且仅适用于 Windows。
也不推荐使用它,因为您使用它实际上什么都没有。将纯 WPF GUI 与它自己的窗口一起使用,而不是将 Internet Explorer 用作窗口。
如果您需要 100% 跨平台并且愿意牺牲用户体验质量和一般代码可维护性,请使用 ASP.Net 创建一个 Web 应用程序,它将 HTML 内容交付给客户端(浏览器)。
如果您需要在所有设备上提供原生、高质量的用户体验,那么:
- 将您的业务逻辑放入可移植类库中。
- 创建单独的客户端应用程序,它们都引用共享的业务逻辑:
- 对于 Windows 桌面,请使用 WPF。
- 对于 Windows Metro,使用 WinRT XAML。
- 对于 Android 和 iOS,请分别使用 Xamarin.Android 和 Xamarin.iOS。