Service Fabric 服务远程处理

2023-12-25

过去几周我一直在从云服务迁移到 Service Fabric,并且在两个服务之间使用远程处理时遇到了一些障碍。

我一直在使用服务远程处理的官方文档和示例代码,特别是我试图让此处概述的示例正常工作:

https://learn.microsoft.com/en-us/azure/service-fabric/service-fabric-reliable-services-communication-remoting https://learn.microsoft.com/en-us/azure/service-fabric/service-fabric-reliable-services-communication-remoting

我有2个服务。一个被命名为“远程服务”另一个被命名为“来电服务”。两者都源自默认的无状态服务项目。

在这两个“远程服务” and “来电服务”项目我添加了以下接口来描述它们之间的服务契约:

public interface IMyService : IService
{
    Task<string> HelloNameAsync(string name);
}

In the “远程服务”我已经在远程服务类中创建了关联的方法

public Task<string> HelloNameAsync(string name)
{
    return Task.FromResult("Hello " + name + "!");
}

我也覆盖创建服务实例监听器与以下

protected override IEnumerable<ServiceInstanceListener> CreateServiceInstanceListeners()
{
    return new[] { new ServiceInstanceListener(context => this.CreateServiceRemotingListener(context)) };
}

In my “来电服务”当我尝试连接时,使用以下命令调用“RemoteService”:

IMyService helloNameClient = ServiceProxy.Create<IMyService>(new Uri("fabric:/Application/RemoteService"));
string message = await helloNameClient.HelloNameAsync("Luke");

我得到这个异常

InnerException = {"Interface id '1994370306' is not implemented by object 'RemoteService.RemoteService'"}

我用细齿梳子仔细检查了这个样本,并确信一切都已就位。我读过有关设置端点并将服务注册到服务目录中的内容,但据我了解,这些是针对外部服务的,并且远程处理文档没有提到需要这样做。

UPDATE:

以下是 RemoteService 类的声明方式:

internal sealed class RemoteService : StatelessService, IMyService

UPDATE 2

以下是这两种服务的 Settings.xml 的样子。这些是项目开箱即用的默认设置。我没有添加或删除任何东西。我还想指出,我正在本地服务结构上运行所有这些。

<?xml version="1.0" encoding="utf-8" ?>
<Settings xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.microsoft.com/2011/01/fabric">
  <!-- Add your custom configuration sections and parameters here -->
  <!--
  <Section Name="MyConfigSection">
    <Parameter Name="MyParameter" Value="Value1" />
  </Section>
  -->
</Settings>

声明服务接口的程序集需要与客户端共享,您无法在客户端重新创建相同的接口。当 Service Fabric 设置通信时,它会根据服务使用的实际程序集构建接口及其方法的映射。

根据您的描述,您似乎在服务和客户端项目中声明了相同的接口?如果是这样,那么这就是修复。

From SO:从集群中的其他应用程序调用服务 https://stackoverflow.com/a/41656691/1062217: 唯一棘手的部分是如何获取从外部服务到调用服务的接口?您可以简单地引用您想要调用的服务的内置 .exe,也可以将包含该接口的程序集打包为 NuGet 包并放在私有源上。

如果您不这样做,而只是在 Visual Studio 解决方案之间共享代码,则 Service Fabric 会认为这是两个不同的接口,即使它们共享完全相同的签名。如果您为服务执行此操作,则会收到 NotImplementedException 异常,提示“接口 id '{xxxxxxxx}' 未由对象 '{service}' 实现”;如果您为 Actor 执行此操作,则会收到 KeyNotfoundException 异常,提示“未找到任何 MethodDispatcher”接口 ID '-{xxxxxxxxxx}'”。

因此,要解决您的问题,请确保在正在调用的外部应用程序中引用您要调用的应用程序中的相同程序集。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Service Fabric 服务远程处理 的相关文章

  • 为什么 int8_t 和用户通过 cin 输入显示奇怪的结果[重复]

    这个问题在这里已经有答案了 一小段代码让我发疯 但希望你能阻止我跳出窗外 看这里 include
  • 提交后禁用按钮

    当用户提交付款表单并且发布表单的代码导致 Firefox 中出现重复发布时 我试图禁用按钮 去掉代码就不会出现这个问题 在firefox以外的任何浏览器中也不会出现这个问题 知道如何防止双重帖子吗 System Text StringBui
  • 复制 std::function 的成本有多高?

    While std function是可移动的 但在某些情况下不可能或不方便 复制它会受到重大处罚吗 它是否可能取决于捕获变量的大小 如果它是使用 lambda 表达式创建的 它依赖于实现吗 std function通常被实现为值语义 小缓
  • 使用 Newtonsoft 和 C# 反序列化嵌套 JSON

    我正在尝试解析来自 Rest API 的 Json 响应 我可以获得很好的响应并创建了一些类模型 我正在使用 Newtonsoft 的 Json Net 我的响应中不断收到空值 并且不确定我的模型设置是否正确或缺少某些内容 例如 我想要获取
  • 单个对象的 Monogame XNA 变换矩阵?

    我读过一些解释 XNA Monogame 变换矩阵的教程 问题是这些矩阵应用于 SpriteBatch Begin matrix 这意味着所有 Draw 代码都将被转换 如何将变换矩阵应用于单个可绘制对象 就我而言 我想转换滚动背景 使其自
  • qdbusxml2cpp 未知类型

    在使用 qdbusxml2cpp 程序将以下 xml 转换为 Qt 类时 我收到此错误 qdbusxml2cpp c ObjectManager a ObjectManager ObjectManager cpp xml object ma
  • 标准化 UTF-8 到底是什么?

    The 重症监护室项目 http userguide icu project org transforms normalization 现在也有一个PHP库 http us php net manual en class normalize
  • 如何使用 Azure 服务总线 HTTP API 对消息设置死信

    我正在尝试与 Azure 服务总线集成以执行代理消息传递 我之前成功地使用了托管 NET API 但这次我需要使用HTTP API 处理消息时 如果我确定消息有毒 即永远无法成功处理 我想将消息移至死信队列 在托管 API 中 我会调用Br
  • C# HashSet 只读解决方法

    这是示例代码 static class Store private static List
  • 动态添加 ASP.Net 控件

    我有一个存储过程 它根据数据库中存储的记录数返回多行 现在我想有一种方法来创建 div 带有包含该行值的控件的标记 如果从数据库返回 10 行 则 10 div 必须创建标签 我有下面的代码来从数据库中获取结果 但我不知道如何从这里继续 S
  • 按 Esc 按键关闭 Ajax Modal 弹出窗口

    我已经使用 Ajax 显示了一个面板弹出窗口 我要做的是当用户按 Esc 键时关闭该窗口 这可能吗 如果有人知道这一点或以前做过这一点 请帮助我 Thanks 通过以下链接 您可以通过按退出按钮轻松关闭窗口 http www codepro
  • 不同类型指针之间的减法[重复]

    这个问题在这里已经有答案了 我试图找到两个变量之间的内存距离 具体来说 我需要找到 char 数组和 int 之间的距离 char data 5 int a 0 printf p n p n data 5 a long int distan
  • 如果没有抽象成员,基类是否应该标记为抽象?

    如果一个类没有抽象成员 可以将其标记为抽象吗 即使没有实际理由直接实例化它 除了单元测试 是的 将不应该实例化的基类显式标记为抽象是合理且有益的 即使在没有抽象方法的情况下也是如此 它强制执行通用准则来使非叶类抽象 它阻止其他程序员创建该类
  • C++ 条件编译

    我有以下代码片段 ifdef DO LOG define log p record p else define log p endif void record char data 现在如果我打电话log hello world 在我的代码中
  • 无法接收 UDP Windows RT

    我正在为 Windows 8 RT 编写一个 Windows Store Metro Modern RT 应用程序 需要在端口 49030 上接收 UDP 数据包 但我似乎无法接收任何数据包 我已按照使用教程进行操作DatagramSock
  • 我的班级应该订阅自己的公共活动吗?

    我正在使用 C 3 0 遵循标准事件模式我有 public event EventHandler
  • Oracle Data Provider for .NET 不支持 Oracle 19.0.48.0.0

    我们刚刚升级到 Oracle 19c 19 3 0 所有应用程序都停止工作并出现以下错误消息 Oracle Data Provider for NET 不支持 Oracle 19 0 48 0 0 我将 Oracle ManagedData
  • 如何从 ODBC 连接获取可用表的列表?

    在 Excel 中 我可以转到 数据 gt 导入外部数据 gt 导入数据 然后选择要使用的数据源 然后在提供登录信息后 它会给我一个表格列表 我想知道如何使用 C 以编程方式获取该列表 您正在查询什么类型的数据源 SQL 服务器 使用权 看
  • 从列表中选择项目以求和

    我有一个包含数值的项目列表 我需要使用这些项目求和 我需要你的帮助来构建这样的算法 下面是一个用 C 编写的示例 描述了我的问题 int sum 21 List
  • 如何将 PostgreSql 与 EntityFramework 6.0.2 集成? [复制]

    这个问题在这里已经有答案了 我收到以下错误 实体框架提供程序类型的 实例 成员 Npgsql NpgsqlServices Npgsql 版本 2 0 14 2 文化 中性 PublicKeyToken 5d8b90d52f46fda7 没

随机推荐

  • 如何在Python中取消单词的词干?

    我想知道是否有办法可以将它们恢复为正常形式 问题是我有数千个不同形式的单词 例如吃 吃 吃 吃等等 我需要计算每个单词的频率 所有这些 吃 吃 吃 吃等等都将计入吃 因此 我使用了词干 但问题的下一部分要求我在数据中找到相似的单词 并且我正
  • JSP/Servlet 的隐藏功能 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我对您在编写 JSP Servlet 时使用的技巧等感兴趣 我将开始 我最近发现了如何将一个 JSP 标签的输出包含在另一个标签的属性
  • 使用 mod_rewrite 将 301 发送到 SERVER_NAME

    我的 Apache 虚拟主机中有许多 ServerAlias 并且我希望所有不是 ServerName 的域都被 301 到 ServerName 这是行不通的 RewriteCond HTTP HOST SERVER NAME NC Re
  • Swift Playground - “使用未解析的标识符‘myClass’”但仍然可以编译

    我目前正在 Swift Playgrounds 中进行实验 并正在尝试 SpriteKit 我的 Playground 按预期工作并运行 但 Xcode 出现错误 提示 使用未解析的标识符 myClass 尽管如此 操场仍然运行得很好 这是
  • android如何获取传感器计步器仅一天的数据?

    我想获取应用程序用户的步数数据 但我得到的数据不是当天的数据 如何获取唯一的当天数据 public StepCounterRecord ReactApplicationContext reactContext mSensorManager
  • Google Chrome 自动禁用我的扩展程序

    我在 Chrome 商店中发布了一个扩展程序 一些用户报告该扩展程序在他们不知情的情况下被禁用 该扩展程序的用户可以从 Chrome 商店或我们的主页安装它内联安装 https developer chrome com webstore i
  • Mongodb java:具有通用字段的 Perist POJO 类

    我有一个 POJO 类 看起来像这样 public class CacheEntity
  • python中直接调用fabric API

    我记得fabric API可以直接在py脚本中调用 但忘记从哪里开始 有人提供线索吗 是的 你可以这样称呼它 例如 from fabric api import run from fabric tasks import execute de
  • Double.parseDouble 无法在我的网页上运行

    我正在尝试添加一些资金 并且想使用 Double parseDouble 但是 我认为该页面无法识别 double parseDouble 我没有收到错误 但它不会添加或传递值 这是我的代码 function CalculateBudget
  • 如何在 Keras Python 中合并多个顺序模型?

    我正在构建一个包含多个顺序模型的模型 在训练数据集之前需要合并这些模型 它似乎keras engine topology MergeKeras 2 0 不再支持 我试过keras layers Add and keras layers Co
  • 无法通过共享扩展打开/读取图像

    我正在尝试在应用程序扩展中获取图像 问题是当类型为 public image 时我无法获取图像 但是当类型为 public png 时它会成功 我想做的只是获取图像并将其上传到服务器 这是我正在使用的代码 if let extensionC
  • onCreate 中的 AdMob 广告正常,但返回 Activity 后消失,为什么?

    我已将广告添加到我的活动中 如下所示 Override public void onCreate Bundle savedInstanceState super onCreate savedInstanceState setContentV
  • 如何使用 ScrolledText 小部件设置多色文本?

    from tkinter import from tkinter scrolledtext import ScrolledText window Tk window geometry 970x45 box ScrolledText wind
  • 将文件复制到 Gradle 中的 rootDir

    我正在尝试使用如下任务将文件复制到 rootDir task copyFilesToProjectRoot type Copy from fileTree dir some path include into 但不断出现此异常 org gr
  • 实时监控 PostgreSQL 查询的应用程序?

    我想监视从应用程序发送到我的数据库的查询 为此 我发现pg stat activity 但更常见的是 返回的行读取为 事务中 我要么做错了什么 要么速度不够快 无法看到查询的结果 要么感到困惑 要么是以上所有情况 有人可以推荐最简单的方法来
  • 如何在expressjs中生成站点地图

    我从站点地图 xml 生成器网站下载了 XML 站点地图 我将 sitemap xml 放在我的公共目录中 但是当我尝试将 sitemap xml 提交到 google 控制台时 我收到以下错误 一般 HTTP 错误 404 未找到 HTT
  • MobileFirst 7.1 Progurd 获取错误返回代码 1

    我在 eclipse 中使用 mobilefirst 7 1 环境 我只是创建示例混合应用程序并添加 android 环境 然后我在出现以下错误时获取未签名的 apk 请为此帮助我 谢谢 Proguard project txt To en
  • 不再有 PHP 5.3.x 的 VC6 版本吗?

    我需要在运行 Apache 的 Windows 机器上安装 PHP 5 3 x 最好是 x gt 4 不幸的是 在PHP 下载页面 http windows php net download 我找不到任何用VC6编译的PHP 5 3 x 所
  • “您尚未指定用作弹出窗口内容的视图”

    所以我一直在尝试在我的游戏中实现排行榜 成就 并且在没有任何类型的实现的情况下 游戏运行得很好 我已成功导入 google play services lib 并复制到 BaseGameUtils 但每当我尝试调用 GameHelper 对
  • Service Fabric 服务远程处理

    过去几周我一直在从云服务迁移到 Service Fabric 并且在两个服务之间使用远程处理时遇到了一些障碍 我一直在使用服务远程处理的官方文档和示例代码 特别是我试图让此处概述的示例正常工作 https learn microsoft c