gpt4 book ai didi

c# - 如何发现服务通过 ServicePartitionResolver 提供了哪些类型的端点?

转载 作者:行者123 更新时间:2023-12-03 02:51:37 24 4
gpt4 key购买 nike

我正在尝试编写一个服务解析器,并且我目前正在使用该服务解析器,如 https://learn.microsoft.com/en-us/azure/service-fabric/service-fabric-reliable-services-communication 中所述。 、ServicePartitionResolver

到目前为止,这一切都运行得很好。根据我的服务信息,我能够解决如下服务:

var resolvedService = await ServicePartitionResolver.GetDefault().ResolveAsync(service.ServiceName, key, CancellationToken.None);

现在,为了允许我的服务相互通信,我正在读取第一个服务的端点地址,例如:

resolvedService.Endpoints.First().Address

这会正确返回我在 ICommunicationListener 实现的 OpenAsync 方法中返回的所需端点。

基本上,只要协议(protocol)是http,这一切都做得很好。

一旦我将请求应发送到的服务的 ServiceManifest.xml 中的协议(protocol)切换为类似 tcp 的协议(protocol):

<Endpoints>
<!-- This endpoint is used by the communication listener to obtain the port on which to
listen. Please note that if your service is partitioned, this port is shared with
replicas of different partitions that are placed in your code. -->
<Endpoint Protocol="tcp" Name="ServiceEndpoint" Type="Input" Port="3245" />
</Endpoints>

ServiceResolver still 将我的端点解析为以 http 开头的地址。

那么,现在我的问题是——我只是做错了什么吗?因为对我来说,我似乎无法真正知道我正在处理的到底是什么端点。即使这没有直接反射(reflect)在地址中,我仍然可以从端点字符串中删除 http 部分,但也没有信息说明它是什么类型的端点。因此,从技术上讲,我可以将 http:// 替换为空白,但最好根据我从 Service Fabric 返回的内容来执行此操作,而不是“因为我了解端点”。

有什么想法吗?

最佳答案

list 中的协议(protocol)定义不用于定义端点。通信监听器实现从 OpenAsync 返回端点。所以我建议从那里开始搜索。

更多信息herehere .

关于c# - 如何发现服务通过 ServicePartitionResolver 提供了哪些类型的端点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55754979/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com