【问题标题】:Is it a good idea to develop a server application using QT?(QT5) [closed]使用 QT 开发服务器应用程序是个好主意吗?(QT5)[关闭]
【发布时间】:2018-01-23 06:11:14
【问题描述】:

我是一名 QT/C++ GUI 开发人员,熟悉 QT 事件系统、元对象系统、并发。而且我知道 QT 已经分离了 QtCore,这使得使用 Qt 开发服务器应用程序成为可能,而无需链接任何不必要的 GUI 相关代码。

我对使用 QT 开发服务器应用程序是否是一个想法感到困惑?这是我第一次开发服务器应用程序,所以任何关于使用 QT 的服务器应用程序的想法和建议都非常感谢和欢迎。

1.我的服务器应用程序将运行在windows(OS)上,并充当代理:网络请求转发和缓冲,打包设备操作(提供统一的接口)。

2.需要支持2000个客户端并发访问,所以担心事件系统或信号和qthread是否足够好?

【问题讨论】:

  • 你需要把你的要求作为一个问题..服务器应用程序是什么意思?它将做什么..具体
  • 一般来说,没有什么可以阻止您使用 Qt 开发应用程序的服务器端,特别是如果客户端也使用 Qt 开发并且您将使用 QtNetwork 将客户端连接到服务器。
  • 听起来太基于意见了。
  • Qt5 经过良好测试,可能比您自己编写的任何代码都更不容易出错。如果您从 Qt 中获取它,则不必对其进行测试(因为它已经是)。
  • 我使用 QTcpServer / QTcpSocket,我喜欢它。我不知道它如何能够支持 2000 名客户,但我认为应该没有问题。我让每个客户都在 QThread 中,我没有任何问题。另外我在服务上有一个正在运行的服务器。

标签: c++ qt service


【解决方案1】:

您的方案中最大的问题不是 Qt,我会说它是 C/C++。 服务器端服务通常需要很高的fault tolerance

对于像 PHP、许多 Java 库等这样的语言都是内置的。

对于 C++,它不会。一次调用导致您不记得正确捕获的错误很容易弄乱整个过程。然后要求您同时运行多个进程(即使一个进程失败也能保持响应)加上一个 cronjob(或类似的)来重新启动那些死掉的进程。这不是最佳选择。

通常,在线服务的一小部分是用 C++ 完成的(特别是如果它们对性能至关重要,而 PHP/Java/Python/Node/etc. 不足以完成手头的任务),而那些您可以轻松完成的Qt 也是如此。 但我建议不要在 C++ 中编写处理实际用户/API 请求的部分。

【讨论】:

  • 我明白你对 C 的看法。但是 C++ 在它后来的扩展中包含了很多不错(和安全)的特性。而且,如果您使用它们,您的容错能力可能并没有那么差。但这是真的,你必须更加小心。
  • C++ 总是这样。你可以做到这一切,但由于要确保它符合要求的安全性需要付出多少努力,所以使用一种让你专注于手头的实际任务而不是担心容错的语言会更容易。您在野外看不到使用 C++ 制作的服务器是有原因的(好吧,无论如何都非常罕见)。
  • 谢谢你的回复,这真的提醒了我对于一个服务应用来说稳定性比性能更重要。但 C++ 是我唯一的语言。那么是否有任何库(C++)或框架或工具包来开发服务器应用程序?或者使用基于moc的信号是否会导致低速问题?
  • @jiaping 你可以为直接函数调用和信号槽连接调用写一个简单的性能测试并检查是否有实际的性能损失
  • @jiaping 老实说,如果您了解 C++,那么您已经了解了几乎最复杂的语言,至少在这个领域是这样。例如,现在学习 Java、PHP 或 Python 对您来说会比其他方式容易得多。
猜你喜欢
  • 1970-01-01
  • 2014-03-17
  • 1970-01-01
  • 2023-03-27
  • 2021-03-23
  • 1970-01-01
  • 2010-11-27
  • 2019-08-24
  • 1970-01-01
相关资源
最近更新 更多