问题标签 [azure-service-fabric]

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.

0 投票
5 回答
7626 浏览

msbuild - 如何在 sfproj 上使用 MSBuild?

试图在构建服务器上构建我的 Service Fabric 应用程序。当我构建 .sln 文件时,sfproj 的包目标没有运行。正如预期的那样。我似乎无法让 MSBuild 运行这个目标。

首先,针对 .sln 文件构建时唯一可用的目标是标准的构建和发布目标。

其次,针对 .sfproj 本身构建确实可以运行目标。但是,由于 $(BuildPlatform) 的不匹配,.sfproj 引用的项目无法正确构建。.sfproj 有一个 x64 平台。我的大多数其他项目都是 Any CPU。

我想,这与其说是 Service Fabric 问题,不如说是一般的 MSBuild 问题。我正在寻找一种不需要我统一所有项目的平台选项的解决方案。Service Fabric 真的只是 x64,我的其他项目真的是任何 CPU。

[编辑]

我解决了这个问题。我所做的是在 .sfproj 文件中添加一个名为 的新目标,MaybePublish并将其设置为默认目标之一。MaybePublish有一个Conditionfor '$(Package)' == 'true'。它已DependsOnTarget设置为Package。基本上,如果在构建解决方案时设置了属性,则此目标可以选择打包 Service Fabric 应用程序。

在我看来,这可能就是这些DeployOnBuild东西在 Web 发布项目中的工作方式。默认情况下,Service Fabric 目标文件应具有此类支持。

0 投票
2 回答
1525 浏览

azure - Service Fabric Actor 和 SignalR

我希望有人能指出我正确的方向。我在https://azure.microsoft.com/en-us/documentation/articles/service-fabric-reliable-actors-pattern-distributed-networks-and-graphs/#smart-cache-code看到了演员的聊天示例-sample-groupchat但该示例仅显示了聊天故事的一部分。聊天对我来说是一个很好的例子,因为它类似于我要解决的问题。

对于我的问题,将消息推送到 Actor 网络的客户端也需要在该网络状态发生变化时接收更新。我相信最明显的工具是 SignalR,但我有点卡在这一点上。Actor SDK 似乎没有提供一种可靠的方式来从 Actor 中流式传输状态更改。从我读到的内容来看,对于这种情况,Actor Events 似乎不够可靠(我猜是这样,因为文档说“尽力而为”)。

以 SF 网站上的聊天为例。我从那里去哪里?如何从 ASP.NET Signalr Hub 订阅 Actor 更新?

0 投票
1 回答
373 浏览

azure-service-fabric - 执行参与者之间的有序通信

我有一个问题,要求我的演员按发送顺序处理消息。在 Akka 中,actor A 和actor B 之间的消息总是保证按照发送的顺序到达。在 Service Fabric 中的 Reliable Actors 中似乎并非如此。在我的测试用例中,消息是以不确定的顺序接收的。

我可以通过在处理第一条消息之前不发送下一条消息来强制排序,但这会破坏整个观点。我真的很想发送并忘记消息,但知道它们将由接收参与者按顺序处理。

有没有人看到这样做的模式?我认为 Orleans Actors 具有相同的乱序消息可能性。也许奥尔良的解决方案也可以在这里工作。

0 投票
4 回答
4824 浏览

azure-service-fabric - Service Fabric 具有配置覆盖的多个服务实例

我们的服务结构应用程序包括一个无状态服务,该服务通过OwinCommunicationListener.

此服务的 ServiceManifest.Xml 指定服务端点<Endpoint Name="ServiceEndpoint" Type="Input" Protocol="http" Port="8090" />

然后可以通过http://localhost:8090/上的浏览​​器访问无状态服务

我们正在尝试做的是通过 ApplicationManifest 在同一个 Service Fabric 应用程序的不同端点上实例化此服务的多个实例。

导入我们的ServiceManifestImport服务包并允许在应用程序级别进行配置覆盖。我们无法以这种方式覆盖 ServiceEndpoint,只能覆盖 Settings.xml 中的值

我们可以通过在下面指定多个Service节点来创建服务的命名实例DefaultServices

是否可以通过配置为每个服务实例指定配置覆盖?

我试图让服务实例在特定端口上侦听,方法是使用它们的服务名称来确定哪个端口,以便 FooInstanceA 在端口 8090 上侦听,而 FooInstanceB 在 8091 上侦听。

显然,Service Fabric 在部署期间发挥了作用,因为当 FooInstanceB 侦听的端口不是 ServiceEndpoint 配置中指定的端口时,该服务无法访问。

第一个原因是端点上没有设置DACL,通过运行解决;

这允许服务出现并在 Service Fabric Explorer 中显示健康,但是当我们使用http://localhost:8091/访问时,FooInstanceB 会响应 HTTP 503 错误

我们如何让服务实例监听不同的端口?

我希望这很清楚,谢谢。

0 投票
2 回答
2657 浏览

.net - 使用 Azure 服务结构的默认客户端时如何将消息头添加到请求中?

我想知道是否可以将自定义消息标头注入传出请求以携带附加信息,而无需反序列化有效负载以完成诸如通过消息检查器提供的 wcf 之类的请求的身份验证、验证或关联等功能?

0 投票
2 回答
2651 浏览

c# - Service Fabric 可靠集合:序列化问题

可靠的集合(队列)值存储一些复杂类型SomeUnit

我已将其标记为[DataContract],它的成员为,并在其顶部[DataMember]添加了属性。[KnownType(typeof(SomeUnit))]

看起来像现在 SomeUnit 序列化,但随后反序列化异常被抛出:

元素“urn:ServiceFabric.Communication:item”包含映射到名称“ http://schemas.datacontract.org/2004/07/RP.Core:SomeUnit ”的类型的数据。反序列化器不知道映射到此名称的任何类型。如果您正在使用 DataContractSerializer,请考虑使用 DataContractResolver,或者将与“SomeUnit”对应的类型添加到已知类型列表中 - 例如,通过使用 KnownTypeAttribute 属性或将其添加到传递给序列化程序的已知类型列表中。

我该如何解决?

0 投票
1 回答
460 浏览

azure-service-fabric - 在服务结构中传递流

我很好奇是否有人对在 Service Fabric 中传递流有任何经验。或类似的东西。我需要公开来自各种 Actor 的一些大型数据流。DataContract 序列化 byte[] 可能不是最好的主意。

基本上,我想要一些看起来像我的 Actor 上的方法的东西,它可以向客户端返回它可以读取的东西。

0 投票
2 回答
1259 浏览

azure-service-fabric - 为什么我最小的 StatefulActorService 会抛出 COMException?

我想摆脱服务结构有状态参与者服务的轮胎,所以我在 VS2015.1 中创建了一个合适的项目,并且对生成的代码没有任何更改。然后我运行/调试了解决方案。我收到以下错误:

考虑到我的应用程序中现有服务之间可能存在一些干扰,我还构建了一个全新的服务结构解决方案和有状态的 Actor 服务项目(采用所有默认值)。这个项目以完全相同的方式失败了。

  1. 其他人可以确认这种行为吗?(它可能在我的开发环境中)
  2. 关于可能发生的事情有什么建议吗?
  3. 获取有关失败的更多信息的最佳方法是什么?(似乎没有太多跨越 com 边界)
  4. 我应该在视觉工作室工具之外尝试这个吗?

更新1:

解除 COMException 后,我还得到:

更新 2:

由于我在 Visual Studio 2015.1 安装/升级方面遇到问题,我不确定这是否与此问题有关。此外,一位同事遵循相同的步骤并且没有问题。所以我刚刚直接重新安装了VS2015.1,SF SDK,以及所有的先决条件。不幸的是没有变化。:(

我还应该说,每次我遇到这个错误时,Service Fabric Local Cluster Manager 也会中断。如果我尝试打开管理器,我会收到通知:“无法打开本地集群管理器”

此外,我确实将 SF 应用程序项目作为解决方案中的启动项目。(再次,我有其他 SF 应用程序工作......只要我在新的或现有的 SF 应用程序中尝试有状态的 Actor 服务,它就会死掉)。

更新 3:

我应该早点提供这个,但这里是调用堆栈......与提醒有关吗?

更新 4

我使用了一种更有力(而且诊断更少)的方法。我重建了我的开发机器。基于我在 Update 1 安装中遇到的奇怪行为,我担心我的构建盒受到了损害。我重建了操作系统,重新安装了 vs2015.1 和 SF SDK,现在它可以正常工作了。您的里程可能会有所不同:|

0 投票
1 回答
333 浏览

azure-service-fabric - Service Fabric 长期回调

我试图找出开发可以维持某种长期回调策略的服务的最佳模式。例如,假设我有一个 service DoLongThingService。当您调用.Begin此服务时,它会安排执行一些较长的过程。该过程完成后,我需要它来唤醒第一个服务。基本上是长期工作流类型的东西。

这实际上对演员很有效。因为我可以将一个传递ActorReference给该DoLongThingService.Begin方法,并且该服务可以Bind该参与者,并在其上调用一个方法以表示完成。

但是当我不使用 Actors 时呢?如何将对一项服务的引用传递给另一项服务?第一个服务将是有状态的,因此它可以跟踪它的未完成请求。但是,可能有多个有状态服务的实例四处浮动。那么如何让响应返回到正确的响应呢?

0 投票
1 回答
733 浏览

azure-service-fabric - Service Fabric - 启动时出现 FileNotFoundException

我无法为 ServiceFabric 运行任何示例。

我正在使用 Windows 8.1、VS 2015 社区版(以管理员身份运行)。ServiceFabric SDK 安装到默认位置。

我收到带有以下堆栈跟踪的 FileNotFoundException:

遇到此异常并停止调试后,在从 Service Fabric SDK 系统托盘图标中选择“重置本地群集”选项之前,我什至无法成功部署。

我尝试卸载并重新安装,在示例中寻找硬编码路径。

我可以在不同的机器上运行示例,但这是我的主要开发工具箱。在这两种情况下,我都简单地安装了 VS 2015 社区版 SDK,然后尝试运行示例。正如 MSND 论坛中所建议的那样,我将 ServiceFabric 路径移到了我的 PATH 变量的开头,以避免与名为 zip.dll 的文件发生冲突。