当前位置: 首页 > article >正文

wireshark演进之路——从GTK到Qt

Wireshark 自 1998 年诞生至今,已有超过26年的历史了。它最早由 Gerald Combs 创建,最初名为 Ethereal。2006 年,Ethereal 更名为 Wireshark,并继续发展成了全球领先且人尽皆知的网络协议分析工具,其GUI演变就是其中非常重要的一环。

一、始于GTK+

1998 年首次发布时,它的前身 Ethereal 就是基于 GTK+ 框架构建的。

GTK+ 是一个跨平台的开源 GUI 库,特别适合在 Linux 环境中开发图形界面,因此在 Wireshark 项目早期成为了首选,GTK+ 帮助 Wireshark 实现了较为出色的跨平台支持和用户界面。然而,随着 Wireshark 功能需求的增加以及跨平台兼容性的提升要求,GTK+ 在一定程度上遇到了瓶颈。

2013年10月wireshark官方博客公布“We’re switching to Qt.”并解释这将是一个复杂的工作需重写数千行代码……

https://blog.wireshark.org/2013/10/switching-to-qt/

简单说:性能和跨平台都遇到瓶颈

二、到qt的华丽转身

wireshark从13年宣布使用qt,2年后到2015年版本2.0版本Qt 正式成为 Wireshark 的默认图形框架。切换ui框架对成熟的wireshark来说时间非常复杂的工作,整个切换过程耗时约数年,分阶段进行,包括初期的评估、重构、移植以及后续的测试和优化。

为减少对用户影响,gtk+和qt在2.0版本并行发布,也就是两条腿走路,一直到2019年发布3.0版本结束了gtk+支持,整个过程前后6年。

三、Wireshark 选择 Qt 的原因

  1. 跨平台支持增强:虽然 GTK+ 也支持跨平台,但在 Windows 和 macOS 上体验较为欠缺。Qt 的跨平台兼容性更强,能够在不同平台上提供一致且美观的界面效果。这对于希望无缝体验 Wireshark 的用户来说尤为重要。

  2. 现代化的用户界面:Qt 提供了更加丰富和灵活的控件支持,可以帮助 Wireshark 提升用户界面的现代化水平。通过 Qt,Wireshark 不仅能实现更精美的视觉效果,还能带来更流畅的用户体验。

  3. 性能与资源效率:Qt 的控件在性能上进行了高度优化,可以帮助减少资源占用,提升软件的整体流畅度。相比之下,GTK+ 在处理复杂界面和多线程操作时有时会显得力不从心。

  4. 开发者支持与社区:Qt 具有庞大的开发者社区和丰富的文档资源,为 Wireshark 开发团队提供了更强大的支持。在遇到问题时,开发者可以更轻松地从社区中获得帮助,缩短开发周期。

  5. 长期可维护性:随着 Wireshark 的用户量和功能需求不断增长,GTK+ 的一些旧有特性开始显得滞后,维护成本逐步上升。Qt 的模块化设计使得未来的代码维护和功能扩展更为便捷。

四、Wireshark 转向 Qt 带来的影响

  1. 用户体验提升:从 GTK 转向 Qt 后,Wireshark 的界面更加直观、流畅,功能布局也更加合理,用户的学习曲线得以缩短。Windows 和 macOS 用户尤其能感受到界面响应速度的提升。

  2. 功能增强:Qt 允许开发团队更轻松地引入新功能,Wireshark 中的一些界面元素(如过滤器、选项卡和日志窗口)变得更灵活,能够提供更符合用户需求的使用体验。

  3. 开发效率提升:Qt 提供了强大的集成开发环境(如 Qt Creator),帮助 Wireshark 团队大幅提升开发效率。Wireshark 的开发者可以更便捷地使用现代化的 C++ 功能和 Qt 的高性能库来优化代码,确保新版本的稳定性。

  4. 长期稳定性:Qt 的更新频率和长期支持使得 Wireshark 的维护变得更为可控,开发团队可以更加专注于优化软件性能、增强功能,而不必担心技术栈带来的负担。

五、总结

Wireshark 从 GTK+ 转向 Qt 是一个顺应技术发展趋势、优化用户体验的重要决策。通过这一转变,Wireshark 能够更好地满足不同平台用户的需求,并提供更现代化、流畅的网络分析体验。对于广大 Wireshark 用户和开发者而言,这次转型是一个值得期待的更新,将帮助 Wireshark 在未来继续引领网络分析工具的前沿。


http://www.kler.cn/a/398032.html

相关文章:

  • 【一键整合包及教程】AI照片数字人工具EchoMimic技术解析
  • 代码版本管理艺术
  • java 数组 拼接 详解
  • vue3 element el-table实现表格动态增加/删除/编辑表格行,带有校验规则
  • 使用Python实现深度学习模型:智能食品配送优化
  • 从电动汽车到车载充电器:LM317LBDR2G 线性稳压器在汽车中的多场景应用
  • 分布式,微服务,SpringCloudAlibaba,nacos,gateway,openFeign
  • Docker内存溢出报错问题解决
  • SpringMVC数据校验、数据格式化处理、国际化设置
  • 网络IP地址会经常换吗?深入解析与实操指南
  • 金山云大数据面试题及参考答案
  • Python爬虫定义入门知识
  • 【Linux庖丁解牛】—Linux基本指令(下)!
  • 黑马智数Day7
  • 对称加密算法DES的实现
  • 130. CSS2DRenderer(HTML标签)
  • 核心期刊论文供参考(中科院三区、可转)
  • lua实现雪花算法
  • 大数据中的时序数据,以及时序数据架构设计解决方案
  • 2024年最后一期数字孪生专项学习!!
  • Android Framework AMS(14)ContentProvider分析-1(CP组件应用及开机启动注册流程解读)
  • Ceph的pool有两种类型
  • 【基础算法】栈
  • 对链表进行插入排序
  • 2024年11月16日Github流行趋势
  • 基于opencv制作GUI界面