@@ -1,6 +1,6 @@ | |||||
# JT808DotNetty | # JT808DotNetty | ||||
基于DotNetty封装的JT808DotNetty支持TCP/UDP通用消息业务处理 | |||||
基于DotNetty封装的JT808DotNetty支持TCP/UDP通用消息业务处理 | |||||
[了解JT808协议进这边](https://github.com/SmallChi/JT808) | [了解JT808协议进这边](https://github.com/SmallChi/JT808) | ||||
@@ -10,13 +10,11 @@ | |||||
[了解JTNE协议进这边](https://github.com/SmallChi/JTNewEnergy) | [了解JTNE协议进这边](https://github.com/SmallChi/JTNewEnergy) | ||||
[玩一玩压力测试](https://github.com/SmallChi/JT808DotNetty/blob/master/doc/README.md) | |||||
[V2.2.1老版本](https://github.com/SmallChi/JT808DotNetty/blob/master/doc/README_V2.2.1.md) | |||||
[玩一玩压力测试](https://github.com/SmallChi/JT808DotNetty/blob/master/doc/README.md) | |||||
[](https://github.com/SmallChi/JT808DotNetty/blob/master/LICENSE) | [](https://github.com/SmallChi/JT808DotNetty/blob/master/LICENSE) | ||||
## 新网关的优势 | |||||
## 新网关的优势: | |||||
1. 跨平台 | 1. 跨平台 | ||||
2. 借助 .NET Core模块化的思想 | 2. 借助 .NET Core模块化的思想 | ||||
@@ -27,16 +25,13 @@ | |||||
 |  | ||||
## 基于Grpc的消息业务处理程序(JT808.Gateway.GrpcService) | |||||
## 基于WebApi的消息业务处理程序(JT808.DotNetty.WebApi) | |||||
``` 1 | |||||
services.AddGrpcClient<JT808Gateway.JT808GatewayClient>(o => | |||||
{ | |||||
o.Address = new Uri("https://localhost:5001"); | |||||
}); | |||||
``` | |||||
通过继承JT808.DotNetty.Core.Handlers.JT808MsgIdHttpHandlerBase去实现自定义的WebApi接口服务。 | |||||
[WebApi公共接口服务](https://github.com/SmallChi/JT808DotNetty/blob/master/api/README.md) | |||||
## 集成接口功能(JT808.Gateway.PubSub) | |||||
## 集成接口功能(JT808.DotNetty.Abstractions) | |||||
|接口名称|接口说明|使用场景| | |接口名称|接口说明|使用场景| | ||||
|:------:|:------|:------| | |:------:|:------|:------| | ||||
@@ -49,7 +44,7 @@ services.AddGrpcClient<JT808Gateway.JT808GatewayClient>(o => | |||||
> 使用物联网卡通过udp下发指令时,存储的那个socket地址端口,有效期非常短,不速度快点下发,那个socket地址端口就可能映射到别的对应卡去了,所以此处采用跟随设备消息下发指令。 | > 使用物联网卡通过udp下发指令时,存储的那个socket地址端口,有效期非常短,不速度快点下发,那个socket地址端口就可能映射到别的对应卡去了,所以此处采用跟随设备消息下发指令。 | ||||
## 基于网关的相关服务(JT808.Gateway.BusinessServices) | |||||
## 基于网关的相关服务 | |||||
|服务名称|服务说明|使用场景| | |服务名称|服务说明|使用场景| | ||||
|:------:|:------|:------| | |:------:|:------|:------| | ||||
@@ -64,57 +59,82 @@ services.AddGrpcClient<JT808Gateway.JT808GatewayClient>(o => | |||||
| Package Name | Version | Downloads | | | Package Name | Version | Downloads | | ||||
| --------------------- | -------------------------------------------------- | --------------------------------------------------- | | | --------------------- | -------------------------------------------------- | --------------------------------------------------- | | ||||
| Install-Package JT808.Gateway |  |  | | |||||
| Install-Package JT808.Gateway.Kafka|  |  | | |||||
| 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 |  |  | | |||||
| Install-Package JT808.DotNetty.RabbitMQ |  |  | | |||||
## 举个栗子1 | ## 举个栗子1 | ||||
1.进入JT808.Gateway.SimpleServer项目下的Debug目录运行服务端 | |||||
2.进入JT808.Gateway.SimpleClient项目下的Debug目录运行客户端 | |||||
``` 1 | |||||
static void Main(string[] args) | |||||
``` demo1 | |||||
static async Task Main(string[] args) | |||||
{ | { | ||||
Host.CreateDefaultBuilder(args) | |||||
.ConfigureWebHostDefaults(webBuilder => | |||||
var serverHostBuilder = new HostBuilder() | |||||
.ConfigureAppConfiguration((hostingContext, config) => | |||||
{ | |||||
config.SetBasePath(AppDomain.CurrentDomain.BaseDirectory); | |||||
config.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true); | |||||
}) | |||||
.ConfigureLogging((context, logging) => | |||||
{ | { | ||||
//配置Grpc服务端 | |||||
webBuilder | |||||
.ConfigureKestrel(options => | |||||
{ | |||||
options.Listen(IPAddress.Any, 5001, listenOptions => | |||||
{ | |||||
listenOptions.Protocols = HttpProtocols.Http2; | |||||
listenOptions.UseHttps($"{Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Configs", "test.cer")}", ""); | |||||
}); | |||||
}) | |||||
.Configure(app => | |||||
{ | |||||
app.UseRouting(); | |||||
app.UseEndpoints(endpoints => | |||||
{ | |||||
//配置Grpc服务节点 | |||||
endpoints.MapGrpcService<JT808GatewayService>(); | |||||
}); | |||||
}); | |||||
logging.AddConsole(); | |||||
logging.SetMinimumLevel(LogLevel.Trace); | |||||
}) | }) | ||||
.ConfigureServices((hostContext,services) => | |||||
.ConfigureServices((hostContext, services) => | |||||
{ | { | ||||
//services.Configure<KestrelServerOptions>(hostContext.Configuration.GetSection("Kestrel")); | |||||
//添加Grpc服务 | |||||
services.AddGrpc(); | |||||
//添加JT808协议 | |||||
services.AddSingleton<ILoggerFactory, LoggerFactory>(); | |||||
services.AddSingleton(typeof(ILogger<>), typeof(Logger<>)); | |||||
services.AddJT808Configure() | services.AddJT808Configure() | ||||
//添加JT808网关配置 | |||||
.AddJT808Gateway(hostContext.Configuration) | |||||
//添加基于Tcp的808网关 | |||||
.AddJT808GatewayTcpHost() | |||||
//添加基于Udp的808网关 | |||||
.AddJT808GatewayUdpHost() | |||||
.AddJT808NettyCore(hostContext.Configuration) | |||||
.AddJT808TcpNettyHost() | |||||
.AddJT808UdpNettyHost() | |||||
.AddJT808WebApiNettyHost() | |||||
//扩展webapi JT808MsgIdHttpHandlerBase | |||||
//.ReplaceMsgIdHandler<JT808MsgIdHttpCustomHandler>() | |||||
.Builder(); | .Builder(); | ||||
}) | |||||
.Build() | |||||
.Run(); | |||||
//添加kafka插件 | |||||
//.AddJT808ServerKafkaMsgProducer(hostContext.Configuration) | |||||
//.AddJT808ServerKafkaMsgReplyConsumer(hostContext.Configuration) | |||||
//.AddJT808ServerKafkaSessionProducer(hostContext.Configuration) | |||||
//.Builder(); | |||||
//webapi客户端调用 | |||||
//services.AddHttpApi<IJT808DotNettyWebApi>().ConfigureHttpApiConfig((c, p) => | |||||
//{ | |||||
// c.HttpHost = new Uri("http://localhost:828/jt808api/"); | |||||
// c.FormatOptions.DateTimeFormat = "yyyy-MM-dd HH:mm:ss.fff"; | |||||
// c.LoggerFactory = p.GetRequiredService<ILoggerFactory>(); | |||||
//}); | |||||
//var client = services.BuildServiceProvider().GetRequiredService<IJT808DotNettyWebApi>(); | |||||
//var result = client.GetTcpAtomicCounter().InvokeAsync().Result; | |||||
}); | |||||
await serverHostBuilder.RunConsoleAsync(); | |||||
} | } | ||||
``` | ``` | ||||
如图所示: | |||||
 | |||||
## 举个栗子2 | |||||
1.拉取JT808子模块 | |||||
2.打开项目进行还原编译生成 | |||||
3.进入JT808.DotNetty.SimpleServer项目下的Debug目录运行服务端 | |||||
4.进入JT808.DotNetty.SimpleClient项目下的Debug目录运行客户端 | |||||
如图所示: | |||||
 |
@@ -0,0 +1,120 @@ | |||||
# JT808DotNetty | |||||
基于DotNetty封装的JT808DotNetty支持TCP/UDP通用消息业务处理 | |||||
[了解JT808协议进这边](https://github.com/SmallChi/JT808) | |||||
[了解JT809协议进这边](https://github.com/SmallChi/JT809) | |||||
[了解JT1078协议进这边](https://github.com/SmallChi/JT1078) | |||||
[了解JTNE协议进这边](https://github.com/SmallChi/JTNewEnergy) | |||||
[玩一玩压力测试](https://github.com/SmallChi/JT808DotNetty/blob/master/doc/README.md) | |||||
[V2.2.1老版本](https://github.com/SmallChi/JT808DotNetty/blob/master/doc/README_V2.2.1.md) | |||||
[](https://github.com/SmallChi/JT808DotNetty/blob/master/LICENSE) | |||||
## 新网关的优势 | |||||
1. 跨平台 | |||||
2. 借助 .NET Core模块化的思想 | |||||
3. 单机同时一万辆车在线不是梦(真有一万辆车那都很吃香了<( ̄3 ̄)> <( ̄3 ̄)> <( ̄3 ̄)> ) | |||||
4. 简单易上手 | |||||
## 设计模型 | |||||
 | |||||
## 基于Grpc的消息业务处理程序(JT808.Gateway.GrpcService) | |||||
``` 1 | |||||
services.AddGrpcClient<JT808Gateway.JT808GatewayClient>(o => | |||||
{ | |||||
o.Address = new Uri("https://localhost:5001"); | |||||
}); | |||||
``` | |||||
## 集成接口功能(JT808.Gateway.PubSub) | |||||
|接口名称|接口说明|使用场景| | |||||
|:------:|:------|:------| | |||||
| IJT808SessionProducer| 会话通知(在线/离线)数据生产接口| 有些超长待机的设备,不会实时保持连接,那么通过平台下发的命令是无法到达的,这时候就需要设备一上线,就即时通知服务去处理,然后在即时的下发消息到设备。| | |||||
| IJT808SessionConsumer| 会话通知(在线/离线)数据消费接口| -| | |||||
| IJT808MsgProducer| 数据生产接口| 网关将接收到的数据发送到队列| | |||||
| IJT808MsgConsumer| 数据消费接口| 将数据进行对应的消息业务处理(例:设备流量统计、第三方平台数据转发、消息日志等) | | |||||
| IJT808MsgReplyProducer| 应答数据生产接口|将生产的数据解析为对应的消息Id应答发送到队列 | | |||||
| IJT808MsgReplyConsumer| 应答数据消费接口| 将接收到的应答数据下发给设备| | |||||
> 使用物联网卡通过udp下发指令时,存储的那个socket地址端口,有效期非常短,不速度快点下发,那个socket地址端口就可能映射到别的对应卡去了,所以此处采用跟随设备消息下发指令。 | |||||
## 基于网关的相关服务(JT808.Gateway.BusinessServices) | |||||
|服务名称|服务说明|使用场景| | |||||
|:------:|:------|:------| | |||||
|MsgIdHandler| 消息处理服务|从队列中消费设备上报数据,再结合自身的业务场景,将数据进行处理并入库 | | |||||
|MsgLogging | 消息日志服务|从队列中消费设备上报和平台应答数据,再将数据存入influxdb等数据库中,便于技术和技术支持排查设备与平台交互的原始数据| | |||||
|ReplyMessage| 消息响应服务| 用于响应设备上报消息,以及下发指令信息到设备| | |||||
|SessionNotice| 会话管理服务| 通知设备上线下线,对于udp设备来说,可以在设备上线时,将指令跟随消息下发到设备| | |||||
|Traffic|流量统计服务 |由于运营商sim卡查询流量滞后,通过流量统计服务可以实时准确的统计设备流量,可以最优配置设备的流量大小,以节省成本 | |||||
|Transmit| 原包转发服务|该服务可以将设备上报原始数据转发到第三方,支持全部转发,指定终端号转发| | |||||
## NuGet安装 | |||||
| Package Name | Version | Downloads | | |||||
| --------------------- | -------------------------------------------------- | --------------------------------------------------- | | |||||
| Install-Package JT808.Gateway |  |  | | |||||
| Install-Package JT808.Gateway.Kafka|  |  | | |||||
## 举个栗子1 | |||||
1.进入JT808.Gateway.SimpleServer项目下的Debug目录运行服务端 | |||||
2.进入JT808.Gateway.SimpleClient项目下的Debug目录运行客户端 | |||||
``` 1 | |||||
static void Main(string[] args) | |||||
{ | |||||
Host.CreateDefaultBuilder(args) | |||||
.ConfigureWebHostDefaults(webBuilder => | |||||
{ | |||||
//配置Grpc服务端 | |||||
webBuilder | |||||
.ConfigureKestrel(options => | |||||
{ | |||||
options.Listen(IPAddress.Any, 5001, listenOptions => | |||||
{ | |||||
listenOptions.Protocols = HttpProtocols.Http2; | |||||
listenOptions.UseHttps($"{Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Configs", "test.cer")}", ""); | |||||
}); | |||||
}) | |||||
.Configure(app => | |||||
{ | |||||
app.UseRouting(); | |||||
app.UseEndpoints(endpoints => | |||||
{ | |||||
//配置Grpc服务节点 | |||||
endpoints.MapGrpcService<JT808GatewayService>(); | |||||
}); | |||||
}); | |||||
}) | |||||
.ConfigureServices((hostContext,services) => | |||||
{ | |||||
//services.Configure<KestrelServerOptions>(hostContext.Configuration.GetSection("Kestrel")); | |||||
//添加Grpc服务 | |||||
services.AddGrpc(); | |||||
//添加JT808协议 | |||||
services.AddJT808Configure() | |||||
//添加JT808网关配置 | |||||
.AddJT808Gateway(hostContext.Configuration) | |||||
//添加基于Tcp的808网关 | |||||
.AddJT808GatewayTcpHost() | |||||
//添加基于Udp的808网关 | |||||
.AddJT808GatewayUdpHost() | |||||
.Builder(); | |||||
}) | |||||
.Build() | |||||
.Run(); | |||||
} | |||||
``` |
@@ -1,140 +0,0 @@ | |||||
# JT808DotNetty | |||||
基于DotNetty封装的JT808DotNetty支持TCP/UDP通用消息业务处理 | |||||
[了解JT808协议进这边](https://github.com/SmallChi/JT808) | |||||
[了解JT809协议进这边](https://github.com/SmallChi/JT809) | |||||
[了解JT1078协议进这边](https://github.com/SmallChi/JT1078) | |||||
[了解JTNE协议进这边](https://github.com/SmallChi/JTNewEnergy) | |||||
[玩一玩压力测试](https://github.com/SmallChi/JT808DotNetty/blob/master/doc/README.md) | |||||
[](https://github.com/SmallChi/JT808DotNetty/blob/master/LICENSE) | |||||
## 新网关的优势: | |||||
1. 跨平台 | |||||
2. 借助 .NET Core模块化的思想 | |||||
3. 单机同时一万辆车在线不是梦(真有一万辆车那都很吃香了<( ̄3 ̄)> <( ̄3 ̄)> <( ̄3 ̄)> ) | |||||
4. 简单易上手 | |||||
## 设计模型 | |||||
 | |||||
## 基于WebApi的消息业务处理程序(JT808.DotNetty.WebApi) | |||||
通过继承JT808.DotNetty.Core.Handlers.JT808MsgIdHttpHandlerBase去实现自定义的WebApi接口服务。 | |||||
[WebApi公共接口服务](https://github.com/SmallChi/JT808DotNetty/blob/master/api/README.md) | |||||
## 集成接口功能(JT808.DotNetty.Abstractions) | |||||
|接口名称|接口说明|使用场景| | |||||
|:------:|:------|:------| | |||||
| IJT808SessionProducer| 会话通知(在线/离线)数据生产接口| 有些超长待机的设备,不会实时保持连接,那么通过平台下发的命令是无法到达的,这时候就需要设备一上线,就即时通知服务去处理,然后在即时的下发消息到设备。| | |||||
| IJT808SessionConsumer| 会话通知(在线/离线)数据消费接口| -| | |||||
| IJT808MsgProducer| 数据生产接口| 网关将接收到的数据发送到队列| | |||||
| IJT808MsgConsumer| 数据消费接口| 将数据进行对应的消息业务处理(例:设备流量统计、第三方平台数据转发、消息日志等) | | |||||
| IJT808MsgReplyProducer| 应答数据生产接口|将生产的数据解析为对应的消息Id应答发送到队列 | | |||||
| IJT808MsgReplyConsumer| 应答数据消费接口| 将接收到的应答数据下发给设备| | |||||
> 使用物联网卡通过udp下发指令时,存储的那个socket地址端口,有效期非常短,不速度快点下发,那个socket地址端口就可能映射到别的对应卡去了,所以此处采用跟随设备消息下发指令。 | |||||
## 基于网关的相关服务 | |||||
|服务名称|服务说明|使用场景| | |||||
|:------:|:------|:------| | |||||
|MsgIdHandler| 消息处理服务|从队列中消费设备上报数据,再结合自身的业务场景,将数据进行处理并入库 | | |||||
|MsgLogging | 消息日志服务|从队列中消费设备上报和平台应答数据,再将数据存入influxdb等数据库中,便于技术和技术支持排查设备与平台交互的原始数据| | |||||
|ReplyMessage| 消息响应服务| 用于响应设备上报消息,以及下发指令信息到设备| | |||||
|SessionNotice| 会话管理服务| 通知设备上线下线,对于udp设备来说,可以在设备上线时,将指令跟随消息下发到设备| | |||||
|Traffic|流量统计服务 |由于运营商sim卡查询流量滞后,通过流量统计服务可以实时准确的统计设备流量,可以最优配置设备的流量大小,以节省成本 | |||||
|Transmit| 原包转发服务|该服务可以将设备上报原始数据转发到第三方,支持全部转发,指定终端号转发| | |||||
## NuGet安装 | |||||
| Package Name | 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 |  |  | | |||||
| Install-Package JT808.DotNetty.RabbitMQ |  |  | | |||||
## 举个栗子1 | |||||
``` demo1 | |||||
static async Task Main(string[] args) | |||||
{ | |||||
var serverHostBuilder = new HostBuilder() | |||||
.ConfigureAppConfiguration((hostingContext, config) => | |||||
{ | |||||
config.SetBasePath(AppDomain.CurrentDomain.BaseDirectory); | |||||
config.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true); | |||||
}) | |||||
.ConfigureLogging((context, logging) => | |||||
{ | |||||
logging.AddConsole(); | |||||
logging.SetMinimumLevel(LogLevel.Trace); | |||||
}) | |||||
.ConfigureServices((hostContext, services) => | |||||
{ | |||||
services.AddSingleton<ILoggerFactory, LoggerFactory>(); | |||||
services.AddSingleton(typeof(ILogger<>), typeof(Logger<>)); | |||||
services.AddJT808Configure() | |||||
.AddJT808NettyCore(hostContext.Configuration) | |||||
.AddJT808TcpNettyHost() | |||||
.AddJT808UdpNettyHost() | |||||
.AddJT808WebApiNettyHost() | |||||
//扩展webapi JT808MsgIdHttpHandlerBase | |||||
//.ReplaceMsgIdHandler<JT808MsgIdHttpCustomHandler>() | |||||
.Builder(); | |||||
//添加kafka插件 | |||||
//.AddJT808ServerKafkaMsgProducer(hostContext.Configuration) | |||||
//.AddJT808ServerKafkaMsgReplyConsumer(hostContext.Configuration) | |||||
//.AddJT808ServerKafkaSessionProducer(hostContext.Configuration) | |||||
//.Builder(); | |||||
//webapi客户端调用 | |||||
//services.AddHttpApi<IJT808DotNettyWebApi>().ConfigureHttpApiConfig((c, p) => | |||||
//{ | |||||
// c.HttpHost = new Uri("http://localhost:828/jt808api/"); | |||||
// c.FormatOptions.DateTimeFormat = "yyyy-MM-dd HH:mm:ss.fff"; | |||||
// c.LoggerFactory = p.GetRequiredService<ILoggerFactory>(); | |||||
//}); | |||||
//var client = services.BuildServiceProvider().GetRequiredService<IJT808DotNettyWebApi>(); | |||||
//var result = client.GetTcpAtomicCounter().InvokeAsync().Result; | |||||
}); | |||||
await serverHostBuilder.RunConsoleAsync(); | |||||
} | |||||
``` | |||||
如图所示: | |||||
 | |||||
## 举个栗子2 | |||||
1.拉取JT808子模块 | |||||
2.打开项目进行还原编译生成 | |||||
3.进入JT808.DotNetty.SimpleServer项目下的Debug目录运行服务端 | |||||
4.进入JT808.DotNetty.SimpleClient项目下的Debug目录运行客户端 | |||||
如图所示: | |||||
 |
@@ -6,11 +6,11 @@ | |||||
<LangVersion>7.3</LangVersion> | <LangVersion>7.3</LangVersion> | ||||
</PropertyGroup> | </PropertyGroup> | ||||
<ItemGroup> | <ItemGroup> | ||||
<PackageReference Include="Microsoft.Extensions.Configuration.FileExtensions" Version="2.2.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="2.2.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.Hosting" Version="2.2.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="2.2.0" /> | |||||
<PackageReference Include="WebApiClient.Extensions.DependencyInjection" Version="1.2.3" /> | |||||
<PackageReference Include="Microsoft.Extensions.Configuration.FileExtensions" Version="3.0.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="3.0.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.Hosting" Version="3.0.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="3.0.0" /> | |||||
<PackageReference Include="WebApiClient.Extensions.DependencyInjection" Version="2.0.3" /> | |||||
</ItemGroup> | </ItemGroup> | ||||
<ItemGroup> | <ItemGroup> | ||||
<ProjectReference Include="..\..\src\JT808.DotNetty.Client\JT808.DotNetty.Client.csproj" /> | <ProjectReference Include="..\..\src\JT808.DotNetty.Client\JT808.DotNetty.Client.csproj" /> | ||||
@@ -10,11 +10,11 @@ | |||||
<ProjectReference Include="..\..\src\JT808.DotNetty.Tcp\JT808.DotNetty.Tcp.csproj" /> | <ProjectReference Include="..\..\src\JT808.DotNetty.Tcp\JT808.DotNetty.Tcp.csproj" /> | ||||
</ItemGroup> | </ItemGroup> | ||||
<ItemGroup> | <ItemGroup> | ||||
<PackageReference Include="Microsoft.Extensions.Configuration.FileExtensions" Version="2.2.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="2.2.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.Hosting" Version="2.2.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="2.2.0" /> | |||||
<PackageReference Include="WebApiClient.Extensions.DependencyInjection" Version="1.2.3" /> | |||||
<PackageReference Include="Microsoft.Extensions.Configuration.FileExtensions" Version="3.0.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="3.0.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.Hosting" Version="3.0.0" /> | |||||
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="3.0.0" /> | |||||
<PackageReference Include="WebApiClient.Extensions.DependencyInjection" Version="2.0.3" /> | |||||
</ItemGroup> | </ItemGroup> | ||||
<ItemGroup> | <ItemGroup> | ||||
<None Update="appsettings.json"> | <None Update="appsettings.json"> | ||||
@@ -1,12 +1,8 @@ | |||||
| | ||||
Microsoft Visual Studio Solution File, Format Version 12.00 | Microsoft Visual Studio Solution File, Format Version 12.00 | ||||
# Visual Studio 15 | |||||
VisualStudioVersion = 15.0.28307.168 | |||||
# Visual Studio Version 16 | |||||
VisualStudioVersion = 16.0.29418.71 | |||||
MinimumVisualStudioVersion = 10.0.40219.1 | MinimumVisualStudioVersion = 10.0.40219.1 | ||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{B5A80356-5AF6-449F-9D8B-3C1BBB9D2443}" | |||||
EndProject | |||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JT808.Protocol", "..\src\JT808.Protocol\src\JT808.Protocol\JT808.Protocol.csproj", "{9FCA2EE9-8253-41AA-A64C-9883413864F9}" | |||||
EndProject | |||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JT808.DotNetty.Udp", "..\src\JT808.DotNetty.Udp\JT808.DotNetty.Udp.csproj", "{C960084C-2CF4-4748-AD35-D2384285D6A3}" | Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JT808.DotNetty.Udp", "..\src\JT808.DotNetty.Udp\JT808.DotNetty.Udp.csproj", "{C960084C-2CF4-4748-AD35-D2384285D6A3}" | ||||
EndProject | EndProject | ||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JT808.DotNetty.Core", "..\src\JT808.DotNetty.Core\JT808.DotNetty.Core.csproj", "{67C5DC72-0004-48B3-BB5A-9CB7069B4F02}" | Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JT808.DotNetty.Core", "..\src\JT808.DotNetty.Core\JT808.DotNetty.Core.csproj", "{67C5DC72-0004-48B3-BB5A-9CB7069B4F02}" | ||||
@@ -45,10 +41,6 @@ Global | |||||
Release|Any CPU = Release|Any CPU | Release|Any CPU = Release|Any CPU | ||||
EndGlobalSection | EndGlobalSection | ||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution | GlobalSection(ProjectConfigurationPlatforms) = postSolution | ||||
{9FCA2EE9-8253-41AA-A64C-9883413864F9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | |||||
{9FCA2EE9-8253-41AA-A64C-9883413864F9}.Debug|Any CPU.Build.0 = Debug|Any CPU | |||||
{9FCA2EE9-8253-41AA-A64C-9883413864F9}.Release|Any CPU.ActiveCfg = Release|Any CPU | |||||
{9FCA2EE9-8253-41AA-A64C-9883413864F9}.Release|Any CPU.Build.0 = Release|Any CPU | |||||
{C960084C-2CF4-4748-AD35-D2384285D6A3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | {C960084C-2CF4-4748-AD35-D2384285D6A3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | ||||
{C960084C-2CF4-4748-AD35-D2384285D6A3}.Debug|Any CPU.Build.0 = Debug|Any CPU | {C960084C-2CF4-4748-AD35-D2384285D6A3}.Debug|Any CPU.Build.0 = Debug|Any CPU | ||||
{C960084C-2CF4-4748-AD35-D2384285D6A3}.Release|Any CPU.ActiveCfg = Release|Any CPU | {C960084C-2CF4-4748-AD35-D2384285D6A3}.Release|Any CPU.ActiveCfg = Release|Any CPU | ||||
@@ -110,7 +102,6 @@ Global | |||||
HideSolutionNode = FALSE | HideSolutionNode = FALSE | ||||
EndGlobalSection | EndGlobalSection | ||||
GlobalSection(NestedProjects) = preSolution | GlobalSection(NestedProjects) = preSolution | ||||
{9FCA2EE9-8253-41AA-A64C-9883413864F9} = {B5A80356-5AF6-449F-9D8B-3C1BBB9D2443} | |||||
{1C4CCE9B-761B-4581-B5DA-5B6D83572D56} = {3BD7FF02-8516-4A77-A385-9FDCDD792E22} | {1C4CCE9B-761B-4581-B5DA-5B6D83572D56} = {3BD7FF02-8516-4A77-A385-9FDCDD792E22} | ||||
{AEF1E1E2-C861-4268-86F6-6F376FAF79A7} = {3BD7FF02-8516-4A77-A385-9FDCDD792E22} | {AEF1E1E2-C861-4268-86F6-6F376FAF79A7} = {3BD7FF02-8516-4A77-A385-9FDCDD792E22} | ||||
{E503BFD8-D90A-4610-97C7-5B9A0497303B} = {3BD7FF02-8516-4A77-A385-9FDCDD792E22} | {E503BFD8-D90A-4610-97C7-5B9A0497303B} = {3BD7FF02-8516-4A77-A385-9FDCDD792E22} | ||||
@@ -44,7 +44,7 @@ namespace JT808.Gateway.SimpleClient | |||||
services.AddJT808Configure() | services.AddJT808Configure() | ||||
.AddJT808Client(); | .AddJT808Client(); | ||||
services.AddHostedService<UpService>(); | services.AddHostedService<UpService>(); | ||||
services.AddHostedService<GrpcClientService>(); | |||||
//services.AddHostedService<GrpcClientService>(); | |||||
}); | }); | ||||
await serverHostBuilder.RunConsoleAsync(); | await serverHostBuilder.RunConsoleAsync(); | ||||
} | } | ||||