我正在寻找一些可以向我的老板和开发人员同事推销的论点。
我们目前正在完成初步的UI模型,并准备进入下一阶段的开发。与此同时,我一直在深入研究Carbon、Win32和Windows,试图让一些控件在Mac和wxWidgets平台上具有更本机的外观和感觉。
我越是深入研究Win32和Carbon API来实现我们希望在项目UI中实现的东西,他们就越觉得过时,我就越开始认为我们应该像最后一段here中描述的那样实现项目。
我们在当前的项目中使用wxWidgets。wxCocoa端口上的wxWidgets正在出现,但在我们开始新应用程序的主要开发工作之前,它看起来还不会准备好。在Windows端,它包装的是WPF,而不是WinForms或Win32 (可能是由于本机代码与托管代码的原因)。
我们在设计系统时已经考虑到了MVC模式,因此除了必须编写两个原生UI之外,它应该是非常可行的,而且更容易使用现代API(如Cocoa和WPF )获得所需的UI效果。
我一直在试图巧妙地推动这些观点,但主要开发的开始很快就会到来。对于如何在我们的下一个应用程序中使用原生UI工具包还是坚持使用wxWidgets,有人有什么建议吗?
提前谢谢。
发布于 2009-03-11 00:19:32
在标准C++中创建您的核心代码,使用Objective-C++和Cocoa在Mac上创建用户体验,并使用C++/CLI和C#在Windows上创建用户体验。在你的Mac版本中遵循Mac的平台指南,在你的Windows版本中遵循Windows的平台指南,甚至不要费心去想要共享用户界面代码。
管理这一点的一个好方法是,遵循模型-模型控制器-视图控制器-视图架构,而不仅仅是模型-视图-控制器。您的模型控制器是独立于平台的,并管理应用程序的高级功能。(例如,它的整个文档概念、文件格式、作业队列等。)视图控制器依赖于平台,并且在模型控制器和用户体验之间起中介作用。
当然,您可能还需要在模型级别使用一些与平台相关的代码;例如,在Mac上使用NSOperation,在Windows上使用线程池来实现作业队列。只需为这类事情创建自己的轻量级抽象即可。
发布于 2009-03-10 23:25:24
实际上,我认为使用Qt已经变得非常有趣,因为它现在是LGPL。
发布于 2009-03-10 22:52:22
每次添加抽象层时,您都会牺牲对细节的控制,以换取更快速的开发。使用一些跨平台框架,您将能够预先完成很多工作。另一方面,当你想做框架不支持的事情时-让我们面对它:它不会实现那些本机API可以做的所有可能的事情-你要么必须使用本机API实现它(对于所有平台),要么做一些其他奇怪的技巧来获得一个“足够好”的解决方案。当然,当事情变得非常糟糕时,拥有你不拥有的额外的代码层会使调试变得更加困难。尽可能多地拥有你的整个堆栈确实是有道理的。
https://stackoverflow.com/questions/633537
复制