来自一个困在网络世界的程序员......
目前用于桌面应用程序开发的最常见的桌面开发“框架”有哪些?
为 Windows 和 OS X 编写桌面软件是否现实?
使用相同的基本代码为具有部分 Web UI 和桌面 UI 的应用程序编写业务/数据层是否现实?
来自一个困在网络世界的程序员......
目前用于桌面应用程序开发的最常见的桌面开发“框架”有哪些?
为 Windows 和 OS X 编写桌面软件是否现实?
使用相同的基本代码为具有部分 Web UI 和桌面 UI 的应用程序编写业务/数据层是否现实?
是的。您可以将 Java、Python/Ruby 等与跨平台 UI 框架、AIR 等一起使用。
是的,这是现实的。在客户端/服务器模型上构建它,大多数代码都适合桌面或 Web UI 模型。
如果您使用 .NET 根目录,则可以将 Silverlight 用于 Web 应用程序,将 .NET 服务器代码用于后端,甚至可以使用 Mono 来为 OS X 进行开发。
如果你走 Java 路线,Java 在浏览器中运行,JavaFX 即将推出,它是一个类似 Flash 的小型浏览器版本。它几乎可以在所有操作系统上运行,并且可以很好地处理后端。
Flex/ AIR 提供了一种为 OS X、Windows 和 Linux 开发桌面和基于 Web 的应用程序的绝佳方式,但您需要另一种语言作为后端。.NET、Java、PHP 等都可以作为后端正常工作。
编辑
应 MrJeepster 的要求,以下是有关连接 AIR 前端和 .NET 后端的详细信息:
您可以通过两种方式将 AIR 连接到 .NET 后端:DIY 方式和远程处理方式。
DIY 方式将涉及定义您自己的(可能是 XML)数据格式并使用低级 HTTP 请求对象与 HTTP 服务器进行通信,甚至使用较低级别的套接字类与其他一些服务器进行通信。
由于好人编写了一系列免费的远程处理包,因此远程处理方式更加容易:
http://www.adobe.com/devnet/flashremoting/articles/intro_flremoting_net.html
http://www.themidnightcoders.com/flashorb/gettingStarted.htm
http://www.fluorinefx.com/
远程处理涉及在客户端和服务器之间共享对象。因此,您在 AIR 客户端上创建一些对象,让远程处理框架对其进行序列化,将其传输到服务器并将其反序列化为 .NET 对象。然后服务器对其进行处理并通过相同的路由将其或新对象再次发送回来。
虽然跨平台桌面开发是可能的,但这并不容易。至少,您必须在每个受支持的平台上进行测试。而且你必须做出艰难的妥协:你是让你的软件在每个平台上看起来都完全相同(因此在任何地方看起来都不像原生应用程序),还是你使用原生控件并在各种平台上处理不同的对齐方式等?除了外表,你还使用什么行为?例如,UNIX 软件区分大小写,但 Windows 软件不区分大小写。您是在两个平台上选择一个排序顺序,还是在每个平台上进行不同的排序?
Qt(在 C++ 或 python 上)在 mac/win/linux 之间是完全可移植的。它还包括 QtWebKit,因此很容易在您的应用程序中嵌入一个真正的现代浏览器。
如果您正在寻找跨平台,我可能会建议 Qt。几年前我们在这里使用过它。它的许可证是每个开发人员的,而且价格昂贵(至少当时是这样)。
当然,您可以使用网络服务。
使用 .NET 和mono是一个不错的选择。
我们已经使用 Java 构建了许多多层、跨平台的应用程序。在桌面 Swing 上对我们来说真的很有效。
我们正在使用 Java (Swing) 自己构建一个小型跨平台应用程序,它真的很棒。至少到目前为止。:D
我使用 REALbasic 为 Mac OS X 和 Windows 创建各种各样的桌面应用程序。它工作得很好。
但是,它不适合创建单独的层以与桌面/Web UI 共享。