由于耐用函数JS API受到限制,我想知道我可以使用C#脚本编写业务流程代码,还是使用Azure Functions 2.0中的node编写活动函数吗?
答案 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函数将被忽略。
删除FUNCTIONS_WORKER_RUNTIME
,主机可以使用不同的语言。
将一个以Activity函数命名的文件夹添加到function app文件夹中,其中包含function.json和index.js。参见下图(在VSCode中,类似于VS)。
将CopyToOutputDirectory操作添加到functionappname.csproj。
<ItemGroup>
...
<None Update="MyJsActivity\index.js">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Update="MyJsActivity\function.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
</ItemGroup>
如有需要,可以随意安装节点模块,请记住为package.json添加CopyToOutputDirectory操作,以便我们可以在部署期间使用它来安装模块。
除了在门户网站上目前没有这样的等效设置外,默认情况下,主持人还提供其他语言工作者。部署后,一切都会正常。