0

为每个客户端请求线程创建新的 HybridConnectionStream 对象,如下所示,需要时间(~3sec)

var client = new HybridConnectionClient(new Uri(String.Format("sb://{0}/{1}", relayConfiguration.Value.RelayNamespace, relayConfiguration.Value.ConnectionName)), tokenProvider);

-- (takes ~3 secs) 
HybridConnectionStream relayConnection= await client.CreateConnectionAsync(); 

有没有办法重用/缓存已经建立的 HybridConnectionStream 来服务同一客户端的所有未来请求,或者可以创建 HybridConnectionStream 池以更快地满足未来的客户端请求。
我们的实现如下:
移动应用程序上的某些用户操作需要来自本地数据库的数据,因此用户操作会命中 azure 托管服务结构 api,后者又将请求转发到特定的 azure 中继混合连接,然后我们自定义的本地托管侦听器服务选择请求并将其转发到本地 Web 服务以选择数据
在这里服务结构应用程序创建hybridconnection/hybridconnectionstream 为每个传入的用户请求建立与 azure relay 混合连接的连接,这非常耗时,我们希望避免每次都创建新的混合连接,而是寻找缓存和重用已经创建的昂贵混合连接或尝试创建混合连接池类型的选项的事情。
如果可能,请提出建议或提出其他更好的建议。谢谢

4

2 回答 2

0

只需保持 HybridConnectionStream 打开并重用它。当您仍然需要它时不要关闭它。您可以通过单个流发送多条消息。它是读/写的,所以应该不是问题。

于 2020-12-14T15:29:35.463 回答
0

我们在我们的应用服务之一和多个虚拟机之一之间使用混合连接。Azure 混合连接有点像 VPN。(你必须倾斜你的头,眯着眼睛恰到好处。)

在应用服务中,混合连接可用于访问其他网络中的应用程序资源。来源:Azure 应用服务混合连接

所以我认为你应该将混合连接视为持久的东西。它是您的网络基础设施的一部分,而不是您需要为每个线程创建的东西。我认为创建混合连接所花费的时间与这种想法是一致的。

于 2018-11-27T19:29:47.613 回答