Linux下GUI设计模式的有效性
我正在考虑从Windows转到Linux,但我发现很难找到在这个领域应用的设计模式示例。
这个应用程序是一个经典的客户端-服务器模式,里面有每个业务实体的详细表单。
它会接收用户输入,进行一些验证检查,做一些计算,然后把数据保存到数据库里。
它还会有一些列表来总结这些实体,并可以在这些实体中进行搜索。
点击这些列表中的某一项会打开详细的表单。
如果我使用Python或Ruby,应该用什么来做图形用户界面(GUI)呢?
而且使用什么设计模式:MVC、MVVM还是MVP,有用吗?
或者有没有更好的选择?
注意:我从来没有做过网页开发,我希望能避免同时学习Linux和网页开发。
5 个回答
现在在Linux系统中,主要有两个用户界面工具包,分别是Qt和GTK+。Qt被KDE桌面环境广泛使用,而GTK+则是Gnome桌面环境的常客。不过,Qt制作的应用程序也可以在Gnome上运行,反之亦然。这两个工具包都支持很多编程语言,可以和它们结合使用。
根据你在评论中对应用程序的解释,虽然你非常支持Qt,但我建议你考虑把你的应用做成一个网页应用,这样会有很多好处。
既然你说这是一个客户端-服务器应用,那它至少需要在本地网络上连接,所以通常人们对网页应用的第一个反对意见就不成立了。
第一个大好处是,你不需要选择一个特定的客户端平台。只要支持现代的跨平台浏览器,比如Firefox或谷歌的Chrome,你的客户就可以选择他们喜欢的任何客户端平台。如果你还仔细测试一下你的应用在Safari上的表现(因为Safari和Chrome在渲染逻辑上有很多共同点),那么你的网页应用也可以在iPad上使用。
第二个大优势是,你的应用不需要在客户端进行任何“安装”——它总是随时可以使用。
现代的JavaScript框架(比如jQuery、Dojo、Closure等)可以让你的应用实现丰富的互动功能,支持用UI组件构建界面,而且还可以帮你处理大部分浏览器之间的差异。在服务器端,你可以使用Ruby、Python或其他语言,找到与客户端JavaScript资源无缝集成的框架。
哦,还有,运行应用所需的计算资源(比如内存、CPU、磁盘空间等)在服务器上以“批量”方式使用会更便宜,这样这些资源可以在某个时间段内共享给活跃的客户端,而不是分散在很多客户端上(包括那些在某个时间点并不活跃的客户端)。
其实,我认为在今天,除了可能需要在没有网络连接时运行的情况,几乎没有理由推荐本地的图形用户界面应用了(即使在这方面,HTML5等技术也在不断进步,使得浏览器能够支持这样的应用)。