All Projects → SmallChi → Jt808gateway

SmallChi / Jt808gateway

Licence: mit
使用Pipeline和DotNetty分别实现的JT808Gateway支持TCP/UDP通用消息业务处理(支持2013、2019版本)

Programming Languages

csharp
926 projects

Projects that are alternatives of or similar to Jt808gateway

Owo
...We might be furry trash.
Stars: ✭ 68 (-37.04%)
Mutual labels:  dotnetcore
Exram.gremlinq
A .NET object-graph-mapper for Apache TinkerPop™ Gremlin enabled databases.
Stars: ✭ 84 (-22.22%)
Mutual labels:  dotnetcore
Graphql Dotnetcore
GraphQL for .NET core based on https://github.com/graphql/graphql-js
Stars: ✭ 97 (-10.19%)
Mutual labels:  dotnetcore
Lens
Language for Embeddable .NET Scripting
Stars: ✭ 71 (-34.26%)
Mutual labels:  dotnetcore
Chloe
A lightweight and high-performance Object/Relational Mapping(ORM) library for .NET --C#
Stars: ✭ 1,248 (+1055.56%)
Mutual labels:  dotnetcore
Docker Series
Docker Series about containerizing ASP.NET Core app with MySQL..
Stars: ✭ 88 (-18.52%)
Mutual labels:  dotnetcore
Ionic Example App
A Ionic Example App (previously known as ionic 2 examples). Contains different examples on how to use the Ionic Framework
Stars: ✭ 61 (-43.52%)
Mutual labels:  dotnetcore
Cronscheduler.aspnetcore
Cron Scheduler for AspNetCore 2.x/3.x or DotNetCore 2.x/3.x Self-hosted
Stars: ✭ 100 (-7.41%)
Mutual labels:  dotnetcore
Walle.workflowengine
一款轻量级的工作流引擎,快速构建工单应用.
Stars: ✭ 84 (-22.22%)
Mutual labels:  dotnetcore
Dotnet Stellar Sdk
Stellar API SDK for .NET Core 2.x and .NET Standard 2.0
Stars: ✭ 97 (-10.19%)
Mutual labels:  dotnetcore
Live.avalonia
In-app live reloading for Avalonia applications.
Stars: ✭ 71 (-34.26%)
Mutual labels:  dotnetcore
Aspnetcore Practice
ASP.NET Core 專案練習集合,ASP.NET Core Practice Projects
Stars: ✭ 80 (-25.93%)
Mutual labels:  dotnetcore
Module Shop Mini Program
一个基于 .NET Core构建的简单、跨平台、模块化的商城系统
Stars: ✭ 89 (-17.59%)
Mutual labels:  dotnetcore
Event Sourcing Castanha
An Event Sourcing service template with DDD, TDD and SOLID. It has High Cohesion and Loose Coupling, it's a good start for your next Microservice application.
Stars: ✭ 68 (-37.04%)
Mutual labels:  dotnetcore
Quiz
Example real time quiz application with .NET Core, React, DDD, Event Sourcing, Docker and built-in infrastructure for CI/CD with k8s, jenkins and helm
Stars: ✭ 100 (-7.41%)
Mutual labels:  dotnetcore
Avalonstudio
Cross platform IDE and Shell
Stars: ✭ 1,132 (+948.15%)
Mutual labels:  dotnetcore
Streamdecktoolkit
A .NET Standard library, template, and tools for building extensions to the Elgato Stream Deck
Stars: ✭ 85 (-21.3%)
Mutual labels:  dotnetcore
Dotnet Istanbul Microservices Demo
This is the demo application that i created for my talk 'Microservice Architecture & Implementation with Asp.Net Core' at Dotnet İstanbul Meetup Group.
Stars: ✭ 109 (+0.93%)
Mutual labels:  dotnetcore
Dotnetcrawler
DotnetCrawler is a straightforward, lightweight web crawling/scrapying library for Entity Framework Core output based on dotnet core. This library designed like other strong crawler libraries like WebMagic and Scrapy but for enabling extandable your custom requirements. Medium link : https://medium.com/@mehmetozkaya/creating-custom-web-crawler-with-dotnet-core-using-entity-framework-core-ec8d23f0ca7c
Stars: ✭ 100 (-7.41%)
Mutual labels:  dotnetcore
Hypepool
🚀 ⚡️ ✨ next-gen mining pool server software
Stars: ✭ 89 (-17.59%)
Mutual labels:  dotnetcore

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
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
Install-Package JT808.Gateway.Traffic (v1.1.0新版已移出) JT808.Gateway.Traffic JT808.Gateway.Traffic JT808.Gateway.Traffic

基于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
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

举个栗子

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

常见问题:

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

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].