《Qt:物联网白皮书(2021)(12页).pdf》由会员分享,可在线阅读,更多相关《Qt:物联网白皮书(2021)(12页).pdf(12页珍藏版)》请在三个皮匠报告上搜索。
1、白皮书Qt 助力构建物联网Qt 助力构建物联网|The Qt Company All rights reserved3目录Qt 助力构建物联网 4物联网对软件的要求 5物联网的挑战 7 嵌入式开发 8大数据 9用户体验 10可扩展性 11总结 13Qt 助力构建物联网|The Qt Company All rights reserved4Qt 助力构建物联网 物联网这个术语今天已无所不在。想要在交谈中让人印象深刻,就选择这个时髦话题吧。在科幻小说作家的笔下,物联网是可以植入日常生活中任何物品、尘埃般大小的计算机。而对于绝大多数开发者而言,物联网只是一个新瓶装旧酒的时尚术语:互联的嵌入式系统。毕
2、竟,我们已花了数十年的时间一直在开发类似物联网设备,不是吗?是,也不是。大多数物联网设备的核心定义为:通常是(但非绝对)可移动的、采用 M2M 协议的嵌入式系统 换句话说,就是实现机器之间通讯的移动小玩意儿。当然,这些特性已经在众多嵌入式设备中得到应用。然而物联网的前提是永远在线的通讯,它为设备提供所需信息,使后者更智能化。这赋予了日常物品基本的智能和通讯能力,为我们提供了多方位的技术助力:布满传感器的生物识别服装、自动调度的无人运输机、自动监控家居、能报告食品新鲜度的冰箱、自动通车计时器、自我诊断农作物 这一列表还在继续。要实现物联网的愿景要求计算机不断变得更小、更智能、连接性更强。虽然每个
3、人似乎都明白这需要一场硬件变革,但很少有人谈论软件所需的重大变革。想要让日常用品更智能,并保证人机、机器之间的通讯更直观、自然,需要更多的复杂软件。这又对如何开发物联网软件提出了诸多要求。Qt 助力构建物联网|The Qt Company All rights reserved5物联网对软件的要求由于可用于创建智能的互联系统的技术非常多,以至于很难确定从哪里下手。让我们先弄清楚最理想软件架构的构成,或者至少了解它有哪些基本要求。1)功能性没有计算能力,我们无法实现智能化。因此,我们需要一个能胜任这项任务的软件工具。2)优化性不断缩小的处理器和主板不会提供我们无限的资源。我们需要强大但高效的资源
4、。3)连接性我们需要处理各种通讯,因此需要灵活的连接方式,让我们将智能从网络边缘推向云端,从传感器网络获取数据,或者介于两者之间。我们选择的工具需要轻松支持多种协议、堆栈和无线技术。4)快速开发为了实现快速迭代、改进产品、支持物联网快速的产品生命周期,我们需要快速、可靠地开发软件。利用现代化工具和 IDE,让软件开发尽可能简化。5)跨平台性我们希望在尽可能多的设备上重用我们的代码库,从桌面设备到云服务器,从无屏传感器到嵌入式设备的 UX。因此,选择能最小化移植工作的开发工具尤为重要。6)用户界面当然,许多物联网设备并不涉及 UX。但也有许多联网的小玩意儿需要。为 GUI 程序和非 GUI 程序
5、选择不同的开发工具并不是个好主意。找到一款可适用于所有情况的软件开发工具才是上佳方案。7)共享我们不想重新发明轮子。我们希望建立一个开放、活跃、全球化的开发社区,与大家一起学习。8)安全性黑客无处不在:我们的设备需要能防篡改、并能抵御黑客攻击。9)可靠性我们无法容忍周围有一大堆新的“智能”设备运行不稳定或者需要经常重启:它们必须是可靠的。虽然任何开发语言和工具都能够创建可靠的软件,但是我们将把外部验证或认证的难易度作为我们的衡量标准。这可能不适用于所有场景,但在物联网行业尤为重要。10)稳定性最后,我们知道,软件会持续发生变化 设备功能在出厂后完全固定的模式已经过时。因此,我们不仅需要一种能随
6、时更新软件的方法,而且还要确保用来构建设备的软件工具保持稳定,即便这些工具都在升级。Qt 助力构建物联网|The Qt Company All rights reserved6现在,我们缩小了开发软件的选择范围,让我们看看目前流行的嵌入式语言和各种开发框架是否满足上述要求。功能性优化性连接性快速开发跨平台性用户界面共享安全性可靠性稳定性C 语言C 语言可能已丧失了在桌面端开发的宝座,但其在嵌入式开发领域仍发挥着不可或缺的作用。然而,C 语言最大的问题是其开发前沿已转移到其他地方:C 语言在 IDE、RAD、框架和社区等方面已逐渐淡出。评分:4/10HTML 5/Cordova虽 然 Apach
7、e Cordova 的 HTML5(或 JavaScript+HTML+CSS)框架在跨平台和开发选项中位居前列,但由于其过于庞大,对大多数物联网系统来说并非最佳之选。不仅如此,绝大多数HTML5 架构都在不断变化,虽然这有利于持续增加新功能,但如果您打算开发一个会持续更新的稳定代码库就不那么理想了。评分:5/10C#/.NETC#和.NET 在很多方面都很出色,但不如 C+那么高效、紧凑以及优化。尽管有 Mono,它也很难宣称其跨平台兼容性。它的社区很活跃,但难有如开源项目般受追捧。评分:6/10Java/安卓安卓非常强,但需要一个相当重量级的环境。此外,其跨平台性太差。安卓应用软件只能运行
8、在安卓系统上,这就限制了代码在其他平台的使用。评分:6/10C+/STLC+/BoostC+/QtC#/.NETJava/AndroidHTML5/CordovaQt 助力构建物联网|The Qt Company All rights reserved7C+/STL毫无疑问,C+具备功能强大、可优化的特点,是嵌入式开发语言中的佼佼者。虽然有了 STL 助力的C+提高了其表现力,但其在网络连接能力方面却没有任何帮助。我们可以使用各种 SOCKS、蓝牙或WiFi 库,但无法找到一个通用的解决方案。C+/STL在快速开发或 UX 创建方面亦无优势。评分:7/10C+/Boost虽然 Boost 代替
9、 STL 后,C+会带来更好的网络连接功能,但是Boost仍然只是一个库,缺乏开发环境。此外,它也没有标准的 UX 开发工具。评分:8/10C+/Qt最后,让我们来看看 C+和 Qt 的组合。Qt 不仅能充分利用 C+语言“裸机”的功能,还能快速开发应用程序和 UX 组件。Qt 的 UX 是为跨平台特性专门打造的,再加上其完善的 IDE 和开发者社区,它在这些方面表现也非常出色。评分:8/10物联网的挑战Qt 在上述比较中名列前茅,且理由充分。然而,评判哪个物联网开发工具包好坏不仅取决于代码简单程度以及生态系统中开发者的众寡,而更取决于您能如何快速、高效地使用它。让我们深入分析物联网的几个挑战
10、,并分享 Qt 是如何应对这些挑战的。Qt 助力构建物联网|The Qt Company All rights reserved8嵌入式开发多数嵌入式开发工具仍处于初级阶段。从具备现代化代码仓库插件、自动代码补全、语法高亮、集成调试、插件支持、云链接的 IDE 到黑屏上闪烁绿色光标的工具感觉就像是用特斯拉汽车上的自动启动来换取您曾祖父 T 型车上的手档。当然,终端会话、控制台脚本以及 vi/emacs 有其各自的地位,但是我们的图形用户界面(GUI)已经存在长达 33 年了吧。Qt 在这方便拥有绝对的优势。Qt Creator IDE 可以在所有平台上运行,支持各类扩展、插件、快捷键和省时工具
11、,并且可以交叉编译到您选择的目标设备上。此外,它还配备了调试、配置、分析和设计代码的工具。由于所有支持的环境相互兼容,您可以在笔记本电脑上快速开发原型,然后将创建好的原型植入嵌入式目标设备。Qt 不仅能创建 UX,还拥有各种库,用于本地化、字符串、多线程、XML和 JSON 解析、数据库、套接字、蓝牙、传感器、NFC、事件管理,以及更多无屏物联网设备的开发。现在,大多数开发者都不可能开发单一、独立、无法与其它设备共享代码的产品。因此,一款具有强大 UX 功能的嵌入式开发工具就显得十分重要了:它可以支持多个有屏或无屏的设备,利用桌面端和移动端界面的核心通讯库,以及与整个生态系统不同部分的其他物联
12、网开发人员共享代码。Qt 支持为无UX 的设备创建精简代码库,然后开发者可以在此基础上开发适合桌面、移动或手持产品的高度复杂界面。Qt Creator IDE 中的 Qt Quick Designer 通过易于使用的拖放功能帮助您创建用户界面的可视化原型。Qt 助力构建物联网|The Qt Company All rights reserved9大数据大数据不仅是与物联网相提并论的流行语,而且对物联网愿景也至关重要:数以百万计的设备源源不断收集的数据有助于为我们的勇敢新世界带来智慧。认为大数据只是一个涉及云计算的问题那就大错特错了。实际上,终端设备也需要管理大数据,只是数量级不同。您的物联网嵌
13、入式系统可能无法处理EB 级数据,但仍可能需要收集、存储、排序、过滤和处理千兆字节的数据。为了处理这种工作负载,您需要使用省内存的数据处理方式、高效的格式转换和持久的数据存储。开发者可以用 C+语言直接控制数据存储格式,因此不需要接收大量没用的元数据或垃圾内容。C+语言非常擅长于此,且任何基于 C+的选择都可以做到这一点,包括 Qt。但是需要在高度节约内存的条件下实现向传感器发送和接收 MQTT 数据、JSON 数据或原始二进制数据,以及这其中必须用到的各种格式之间的转换 这不是所有选项都能做到的。Qt拥有能方便处理这个问题的库和原生的运行速度。保写数据要用的数据库读写 API 也是必须的。Q
14、t提 供 了 与 SQL 的 接 口,如 MySQL、Postgres 或SQLite,让您轻松保存和处理正在收集的数据。大数据还有一个方面需要考虑:数据可视化。尽管最终用户极少有此需求,但对于需要浏览和分析数据的数据科学家来说,这点却非常重要。Qt 特别提供了可视化模块,通过2D 和 3D 图表提供了大量查看和详尽分析数据的方法。Qt 助力构建物联网|The Qt Company All rights reserved10用户体验您的物联网设备不会独立存在。虽然有些物联网设备拥有带触摸功能的大型显示屏(例如家庭控制面板),但毕竟只是少数。用户需要实现与设备通讯、配置、数据下载,或者查看和更改
15、状态的交互方式。大多数物联网设备仅通过简单的 LED 闪烁和单一按键式界面实现其 UX 要求。由于人机交互是用户体验的重要组成部分,它对物联网设备的成功也非常重要。大多数物联网设备只能通过台式机、手机或平板电脑 UI 与用户间接交互。Qt 从一开始就是为创建用户界面而设计的,物联网需要这种与生俱来的能力。您可以利用构建简单或复杂、经典或现代、标准化或定制的用户界面。但最重要的是,您用 Qt 构建的所有东西都是跨平台的。无论您的用户是微软的拥趸、苹果狂热粉丝还是 Linux 的铁杆支持者,您的物联网界面都会运行在所有桌面端、iPhone 和安卓手机。只支持一个平台无法满足客户;没有人喜欢被冷落。
16、Qt 提供了一次编写代码服务所有客户的方式,无论其使用哪种操作系统或智能手机。说到一套代码,Qt 的另一大优势是嵌入式设备的固件和用于控制它的应用程序能共享代码。过去,快速应用开发过程中使用的语言和数据库迫使您使用 VB 或 Delphi 等语言开发桌面端应用,而嵌入式端通常只能用 C 语言。这意味着您有两个相同代码的实例 使用两种开发语言、两个 API 和两个测试套件 这显然存在两个产生 Bug 的过程。而您可以使用 Qt 将设计、构建、测试集中到一个数据解析模块,配置管理库或协议堆栈,并在需要运行的所有设备之间共享。Qt 助力构建物联网|The Qt Company All rights
17、reserved11可扩展性任何一个开发团队都不想为每个产品重写软件。这不仅会产生巨大成本,还会大大降低新产品的开发速度。那么为什么我们似乎总是每隔几年就需要废弃许多代码,然后重新开发呢?由于不可预见的需求变化而经常需要重新设计,更糟糕的是在架构产品时对未来预期不足。最坏的例子中,因为系统核心依赖的硬件或软件走到终点,重写这部分已经与您的最终目标不一致了,这可能会导致产品生命周期终结或发展计划的停滞。无论选择哪种开发语言或框架,可能未来都无法避免改写。您必须利用您的经验构建可轻松扩展、修改和调整的软件。Qt 有多种方法可以帮助您确保产品适应不断变化的环境。新的嵌入式硬件Qt 拥有庞大、开放的开
18、发社区,支持海量的嵌入式设备,因此可以基本保证任何新开发主板都会首先移植 Qt 框架。即便您的硬件需求有变化,您也无需担心需要自行移植。新的应用环境随着各种智能手机、UX范例或Linux发行版的流行,强大的 Qt 社区将帮助您的软件框架持续可用,为设备创建新平台以实现与用户的交互。Qt 是一个早期移植选项,因为它有非常强大的跨平台支持。新的传感器Qt Sensor API 支持多个现有传感器类型,如果您的新传感器属于某个预定义类型,您可通过创建一个简单插件来利用这个抽象层。新的协议Qt 拥有多个网络及通讯连接的类,让您能方便地在新的无线技术上使用现有 Socket 通讯。新协议肯定需要新的类来
19、实现,但至少它们可以利用许多现有的类让工作变得简单。新的后台连接您可能需要通过物联网 UX 访问云服务。Qt 拥有RESTful 和 SOAP 接口、XML 和 JSON 解析、以及用于访问 AWS 和 Azure 的云 APIs,而且我们还在不断开发新的连接方式。对插件的支持如果您需要一个能随时添加功能的物联网架构,可以考虑增加插件。您(或开发者社区)可以利用插件为产品增加或提升功能,而无需重写基础代码。Qt不仅为其提供的功能提供了一组标准插件,更重要的是,它为物联网开发者提供了基本的插件架构,让您能轻松实现满足特定需求的插件抽象。如果您不需要复杂如插件的模块化接口,Qt 也支持使用大量第三
20、方的库:包括 C/C+库和许多 Qt 自有库。Qt 助力构建物联网|The Qt Company All rights reserved12如果不善加使用,即便拥有全世界所有的工具也毫无帮助。将现有模块整合到您的系统中(无论是 Qt 还是任何其他框架)一般发生在项目开始阶段,但是您选择使用的开发流程也非常重要。例如,敏捷开发可能非常适合开发可扩展的系统,因为它遵循系统迭代式增量开发的基本模式。无论您采用何种开发流程,模块化编写的抽象化代码都可以轻松进行单元测试,保持软件层之间的最小耦合,并隔离最小化的依赖部分都将大大有助于保持您的物联网软件的生命力和灵活性。Qt 助力构建物联网|The Qt Company All rights reserved13总结物联网行业比以往任何时候都更依赖软件来实现更加智能、互联的设备。您的软件框架所参照标准可能与我们文中定义的标准相匹配,也可能不匹配。但是,如果您希望快速开发功能强大、优化、互联、拥有用户界面和共享功能的跨平台产品,那么您应该考虑 Qt。此外,以上特性并非是吸引您选择 Qt 的全部理由。Qt 还能轻松地进行嵌入式开发、顺畅的大数据处理、良好的用户体验、保证您的软件架构能够与时俱进,这些特点无疑将大大方便物联网软件的开发。无论您要开发什么功能的物联网软件,请切记您正在打造一个可以长期使用的软件架构,因此请谨慎选择。