为每个客户端请求线程创建一个如下所示的新HybridConnectionStream对象需要花费时间(约3秒)
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池以更快地满足将来的客户端请求。
我们的实现如下:
移动应用程序上的某些用户操作需要来自本地DB的数据,因此该用户操作命中了azure托管服务结构api,后者又将请求转发到特定的azure中继混合连接,然后是我们的自定义,托管的侦听器服务选择请求并将其转发到本地Web服务以选择数据
,这里的服务矩阵应用程序会创建 NEW 混合连接/混合连接流,以与每个中继建立与Azure中继混合连接的连接传入的用户请求非常耗时,我们希望每次都避免创建新的hybridconnection,而是寻找选项来缓存和重用已经创建的昂贵的hybridconnection或尝试创建hybridconnection池之类的东西。还有其他更好的东西。谢谢
答案 0 :(得分:0)
我们在我们的App Services之一和几个VM之一之间使用混合连接。 Azure混合连接有点像VPN。 (您必须倾斜头并斜视一下。)
在App Service中,混合连接可用于访问其他网络中的应用程序资源。来源:Azure App Service Hybrid Connections
所以我认为您应该将混合连接视为持久的东西。它是网络基础结构的一部分,而不是您需要为每个线程创建的内容。我认为建立混合连接所花费的时间与这种想法相符。
答案 1 :(得分:0)
只需保持HybridConnectionStream打开并重用它即可。当您仍然需要它时,请不要关闭它。您可以通过单个流发送多个消息。它是读/写的,所以应该没有问题。