目录

介绍

什么是MQTT

REST是什么?

体系结构

有效载荷

安全

代码样例

代理

发布者

订阅者

执行

概要

Git存储库链接

参考文献


介绍

发布/订阅模式是解耦软件的常见要求。有各种可用的技术和协议。在本文中,我将向您展示如何使用MQTT协议在.NET Core应用程序中实现。

什么是MQTT

MQTT是一种消息协议,具有“较小的代码占用空间和在线占用空间”。MQTT是基于发布——订阅的消息传递协议,它建立在TCP/IP之上。

与具有请求/响应范例的HTTP相比,该协议使用发布/订阅体系结构。发布/订阅是事件驱动的,并允许将消息推送到客户端。

中央通信点是MQTT代理,它负责在发送方和合法接收方之间调度所有消息。

每个向代理发布消息的客户端都会在消息中包含一个主题主题是代理的路由信息​​

每个想要接收消息的客户端都订阅了某个主题,代理将具有匹配主题的所有消息传递给客户端。

因此,客户不必彼此了解,他们只需要就主题进行交流。

这种体系结构可实现高度可扩展的解决方案,而无需数据产生和数据使用者之间的依赖。

REST是什么?

  • HTTP/REST对处理文档和资源很有用。
  • MQTT对于处理消息很有用。
  • HTTP/REST可能很复杂,并且并非总是简单消息的最佳解决方案。
  • MQTT数据包大小为2字节+有效负载。
  • MQTT支持一对一,一对多和多对多消息。
  • 请求和响应发布者和订阅者。

体系结构

与HTTP的区别在于,客户端不必提取其所需的信息,但是如果有新内容,则代理会将信息推送到客户端。

因此,每个MQTT客户端都具有到代理的永久打开的TCP连接。如果此连接在任何情况下都中断,则MQTT代理可以缓冲所有消息并将其重新联机时发送给客户端。

如前所述,MQTT中用于分发消息的中心概念是主题。主题是一个简单的字符串,可以具有更多的层次结构级别,并用斜杠分隔

用于发送客厅温度数据的示例主题可以是house/living-room/temperature

一方面,客户端可以订阅确切的主题,另一方面,可以使用通配符。订阅house/+/temperature将导致所有消息发送到前面提到的主题house/living-room/temperatur以及任何在客厅位置具有任意值的主题,例如 house/kitchen/temperature

加号是单级通配符,并且只允许一个层次结构使用任意值。如果您需要预订多个级别,例如整个子树,则还可以使用一个多级通配符(#)。它允许订阅所有基础层次结构级别。例如,house/#订阅以house开头的所有主题。

有效载荷

  • MQTT与负载无关。您可以使用以下任何一种:

    • 一个简单的字节数组
    • 一个简单的字符串
    • 或JSON

发布home/livingroom/light/1消息

安全

  • SSL/TLS支持
  • 用户名/密码
  • 加密有效负载(与数据/有效负载无关)
  • 物联网的安全性不容小觑!!
  • SSL/TLS是必须具备的

代码样例

我已经构建了一个示例.NET Core控制台应用程序来测试该库。以下是代码屏幕截图,这些屏幕截图很容易解释,您可以根据需要从git下载代码。

该解决方案包含以下三个项目,所有项目都引用了MQTTnet。一个应用程序充当发布者,另一应用程序充当订阅者,第三应用程序充当代理,以说明消息传递系统的主要模块。

代理

发布者和订阅者都连接到代理。

发布者

这是SimulatePublish 方法的代码:

订阅者

执行

以下是运行解决方案的屏幕截图:

>>发布者和订阅者与代理连接。

在这里您可以看到发布者/订阅者和代理的实际行动:

概要

这是MQTT及其用法的非常基本的介绍。为了使讨论简单,我将代码保持在最低限度。发布者/订阅者模式非常强大,它使我们能够轻松创建解耦的应用程序,而MQTTNet库的使用使在我们的应用程序中实现此模式非常容易。您可以从下面的源代码链接上的git存储库中下载示例。另外,我建议您检查参考链接以获取更多信息。

Git存储库链接

  • https://github.com/jawadhasan/mqttBasic.git

参考文献

  • https://www.hivemq.com/blog/how-to-get-started-with-mqtt/
  • https://github.com/chkr1011/MQTTnet/wiki/Client

MQTT——具有.NET Core的消息队列遥测传输协议相关推荐

  1. 互联网协议 — MQTT 消息队列遥测传输协议

    目录 文章目录 目录 MQTT MQTT 的设计原则 MQTT 的实现原理 MQTT 的关键术语 MQTT 的方法 MQTT 报文结构 Linux MQTT Server Android MQTT C ...

  2. MQTT - 消息队列遥测传输协议

    MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的"轻量级" ...

  3. 消息队列遥测传输(MQTT)介绍

    消息队列遥测传输(MQTT)是一种ISO标准消息传递协议,旨在通过不可靠的网络连接传感器.它在TCP/IP互联网协议之上工作. 两位工程师Andy Stanford-Clark和Arlen Nippe ...

  4. MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)协议

    简介 mqtt有IBM公司开发,90年代的产物. 解决了如下问题:服务器必须要实现成千上万的接入:单词数据量小,不能出错:必须能够使用高延迟.偶尔断网等通信不可靠的风险:根据数据的重要程度和特性,设置 ...

  5. java mqtt客户端_MQTT消息队列遥测传输

    说实话这个折腾了我好久好久,我才知道,原来学习不是最痛苦的,学习却学不会才是最痛苦的事.生产者将消息发布到一个主题,消费者从该协议里读取数据,MQTT是为IoT物联网通信设计的协议,MQTT使物联网低 ...

  6. 消息队列服务器 轻量,PHP的轻量消息队列php-resque使用说明

    消息队列处理后台任务带来的问题 项目中经常会有后台运行任务的需求,比如发送邮件时,因为要连接邮件服务器,往往需要5-10秒甚至更长时间,如果能先给用户一个成功的提示信息,然后在后台慢慢处理发送邮件的操 ...

  7. 一种MQTT客户端消息队列的设计

    MQTT 简介 MQTT(消息队列遥测传输)是ISO 标准(ISO/IEC PRF 20922)下基于发布/订阅范式的消息协议.它工作在 TCP/IP协议族上,是为硬件性能低下的远程设备以及网络状况糟 ...

  8. C#实现阿里云微消息队列LMQ

    本文属于个人原创作品.个人总结,谢绝转载.抄袭.如果您有疑问或者希望沟通交流,可以联系QQ:865562060. 一.简介 MQ 微消息队列(Light Message Queue,简称 LMQ): ...

  9. 消息队列(2):常见的消息队列协议

    协议很常见,只要是通信,就会用到协议,就像我们说话的语言一样,不同的语言连通着不同的人群. 所以说,消息队列也是一样,想要互相通信,就要使用同一种协议. 每个协议下的消息队列,都有着不同的角色定义. ...

最新文章

  1. 多模态理论张德禄_观点 | 多模态研究:认知语言学的新方法
  2. squid 安装、配置、优化
  3. 【20160924】GOCVHelper MFC增强算法(1)
  4. 面试题整理13 合并排序链表去重
  5. 学长毕业日记 :本科毕业论文写成博士论文的神操作20170319
  6. 微课--25分钟学会使用Python群发电子邮件
  7. Django--4、认证系统
  8. 【图文】在windows7 下安装和配置Memcached 64-bit for Windows
  9. 中农考研计算机机考,开一个考研经验贴~2020中农考生,特别是农科大类考生看过来...
  10. Keil V4安装教程
  11. 06_JavaEE回顾笔记Ⅱ
  12. 全球计算机大学排名!软科世界一流学科排名
  13. RationalDMIS 2020高级编程之提取数据OBTAIN语句
  14. NAT技术与代理服务器调研
  15. 生物什么时候学公式计算机,高考生物重要规律性关系及公式精华归纳,转走吧...
  16. android 输入法更换_安卓手机怎么更换输入法-安卓手机切换输入法的方法 - 河东软件园...
  17. logback系列之四:输出日志到不同文件
  18. 宝塔linux面板负载状态过高,宝塔Linux面板负载状态CPU100%怎么解决
  19. Android 解决使用VLC实现视频播放报错 libvlc decoder: more than 5 seconds of late video
  20. Linux运维,到底如何入门?常用linux操作指令盘点!

热门文章

  1. windows服务器查看系统异常,Windows服务器异常---查看系统日志--以蓝屏为例分析...
  2. 左边任务栏_Windows10 系统桌面底部的任务栏在侧边了怎么还原
  3. mac r 导出csv文件_R在Max OS进行导入和导出xlsx文件
  4. ubuntu 9.04 更新源_ubuntu更换中国源
  5. mediarecorder直播html5,html5 pc端录制视频+MediaStreamRecorder
  6. 元宵节电商促销活动首页PSD分层模板
  7. 炫彩渐变海报素材模板,可运用到海报、电商设计等方面
  8. UI设计实用素材|寻找一种新的方法来设计网站,单页网站
  9. android 定时器 耗电,Android定时器
  10. java线程中的死锁_Java多线程中的死锁 - Break易站