我可以在Azure Functions 2.0中同时使用dotnet和node吗?

时间:2018-08-26 11:29:46

标签: c# node.js azure azure-functions azure-durable-functions

由于耐用函数JS API受到限制,我想知道我可以使用C#脚本编写业务流程代码,还是使用Azure Functions 2.0中的node编写活动函数吗?

2 个答案:

答案 0 :(得分:2)

我们将发布v2函数版本,该版本将删除在单个Function应用程序中运行多种语言的功能。展望未来,Function应用程序中的所有功能必须使用相同的语言编写。 (请注意,v1 Function应用程序将不受此影响。)

我们的目标是在今年晚些时候宣布持久功能JS的全面上市,其中将包括API的其余部分。我们目前建议的解决方法与documented here.相似,您可以通过HTTP公开一些JavaScript API,并让C#活动函数从包含C#编排器的Function应用程序中调用它们。

答案 1 :(得分:1)

更新

新版本已发布,功能应用目前需要单一语言。因此,该方法不再有效。


您可能正在谈论此limit,因为在JS中,某些C#API尚未实现,而某些C#API尚未实现。

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

对于本地开发,FUNCTIONS_WORKER_RUNTIME(在local.settings.json中)指定了我们的函数应用语言工作者,函数宿主只能识别与此运行时相对应的函数。例如,在dotnet运行时中,js函数将被忽略。

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

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

    VSCode illustration

  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操作,以便我们可以在部署期间使用它来安装模块。

除了在门户网站上目前没有这样的等效设置外,默认情况下,主持人还提供其他语言工作者。部署后,一切都会正常。