JT808.Gateway.Abstractions 1.1.8-preview2

This is a prerelease version of JT808.Gateway.Abstractions.
There is a newer prerelease version of this package available.
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                
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="JT808.Gateway.Abstractions" Version="1.1.8-preview2" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add JT808.Gateway.Abstractions --version 1.1.8-preview2                
#r "nuget: JT808.Gateway.Abstractions, 1.1.8-preview2"                
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// 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通用消息业务处理

了解JT808协议进这边

了解JT809协议进这边

了解JT1078协议进这边

了解JTNE协议进这边

玩一玩压力测试

MIT Licence.NET Core

新网关的优势

  1. 跨平台
  2. 借助 .NET Core模块化的思想
  3. 单机同时一万辆车在线不是梦(真有一万辆车那都很吃香了<( ̄3 ̄)> <( ̄3 ̄)> <( ̄3 ̄)> )
  4. 简单易上手

设计模型

design_model

集成接口功能

接口名称 接口说明 使用场景
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 JT808.Gateway.Abstractions JT808.Gateway.Abstractions JT808.Gateway.Abstractions JT808.Gateway.Abstractions
Install-Package JT808.Gateway JT808.Gateway JT808.Gateway JT808.Gateway
Install-Package JT808.Gateway.WebApiClientTool JT808.Gateway.WebApiClientTool JT808.Gateway.WebApiClientTool JT808.Gateway.WebApiClientTool
Install-Package JT808.Gateway.Client JT808.Gateway.Client JT808.Gateway.Client JT808.Gateway.Client
Install-Package JT808.Gateway.Kafka JT808.Gateway.Kafka JT808.Gateway.Kafka JT808.Gateway.Kafka
Install-Package JT808.Gateway.Transmit JT808.Gateway.Transmit JT808.Gateway.Transmit JT808.Gateway.Transmit
Install-Package JT808.Gateway.SessionNotice JT808.Gateway.SessionNotice JT808.Gateway.SessionNotice JT808.Gateway.SessionNotice
Install-Package JT808.Gateway.ReplyMessage JT808.Gateway.ReplyMessage JT808.Gateway.ReplyMessage JT808.Gateway.ReplyMessage
Install-Package JT808.Gateway.MsgLogging JT808.Gateway.MsgLogging JT808.Gateway.MsgLogging JT808.Gateway.MsgLogging
Install-Package JT808.Gateway.MsgIdHandler JT808.Gateway.MsgIdHandler JT808.Gateway.MsgIdHandler JT808.Gateway.MsgIdHandler

基于DotNetty

DotNetty的NuGet安装

Package Name Version Preview Version Downloads
Install-Package JT808.DotNetty.Abstractions JT808.DotNetty.Abstractions JT808.DotNetty.Abstractions JT808.DotNetty.Abstractions
Install-Package JT808.DotNetty.Core JT808.DotNetty.Core JT808.DotNetty.Core JT808.DotNetty.Core
Install-Package JT808.DotNetty.Tcp JT808.DotNetty.Tcp JT808.DotNetty.Tcp JT808.DotNetty.Tcp
Install-Package JT808.DotNetty.Udp JT808.DotNetty.Udp JT808.DotNetty.Udp JT808.DotNetty.Udp
Install-Package JT808.DotNetty.WebApi JT808.DotNetty.WebApi JT808.DotNetty.WebApi JT808.DotNetty.WebApi
Install-Package JT808.DotNetty.WebApiClientTool JT808.DotNetty.WebApiClientTool JT808.DotNetty.WebApiClientTool JT808.DotNetty.WebApiClientTool
Install-Package JT808.DotNetty.Client JT808.DotNetty.Client JT808.DotNetty.Client JT808.DotNetty.Client
Install-Package JT808.DotNetty.Transmit JT808.DotNetty.Transmit JT808.DotNetty.Transmit JT808.DotNetty.Transmit
Install-Package JT808.DotNetty.Traffic JT808.DotNetty.Traffic JT808.DotNetty.Traffic JT808.DotNetty.Traffic
Install-Package JT808.DotNetty.SessionNotice JT808.DotNetty.SessionNotice JT808.DotNetty.SessionNotice JT808.DotNetty.SessionNotice
Install-Package JT808.DotNetty.ReplyMessage JT808.DotNetty.ReplyMessage JT808.DotNetty.ReplyMessage JT808.DotNetty.ReplyMessage
Install-Package JT808.DotNetty.MsgLogging JT808.DotNetty.MsgLogging JT808.DotNetty.Abstractions JT808.DotNetty.MsgLogging JT808.DotNetty.MsgLogging
Install-Package JT808.DotNetty.MsgIdHandler JT808.DotNetty.MsgIdHandler JT808.DotNetty.MsgIdHandler JT808.DotNetty.MsgIdHandler
Install-Package JT808.DotNetty.Kafka JT808.DotNetty.Kafka JT808.DotNetty.Kafka JT808.DotNetty.Kafka JT808.DotNetty.Kafka

举个栗子

Pipeline

使用网关集成方式

1.打开/simples/JT808.Simples.sln项目进行还原编译生成

2.进入JT808.Gateway.SimpleServer项目下的Debug目录运行服务端

3.进入JT808.Gateway.SimpleClient项目下的Debug目录运行客户端

如图所示: demo3

使用队列方式

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

如图所示: demo4

DotNetty

1.打开/simples/JT808.Simples.sln项目进行还原编译生成

2.进入JT808.DotNetty.SimpleServer项目下的Debug目录运行服务端

3.进入JT808.DotNetty.SimpleClient项目下的Debug目录运行客户端

如图所示: demo2

常见问题

单端口兼容多协议虽然可以实现,但是还是不建议这么做,建议最好是用端口分开,避免不必要的麻烦

Product 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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

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,436 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,173 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的抽象库