JT808.Gateway.Abstractions
1.1.8-preview2
See the version list below for details.
dotnet add package JT808.Gateway.Abstractions --version 1.1.8-preview2
NuGet\Install-Package JT808.Gateway.Abstractions -Version 1.1.8-preview2
<PackageReference Include="JT808.Gateway.Abstractions" Version="1.1.8-preview2" />
paket add JT808.Gateway.Abstractions --version 1.1.8-preview2
#r "nuget: JT808.Gateway.Abstractions, 1.1.8-preview2"
// Install JT808.Gateway.Abstractions as a Cake Addin #addin nuget:?package=JT808.Gateway.Abstractions&version=1.1.8-preview2&prerelease // Install JT808.Gateway.Abstractions as a Cake Tool #tool nuget:?package=JT808.Gateway.Abstractions&version=1.1.8-preview2&prerelease
JT808Gateway
基于Pipeline封装的JT808Pipeline支持TCP/UDP通用消息业务处理
基于DotNetty封装的JT808DotNetty支持TCP/UDP通用消息业务处理
新网关的优势
- 跨平台
- 借助 .NET Core模块化的思想
- 单机同时一万辆车在线不是梦(真有一万辆车那都很吃香了<( ̄3 ̄)> <( ̄3 ̄)> <( ̄3 ̄)> )
- 简单易上手
设计模型
集成接口功能
接口名称 | 接口说明 | 使用场景 |
---|---|---|
IJT808SessionProducer | 会话通知(在线/离线)数据生产接口 | 有些超长待机的设备,不会实时保持连接,那么通过平台下发的命令是无法到达的,这时候就需要设备一上线,就即时通知服务去处理,然后在即时的下发消息到设备。 |
IJT808SessionConsumer | 会话通知(在线/离线)数据消费接口 | - |
IJT808MsgProducer | 数据生产接口 | 网关将接收到的数据发送到队列 |
IJT808MsgConsumer | 数据消费接口 | 将数据进行对应的消息业务处理(例:设备流量统计、第三方平台数据转发、消息日志等) |
IJT808MsgReplyProducer | 应答数据生产接口 | 将生产的数据解析为对应的消息Id应答发送到队列 |
IJT808MsgReplyConsumer | 应答数据消费接口 | 将接收到的应答数据下发给设备 |
IJT808MsgReplyLoggingProducer | 网关应答数据日志生产接口 | 将网关能解析到直接能下发的数据发送到队列 |
IJT808MsgReplyLoggingConsumer | 网关应答数据日志消费接口 | 将网关能解析到直接能下发的数据发送到日志系统 |
使用物联网卡通过udp下发指令时,存储的那个socket地址端口,有效期非常短,不速度快点下发,那个socket地址端口就可能映射到别的对应卡去了,所以此处采用跟随设备消息下发指令。
基于网关的相关服务
服务名称 | 服务说明 | 使用场景 |
---|---|---|
MsgIdHandler | 消息处理服务 | 从队列中消费设备上报数据,再结合自身的业务场景,将数据进行处理并入库 |
MsgLogging | 消息日志服务 | 从队列中消费设备上报和平台应答数据,再将数据存入influxdb等数据库中,便于技术和技术支持排查设备与平台交互的原始数据 |
ReplyMessage | 消息响应服务 | 用于响应设备上报消息,以及下发指令信息到设备 |
SessionNotice | 会话管理服务 | 通知设备上线下线,对于udp设备来说,可以在设备上线时,将指令跟随消息下发到设备 |
Traffic (v1.1.0新版pipeline已移出) | 流量统计服务 | 由于运营商sim卡查询流量滞后,通过流量统计服务可以实时准确的统计设备流量,可以最优配置设备的流量大小,以节省成本 |
Transmit | 原包转发服务 | 该服务可以将设备上报原始数据转发到第三方,支持全部转发,指定终端号转发 |
基于WebApi的消息业务处理程序
通过继承JT808.DotNetty.Core.Handlers.JT808MsgIdHttpHandlerBase去实现自定义的WebApi接口服务。
通过继承JT808.Gateway.Handlers.JT808MsgIdDefaultWebApiHandler去实现自定义的WebApi接口服务。
基于NET5.0 Pipeline
Pipeline分为两种方式使用,一种是使用队列的方式,一种是网关集成的方式。
使用方式 | 特性 | 备注 |
---|---|---|
使用队列 | 网关不需要重启,相当于透传数据,设备上来的数据直接入队列,通过服务去处理消息。 | 设备多的可以这样搞,这样关注点在业务上面。 |
使用网关集成 | 网关需要根据消息业务的变化去处理,也就意味着更改业务,需要重启网关,但是上手简单。 | 设备少的,开发能力弱的,允许设备丢点数据的。 |
Pipeline的NuGet安装
Package Name | Version | Preview Version | Downloads | |
---|---|---|---|---|
Install-Package JT808.Gateway.Abstractions | ||||
Install-Package JT808.Gateway | ||||
Install-Package JT808.Gateway.WebApiClientTool | ||||
Install-Package JT808.Gateway.Client | ||||
Install-Package JT808.Gateway.Kafka | ||||
Install-Package JT808.Gateway.Transmit | ||||
Install-Package JT808.Gateway.SessionNotice | ||||
Install-Package JT808.Gateway.ReplyMessage | ||||
Install-Package JT808.Gateway.MsgLogging | ||||
Install-Package JT808.Gateway.MsgIdHandler |
基于DotNetty
DotNetty的NuGet安装
Package Name | Version | Preview Version | Downloads | ||
---|---|---|---|---|---|
Install-Package JT808.DotNetty.Abstractions | |||||
Install-Package JT808.DotNetty.Core | |||||
Install-Package JT808.DotNetty.Tcp | |||||
Install-Package JT808.DotNetty.Udp | |||||
Install-Package JT808.DotNetty.WebApi | |||||
Install-Package JT808.DotNetty.WebApiClientTool | |||||
Install-Package JT808.DotNetty.Client | |||||
Install-Package JT808.DotNetty.Transmit | |||||
Install-Package JT808.DotNetty.Traffic | |||||
Install-Package JT808.DotNetty.SessionNotice | |||||
Install-Package JT808.DotNetty.ReplyMessage | |||||
Install-Package JT808.DotNetty.MsgLogging | |||||
Install-Package JT808.DotNetty.MsgIdHandler | |||||
Install-Package JT808.DotNetty.Kafka |
举个栗子
Pipeline
使用网关集成方式
1.打开/simples/JT808.Simples.sln项目进行还原编译生成
2.进入JT808.Gateway.SimpleServer项目下的Debug目录运行服务端
3.进入JT808.Gateway.SimpleClient项目下的Debug目录运行客户端
如图所示:
使用队列方式
1.打开/simples/JT808.Simples.sln项目进行还原编译生成
2.JT808.Gateway.SimpleQueueServer项目下的Debug目录运行服务端
3.JT808.Gateway.SimpleQueueService项目下的Debug目录运行消息处理服务
4.JT808.Gateway.SimpleQueueNotification项目下的Debug目录运行WebSocket服务 从浏览器中打开localhost:5000查看数据
5.进入JT808.Gateway.SimpleClient项目下的Debug目录运行客户端
注意:需要安装kafka和zookeeper
如图所示:
DotNetty
1.打开/simples/JT808.Simples.sln项目进行还原编译生成
2.进入JT808.DotNetty.SimpleServer项目下的Debug目录运行服务端
3.进入JT808.DotNetty.SimpleClient项目下的Debug目录运行客户端
如图所示:
常见问题
- 多协议兼容实现思路点我查看
单端口兼容多协议虽然可以实现,但是还是不建议这么做,建议最好是用端口分开,避免不必要的麻烦
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net6.0 is compatible. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
-
net6.0
- JT808 (>= 2.5.0-preview3)
- Microsoft.Extensions.Hosting.Abstractions (>= 6.0.0)
- Microsoft.Extensions.Logging.Abstractions (>= 6.0.1)
- Microsoft.Extensions.Options (>= 6.0.0)
- Microsoft.Extensions.Options.ConfigurationExtensions (>= 6.0.0)
NuGet packages (10)
Showing the top 5 NuGet packages that depend on JT808.Gateway.Abstractions:
Package | Downloads |
---|---|
JT808.Gateway
基于Pipeline实现的JT808Gateway的网络库 |
|
JT808.Gateway.Kafka
基于Kafka的JT808消息发布与订阅 |
|
JT808.Gateway.Transmit
基于JT808实现的数据转发服务 |
|
JT808.Gateway.MsgLogging
基于JT808消息上下行日志服务 |
|
JT808.Gateway.SessionNotice
基于JT808会话通知服务 |
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
1.1.8-preview6 | 623 | 6/6/2023 |
1.1.8-preview5 | 466 | 5/3/2023 |
1.1.8-preview4 | 546 | 12/18/2022 |
1.1.8-preview3 | 505 | 11/26/2022 |
1.1.8-preview2 | 574 | 9/3/2022 |
1.1.8-preview1 | 585 | 5/25/2022 |
1.1.7 | 3,433 | 3/25/2022 |
1.1.6 | 2,680 | 1/27/2022 |
1.1.5 | 1,504 | 11/19/2021 |
1.1.4 | 1,704 | 9/30/2021 |
1.1.3 | 1,651 | 8/31/2021 |
1.1.2 | 1,806 | 7/30/2021 |
1.1.1 | 1,699 | 6/29/2021 |
1.1.1-preview4 | 873 | 5/22/2021 |
1.1.1-preview3 | 829 | 4/30/2021 |
1.1.1-preview2 | 900 | 4/22/2021 |
1.1.1-preview1 | 864 | 3/11/2021 |
1.1.0 | 1,595 | 2/18/2021 |
1.1.0-preview6 | 904 | 1/4/2021 |
1.1.0-preview5 | 887 | 12/22/2020 |
1.1.0-preview4 | 909 | 12/1/2020 |
1.1.0-preview3 | 841 | 11/30/2020 |
1.1.0-preview2 | 826 | 11/29/2020 |
1.1.0-preview1 | 854 | 11/28/2020 |
1.0.2-preview3 | 945 | 10/29/2020 |
1.0.2-preview2 | 979 | 10/26/2020 |
1.0.2-preview1 | 1,181 | 9/14/2020 |
1.0.1 | 2,597 | 5/14/2020 |
1.0.0 | 2,260 | 3/2/2020 |
1.0.0-preview9 | 1,182 | 2/26/2020 |
1.0.0-preview8 | 1,224 | 2/14/2020 |
1.0.0-preview7 | 1,106 | 2/5/2020 |
1.0.0-preview6 | 1,095 | 2/4/2020 |
1.0.0-preview5 | 1,171 | 2/2/2020 |
1.0.0-preview4 | 1,178 | 1/30/2020 |
1.0.0-preview3 | 1,239 | 12/26/2019 |
1.0.0-preview2 | 851 | 12/23/2019 |
基于Pipeline实现的JT808Gateway的抽象库