Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wcf Azure服务总线中继响应缓慢_Wcf_Azure_Azureservicebus - Fatal编程技术网

Wcf Azure服务总线中继响应缓慢

Wcf Azure服务总线中继响应缓慢,wcf,azure,azureservicebus,Wcf,Azure,Azureservicebus,我有一个托管在Azure中的Azure服务总线中继,它公开了与下面类似的端点: 有趣的是,当我给这个服务总线打电话时,它会打4个电话,如下所示。 这导致了反应缓慢 有人可以吗 澄清发生了什么 每次通话?第一次呼叫#1必须等待2、3和4吗 1(需要很长时间) 二, 三, 四, 登录服务总线需要5-10秒,在本地环境中只需要不到一秒的时间。不确定服务总线添加延迟的原因和方式。默认情况下,Azure服务总线中继通常通过ACS()使用选择加入身份验证。为了使用中继端点,它必须首先使用ACS令牌授权WC

我有一个托管在Azure中的Azure服务总线中继,它公开了与下面类似的端点:

有趣的是,当我给这个服务总线打电话时,它会打4个电话,如下所示。 这导致了反应缓慢

有人可以吗 澄清发生了什么 每次通话?第一次呼叫#1必须等待2、3和4吗

1(需要很长时间)

二,

三,

四,


登录服务总线需要5-10秒,在本地环境中只需要不到一秒的时间。不确定服务总线添加延迟的原因和方式。

默认情况下,Azure服务总线中继通常通过ACS()使用选择加入身份验证。为了使用中继端点,它必须首先使用ACS令牌授权WCF通道。如果您选择不使用ACS,则可以通过配置删除您看到的额外呼叫

禁用服务总线继电器的ACS(选择退出)

有关更多详细信息,请参阅

至于延迟问题(5-10秒)-这取决于使用的WCF呼叫数量、您与数据中心的关系以及共享的数据量。有许多选项可以调整以上所有内容。另外。

Myagdi,您是否同时为服务和客户端使用WebHttpRelayBinding?您正在使用的SDK的版本是什么

请注意,当您使用服务总线中继时,会发生两层身份验证。客户端必须首先使用ACS对服务总线中继端点进行身份验证,然后对本地WCF服务执行任何特定于应用程序的身份验证

您看到的额外流量是由于客户机从ACS获取令牌以向服务总线中继进行身份验证。现在,默认情况下,ACS发行的令牌的生存时间从20分钟到3小时不等。如果您使用的是我们的.NET SDK,那么在大多数情况下,客户端将在令牌的生命周期内缓存令牌。因此,在此令牌生存期内对中继端点的后续请求不应导致与ACS进行额外的令牌获取交换

此外,由于服务总线中继设计,由于控制通信,从客户端到侦听器服务的第一个请求通常会引起更高的延迟。后续呼叫的延迟通常较低


如果您有其他问题,可以通过@santoshc1与我联系。

在测试响应时间之前,您是否进行了预热?有多少mil秒长?Azure服务总线中继的新功能,如果你能解释一下预热意味着什么,那就好了。另外,登录服务总线只需要5-10秒,在本地环境中只需要不到一秒的时间。谢谢你,但我们可以摆脱ACS。这是必须具备的安全要求。还有其他想法吗?你无法有效地将云托管服务与内部部署服务进行比较(这不是苹果对苹果)。使用托管数据中心时,始终会有延迟。您可以努力减少延迟-但由于网络连接限制,您永远无法实现与内部部署服务器相同的延迟。@santoshc1谢谢,您能否使用SDK共享使用服务器总线中继OData服务的示例?
GET https://myTestSB.servicebus.windows.net/MyService/LogIn()?$filter=UserID eq '1234' and Password eq 'secret'
User-Agent: Microsoft ADO.NET Data Services
.....
Status Code: OK 200
...
CONNECT https://myTest-sb.accesscontrol.windows.net/WRAPv0.9/

Status Code: OK 200
Connection: Keep-Alive
Proxy-Connection: Keep-Alive
POST https://TestSB-sb.accesscontrol.windows.net/WRAPv0.9/
Content-Type: application/x-www-form-urlencoded
Host: TestSB-sb.accesscontrol.windows.net
Content-Length: 307
Expect: 100-continue
Connection: Keep-Alive

Status Code: OK 200
.......
CONNECT https://myTestSB.servicebus.windows.net/MyService/LogIn()?$filter=UserID eq '1234' and Password eq 'secret'

Status Code: OK 200
Connection: Keep-Alive
Proxy-Connection: Keep-Alive