asp.net – 在1个进程中创建多个Kestrel实例是否安全?
我们正在微服务架构中构建一个orchestrator.我们选择websockets作为RPC协议,以建立一个流媒体管道,可以通过支持websocket的服务器(如Kestrel)进行扩展.此协调器主要在
Linux服务器上运行(dockerized).
出于管理和监控目的,我们计划使用http://dotnetify.net/构建一个响应式Web管理门户(可以使用推送通知以半实时方式显示计算和客户端的数量). DotNetify使用SignalR,我们不能在Websockets上使用SignalR层.我们在TCP协议之上需要最小的开销. Websocket本身就是一个漂亮的标准,并且足够轻巧,但SignalR增加了对我们并不真正需要的东西的支持(LAN,微服务).我们考虑使用WAMP,但在概念验证中,我们将在websocket总线中使用简单而简单的自定义握手.另一个原因是:我们的主要后端是IBM AIX,而RDBMS流程引擎是商业预构建二进制文件,因此在那里实现SignalR协议非常麻烦(几乎不可能).但我们不必,因为我们不想. 在1个过程中拥有[A]“纯”和[B]“signalR”websocket服务器的可能解决方案是启动多个Kestrel.我试过这个(在Windows和ubuntu上)它似乎运行没有问题.我只使用了Task.Run()数组,然后是Task.WaitAll(backgroundTasks).一个带有SignalR的红隼,一个没有,在不同的端口上运行. 我的问题是:虽然这似乎运行得很好,有人可以确认这是安全的吗?特别是libuv和os信号处理? 解决方法
您可以正常使用SignalR,只需侦听特定路径上的Websocket连接,以便与AIX(和其他后端)框进行通信.做这样的事(从
Microsoft Docs开始):
app.Use(async (context,next) => { if (context.Request.Path == "/ws") { if (context.WebSockets.IsWebSocketRequest) { WebSocket webSocket = await context.WebSockets.AcceptWebSocketAsync(); await Echo(context,webSocket); } else { context.Response.StatusCode = 400; } } else { await next(); } }); 我没有看到你需要启动两个Kestrel实例的任何原因.显然,将上面路径的/ ws部分替换为您要用于连接后端服务的WebSockets的任何端点. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc-3 – System.ComponentModel.DataAn
- asp.net-mvc – 如何使用ASP.NET MVC 2验证两个属
- asp.net – 如何防止在BundleTransformer中使用*
- asp.net-mvc – ASP.NET Web API – Windows窗体
- 复合视图模型对象导致远程验证失败
- asp.net – HttpError iis config在添加默认路径
- asp.net-mvc – 在Asp.Net Core中启用基于客户端
- asp.net – bootstrap中的body-content类是什么
- asp.net – 是否可以根据用户角色隐藏/显示Kendo
- asp.net-mvc-3 – 为什么Ninject不会解析基类中的