2

由于 Durable Functions JS API 现在受到限制,我想知道我可以使用 C# 脚本编写编排代码,并使用 Azure Functions 2.0 中的节点编写活动函数吗?

4

2 回答 2

2

我们即将发布 v2 Functions 版本,该版本取消了在单个 Function 应用中运行多种语言的能力。今后,函数应用中的所有函数都必须使用相同的语言编写。(请注意,v1 Function 应用程序不会受此影响。)

我们的目标是在今年晚些时候宣布 Durable Functions JS 的通用可用性,其中将包括 API 的其余部分。我们目前推荐的解决方法与此处记录的类似在您的情况下,您可以通过 HTTP 公开一些 JavaScript API,并让 C# 活动函数从包含 C# 编排器的函数应用程序调用它们。

于 2018-08-27T23:12:37.720 回答
1

更新

新版本已发布,功能应用现在需要单一语言。所以这个方法不再有效。


您可能正在谈论这个限制,因为在 JS 中一些 C# API 尚未实现,有些将不会实现。

我们可以在 C# 编排函数中调用 JS Activity。只需使用简单的活动返回字符串进行测试,即可按预期工作。

对于本地开发,FUNCTIONS_WORKER_RUNTIME(在local.settings.json中)指定了我们的function app语言worker,只有这个runtime对应的function才能被function host识别。例如,在 dotnet 运行时,js 函数被忽略。

  1. 删除FUNCTIONS_WORKER_RUNTIME,主机可以使用不同的语言。

  2. 将一个以您的 Activity 函数命名的文件夹添加到函数应用文件夹,其中包含 function.json 和 index.js。请参见下图(在 VSCode 中,类似于VS)。

    VSCode 图解

  3. 将 CopyToOutputDirectory 操作添加到 functionappname.csproj。

    <ItemGroup>
    ...
        <None Update="MyJsActivity\index.js">
          <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
        </None>
        <None Update="MyJsActivity\function.json">
        <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
        </None>
    </ItemGroup>
    
  4. 如果需要,请随意安装节点模块,请记住为 package.json 添加 CopyToOutputDirectory 操作,以便我们可以在部署期间使用它安装模块。

除了在门户网站上,目前还没有这样的等效设置,主机默认提供不同的语言工作者。部署后,一切都应该工作。

于 2018-08-27T06:38:04.630 回答