问题标签 [service-fabric-remoting]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
azure-service-fabric - Service Fabric 中的多个 v2 服务远程处理终结点
我正在使用 Service Fabric v6.1.472。我们正在尝试切换到使用 Service Fabric Remoting ( https://docs.microsoft.com/en-us/azure/service-fabric/service-fabric-reliable-services-communication-remoting ),特别是使用 v2听众。
我遇到的问题是文档只说明了如何通过扩展方法使用单个侦听器来做到这一点:
这假设
- 服务类实现远程接口
- 主机中只有一个远程 v2 端点(我需要多个端点)。
当深入研究反编译的代码时,看起来这个扩展方法使用了一个硬编码的端点名称,这使得它不可能用于多个远程端点。进一步挖掘发现,扩展方法使用的许多方法都标记为内部。
除了创建我自己的库之外,还有其他人找到解决这种糟糕设计的方法吗?
编辑
微软更新了他们的文档。在标题“使用显式 V2 类来使用 V2 堆栈”下,很清楚如何在没有扩展方法的情况下创建侦听器。
.net-core - Service Fabric V2 远程处理自定义标头
我正在使用带有 .net 核心的 Service Fabric 和 Service Fabric Remoting V2。我正在构建一个多租户应用程序,我想添加自定义标头以自动发送租户 ID。
我从这个问题的解决方案开始,它使用普通的 .net 框架和服务结构,但在 .net 核心的情况下,它甚至没有编译,因为带有 .net 核心的服务结构有不同的 API 和方法。
代码如下,不存在的 API 有很多情况:
客户端
- 代理工厂
var _proxyFactory = new ServiceProxyFactory(c => new ServiceRemotingClientFactoryWrapper(new WcfServiceRemotingClientFactory(callbackClient: c) ));
粗体类来自 Microsoft.ServiceFabric.Services.Wcf 包(除了nuget 站点中所说的),它要求我添加一个 System.ServiceModel Dll,它是一个完整的 .net 库,甚至不在所述的依赖项中。
- 解决方案中提供的 ServiceRemotingClientWrapper 包含一个名为ServiceRemotingMessageHeaders的类,根据文档,该类在服务远程处理类中,但它不存在。接口中的函数也采用了与上述演示不同的IServiceRemotingRequestMessage 。
服务器
类ServiceRemotingDispatcher应该在远程 Dll 中,但它不会退出。
最后,这个项目使用相同的方法来实现我的目标,它基于相同的 SOF 问题,但使用完整的 .net 框架并且它可以工作。链接到项目
azure-service-fabric - 在服务结构服务上调用即发即弃方法的正确方法
我在 ServiceA 上有一个需要从 ServiceB 调用的方法。该方法需要 5 分钟以上的时间来执行,我不关心它的返回值。(该方法的输出以另一种方式处理)
我已经IServiceA
像这样设置了我的方法:
然而,这似乎没有运行,因为我得到System.TimeoutException: This can happen if message is dropped when service is busy or its long running operation and taking more time than configured Operation Timeout.
一种选择是增加超时时间,但似乎应该有更好的方法。有没有?
azure-service-fabric - 如何使用 CancellationToken 调用 Azure 服务结构远程代理?
根据文档示例,代理的创建方式如下:
但是如果我需要限制最大响应时间,我通常会创建 CancellationToken 并将其传递给调用。有没有办法将令牌传递给代理,以便它取消等待远程服务的结果?
azure-service-fabric - 使用 Microsoft.ServiceFabric.Services.Remoting 3.2.162 通过远程处理 V1 调用服务
我有多个使用远程处理 V1 的服务和使用 V2_1 的新服务。
使用 Microsoft.ServiceFabric.Services.Remoting 版本 3.2.162 从 asp.net core 2.1 应用程序调用 V2_1 服务没有问题。但我不能调用“旧”V1 服务,因为它试图通过 V2_1 连接。第一次抛出异常:
第二次挂起,占用了大量的 CPU 使用率。
创建自定义 ServiceProxyFactory的解决方法不再起作用,因为命名空间 Microsoft.ServiceFabric.Services.Remoting.V1 在 3.2.162 中已删除
所以我决定升级一个 V1 服务,并按照升级步骤添加一个额外的 V2_1 侦听器。但是在处理完这条线之后再次:
未找到 RemotingListenerVersion.V1。
我不能简单地将 V1 侦听器更改为 V2_1,因为其他服务都依赖于它。
我应该怎么办?是否可以同时使用 V1 和 V2_1?我在这里有点困惑。
.net-core - 意外降级?Nuget 包管理器不显示 Microsoft.ServiceFabric.Services.Remoting 的最新版本
我不再看到 Microsoft.ServiceFabric.Services.Remoting 版本 3.3.624:
我现有的项目参考3.3.624:
我收到 NU1605 错误检测到软件包降级。
对于这个NU1605 Detected package downgrade 错误,我应该遵循这种方法吗?
我更好奇为什么 3.3.624 就消失了!!!
将现有引用从 3.3.624 降级到 3.3.622 是解决此问题的唯一方法吗?还是我在引用版本时做错了什么?
azure-service-fabric - 将 Service Fabric 远程调用转换为 REST
目前在我们的项目中,我们几乎没有无状态和有状态服务,然后我们有一个 API(这又是一个无状态服务)。我们的 API 服务通过 http 公开并在集群中运行前端节点。任何来自外部的客户端都会访问 WebAPi 无状态服务,该无状态服务又可以通过 SF 远程调用其他服务。但是其他服务不会通过 HTTP 公开。并且各个服务也可以通过顺丰remoting互相调用。
作为新要求的一部分,托管在其他云(Openshift)中的一些其他服务需要通过 REST 直接访问我们的无状态和有状态服务(即没有 WebAPI 服务)。我知道我们可以通过编写我们自己的自定义 HttpCommunicationListener(应该实现“ICommunicationListener”)来通过 http 公开我们的无状态和有状态服务。但除此之外,我猜我们还需要配置一些反向代理和负载均衡器等,以确保一个 URL 适用于所有请求。
这是什么东西,可以实现的。如果是,有人可以指出我的任何文档或代码示例吗?
c# - ServiceFabrice 服务远程处理中的 DI
我有一个 Service Fabric 应用程序,其中一个服务通过 ASP.NET Web API向 Internet ( GatewayService ) 公开,另外还有几个未向 Internet 公开的内部服务(我们称其中一个为InternalService)。到目前为止,InternalService也是一个 ASP.NET Web API,所以InternalService.cs
有一个如下所示的CreateServiceInstanceListeners()
方法:
InternalService的 Startup 类 (in Startup.cs
)配置了一些服务,例如将 SQL DbContext 添加到依赖注入系统,当然还有设置 ASP.NET等。我有几个公开 API 的 ApiController。AddMvc()
这行得通,但是我没有得到任何真正的类型安全性,而且它通常使开发有点麻烦,需要在操作之前在我的 GatewayService 中手动反序列化结果。所以我决定改用SF 的 Service Remoting,得到的CreateServiceInstanceListeners()
方法如下所示:
然后我将控制器中的所有逻辑也复制到其中InternalService.cs
,但这导致了一个问题:我无法再访问我的 DbContext,因为它被注入到 ApiController 的构造函数中,由 ASP.NET 根据规则进行实例化在Startup
类中设置,不再使用。
Startup
使用 Service Remoting 时,有没有办法让我以同样的方式使用?- 我可以将 API 分成多个类,就像将 ApiController 分成多个类一样吗?我觉得将所有暴露的方法放在同一个类中会很麻烦。
c# - System.Runtime.Serialization.InvalidDataContractException 'System.Security.Cryptography.X509Certificates.X509Certificate2'
我有三个无状态应用程序 Application-A、Application-B 和 Application-C。Application-B 和 Application-C 正在使用远程处理 V1 与 Application-A 通信。
最近我将 Application-C 迁移到 .Net 5.0。由于 .Net Core 不支持 V1 Remoting,我在 Application-A(服务应用程序)中创建了两个侦听器,如下所示,以同时支持 V1 和 V2_1 侦听器。
应用程序-B 应该使用 V1 远程处理与应用程序-A 通信,应用程序-C 将使用远程处理 V2_1 堆栈与应用程序-A 通信。下面是 Application-C 如何调用 Application-A
GetClinetInfo 方法返回 ClinetInfo 对象和 ClientInfo 看起来像
当 Application-C 调用 GetClinetInfo() 时,我遇到了异常