2

我有一个几年前用 MFC 编写的 DVD 编目应用程序。记录保存在 sqlite 数据库中,所以基本上它是一个 CRUD 应用程序。UI 方面,它在左侧有一个树视图,在右上方有一个列表视图(网格),在右下方有一个 HTML 视图(嵌入式 IE)。没有什么花哨。

我想用更多功能更新应用程序,但过去几年我一直在使用 Java EE,我意识到使用 MFC 根本没有效率。所以我在想也许我应该用别的东西来提高我的工作效率。跨平台将是一个很大的好处,但这并不是绝对必要的。

以下是基于我的研究的选项:

  • Java / Swing:我可以利用我的Java知识;优秀的第三方库(例如用于 IoC 的 Spring 和用于 ORM 的 Hibernate);跨平台。缺点是,用户需要 JRE;Swing 似乎处于“维护”模式,并没有得到 Sun 的太多关注。
  • C++/Qt:本机应用程序;跨平台。但我是 Qt 的新手,所以我必须先学习它。
  • C# / WPF:WPF 似乎是 Windows GUI 开发的未来,一些 WPF 示例应用程序给我留下了深刻的印象。我有一些 C# 经验,但我需要学习 WPF。缺点是,仅限 Windows;需要 .NET 3.5 运行时。

那么,如果您处于我的情况,您会使用什么?在此先感谢您的任何建议。

4

11 回答 11

4

如果您想在开发此应用程序时学习一些新技能,那么如果您在 Java 中没有 C#/WPF 和 LINQ,那么 C# 3.0 中的 LINQ 真的很棒。

如果您只想加快速度,那么您已经回答了自己的问题,Java / Swing。这是你擅长的。

于 2009-04-16T19:32:09.620 回答
4

我实际上是 C# 的忠实粉丝,但既然你说跨平台将是一个巨大的好处,我认为 Qt 实际上可能会更好。C# 可以通过 Mono 跨平台,但在这方面我使用Qt获得了更好的结果。他们在 QtAssistant 中也有非常好的文档来帮助您入门。

于 2009-04-16T19:36:52.310 回答
3

在大多数情况下,只要项目范围相当小,并且计算需求适中,我倾向于使用TCL/Tk。我还没有学习到比 tk 更有效率的 gui api(并不是说没有,只是我尝试了几个,发现它们更慢)。可以肯定的是,TCL 并不是最好的编程语言,尽管有许多附加组件很有帮助,特别是[incr tcl]tcllib

我选择这个而不是其他系统的原因,例如,我更喜欢在 python 中编码,是因为使用 tcl/tk 进行部署几乎是无与伦比的。使用Starkit,您最终会得到一个无需安装程序且可轻松移植的单文件可双击应用程序。

于 2009-04-16T23:44:32.353 回答
3

如果您的生产力是一个大问题,也可以考虑使用 PyQt + Python。当我说 Qt 的学习曲线非常值得时,相信我,而且并不像起初看起来那么难。

Sqlite 支持在 Python 标准库和 Qt 中的 QSql 模块中,如果您更喜欢使用它的话。

PyQt + Python 也是一个跨平台选项,因为 Python 可用于许多平台并且 Qt 的跨平台开始。

您提到的您在应用程序中使用的控件在 Qt 中都可用。

于 2009-04-16T23:04:58.627 回答
3

除了原始 C++ 之外,唯一的其他工具是 Delphi。时期。

使用其他工具,您将在部署中遇到问题。

使用 Delphi,您将生成独立的本地 exe。此外,数据库连接性很好。

您永远不会因缺少控件或 3d 派对工具而感到失望,其中很多是源代码和免费/商业工具集。

而且编译时间是这个星系中最快的;)

因此,如果您认真地为您的客户提供无障碍应用程序,并且客户不像开发人员那样以技术为导向,那么可能会感到困惑,因为安装了 4 个 .NET 运行时中的哪一个,需要最少的支持、易于下载、单击 - click-install-go,像 Skype、TopStyle(由 Delphi 制作)即时运行的应用程序,那么 Delphi/C++ 是您唯一的选择。严重地。唯一的选择。


如果你想要一个跨平台的解决方案,那么如果你的 GUI 是极简主义的,那么 FreePascal/Lazarus 可以工作。

于 2009-04-16T23:17:39.813 回答
2

好吧,如果您真的想要一个类平台类型的应用程序,我会将其转换为 Web 应用程序并托管它。这样,如果一个用户上传 dvd 信息或 dvd 封面图片,另一个用户可以利用已经输入系统的信息。

如果您要为桌面开发,请尝试通过使用 OS UI 工具,让它感觉像是为该平台制作的应用程序。对于 Windows,请选择您的第三个选项 C# /WPF。

于 2009-04-16T19:40:07.107 回答
1

除了 C#/WPF,您还可以看看 Silverlight。您的应用程序看起来很简单,启动和运行不需要太多时间。类似于在会议上展示的演示。

一旦你掌握了基础知识,就可以很容易地添加一些很酷的功能,如动画、电影剪辑、专辑封面、类似界面的封面流等。

您将能够使用 Moonlight 定位 Windows/Mac 用户和可能的 Linux。但是在过去的 8 年里我没有看过 Linux,所以我真的不能说太多。

于 2009-04-16T20:26:42.110 回答
1

使用 Eclipse RCP,您可以获得 Java、跨平台开发(请参阅 Delta Pack)、本机外观(通过 SWT)和用于桌面开发的出色框架集合(声明性 UI、插件管理等)。你绝对应该试一试。

于 2009-04-16T23:34:48.617 回答
1

如果您的 MFC 应用程序中有一些您想重用的非 UI 代码,请考虑使用 QT。否则选择你喜欢学习的任何东西。

于 2009-04-16T19:50:51.947 回答
0

几个月前,当我遇到几乎完全相同的场景(使用 SQLite 数据库升级应用程序)时,我去了 C++/wxWidgets(但你可以做 Qt)路线。wxWidgets相当容易上手,拥有我需要的一切,而且比 MFC 容易得多。最好的部分是我在 CodeProject 上为 SQLite 找到了一个很好的 C++ 包装器(例如CPPSQLite),并且很快就让整个事情运行起来了……这个项目在 wxWidgetss 上卖给了我,以防你不知道。

于 2009-04-17T21:06:59.183 回答
0

实际上,我会非常仔细地观察像 adobe air 之类的东西。它是跨平台的,并且可以基于 html/javascript,所以除了一两个 javascript 库之外,您可能没有太多要学习的东西。它能够与本地数据存储或通过互联网与 Web 服务或 RESTFUL 服务进行通信。aptana 可以免费开发。看看里面写的一些东西:

http://www.adobe.com/products/air/showcase/

于 2009-04-18T01:21:50.007 回答