【发布时间】:2011-01-22 07:16:39
【问题描述】:
需要考虑的事项: - 使用方便 - 快速地 - 尽可能多地使用底层操作系统(例如用于 UI 的 wxWidgets)
我倾向于用于 UI 的 wxWidgets 和用于网络的 Boost - 它们与其他产品相比如何?
【问题讨论】:
标签: c++ boost cross-platform wxwidgets
需要考虑的事项: - 使用方便 - 快速地 - 尽可能多地使用底层操作系统(例如用于 UI 的 wxWidgets)
我倾向于用于 UI 的 wxWidgets 和用于网络的 Boost - 它们与其他产品相比如何?
【问题讨论】:
标签: c++ boost cross-platform wxwidgets
我听说qt 用于 GUI 的好消息
Qt 是一个跨平台的应用程序,并且 用户界面框架。使用 Qt,您可以编写 启用网络的应用程序一次和 将它们部署在桌面、移动设备和 没有嵌入式操作系统 重写源代码
【讨论】:
Qt 或 wxWidgets 都可以建立网络,即使这不是他们的首要目标。
更多以网络为中心的库,除了boost::asio,可以查看ACE(自适应通信 环境)或POCO
这些库之间的比较有already been discussed on stackoverflow。
【讨论】:
boost::asio 似乎写得很好,并且有一个非常干净的 API —— 我仍在努力了解它对于无共享 multithreaded TCP/IP 的效果如何。
您的其他选择可能是Poco 或ACE。 Poco 的套接字抽象非常幼稚——即,它只允许 Poco 做事的方式。我从来没有听说过任何关于 ACE 的好消息。
编辑:嗯,我正在重新检查 ACE,现在它对我来说更有意义(在编写了一些网络应用程序之后)——与 ASIO 相比,它可能更适合我的需求.但是,这对您来说很可能是矫枉过正。如果我的同龄人知道这件事,我会被人回避到最后。
【讨论】:
我对前端的 wxWidgets 和网络端的 boost::asio 有很好的了解。
wxWidgets 确实有内置的网络类,但是你很快就会遇到它们,并且存在一两个很大的限制。如果你想留在 wx 世界里,有一个名为 wxCurl 的包,这是一个很好的包(我早期使用它),它用一些 wxWidgets idomatic C++ 包装了 libCurl。
在我之前的一个项目(一个网络/文件传输繁重的项目)中,我们最终选择了 boost::asio,它的优点是 API 不是那么难,似乎更容易设置 libCRUL (虽然这可能已经变得更好了,那已经是几年了),并为我们提供了一个非常通用的网络核心(boost 可以在任何地方编译,甚至是命令行应用程序)
【讨论】:
对于 GUI,我强烈建议使用 Qt。它是一个非常强大的 GUI 框架,只需要编写很少的代码行。它有非常好的和易于使用的信号和槽模型。
wxWidgets恕我直言,MFC 模型太差了。
网络:我建议去Boost.Asio 非常强大和漂亮。但是,如果你
想要将网络集成到 GUI 主循环,您可以尝试使用 Qt 类,但是我没有使用它们的经验。
【讨论】:
我们在使用 wxWidgets 和 boost::asio 方面取得了很好的成功,两者都推荐用于桌面服务器开发。
【讨论】:
对于GUI,我可以推荐QT
用于网络 ACE(自适应通信环境)或 boost::asio。
【讨论】:
我曾经使用过XVT,它已被数千家公司用于商业用途。
【讨论】: