Azure 函数 - 我们何时需要使用 out 进行输出绑定?

Posted

技术标签:

【中文标题】Azure 函数 - 我们何时需要使用 out 进行输出绑定?【英文标题】:Azure functions - When do we need to use out for output bindings? 【发布时间】:2021-09-10 11:05:52 【问题描述】:

在 azure 函数中,有多种方法可以进行输出绑定。

    对于 Blob 存储,我可以将其声明为绑定,无需其他构造。 对于 CosmosDb ,我需要将其指定为输出参数。 对于队列,我可以在属性中将其指定为返回。

我在下面有上面三个场景的示例代码

 public static class myblobtestfunc
    
        [FunctionName("myblobtestfunc")]
        [return: Queue("samplequeue", Connection = "storageconnection")]
        public static string Run([BlobTrigger("functiontestblob/name.txt", Connection = "storageconnection")]Stream myBlob,
                               [Blob("copyblob/name", FileAccess.Write)]Stream copyBlob,
                               [CosmosDB(databaseName: "testfiledb", collectionName: "testfilecoll", ConnectionStringSetting = "cosmosdbconnectionstring")]out dynamic document,
                               string name,
                               ILogger log
                               )
        
            log.LogInformation($"C# Blob trigger function Processed blob\n Name:name \n Size: myBlob.Length Bytes");
            myBlob.CopyTo(copyBlob);
            
            document = new  Description = name, id = Guid.NewGuid() ;

            return name;
        
    

输出绑定可以使用这三种方法中的任何一种吗?即我可以将返回与 CosmoDb 绑定一起使用吗? 为什么有如此广泛的输出绑定样式选择?

【问题讨论】:

无论如何您都不能在方法签名中使用返回值。此代码无效。至于为什么你可以做不止一种方式?很好,因为它方便 谢谢@TheGeneral。有意义,但绑定表达式和返回数据的几种方式虽然方便,但引入了一个额外的元素来考虑特别是 out 和 non out 绑定参数。 【参考方案1】:

输出绑定可以使用这三种方法中的任何一种吗?即我可以使用 使用 CosmoDb 绑定返回?为什么有如此广泛的输出选择 绑定样式?

如此广泛的输出绑定样式选择来自于Azure函数社区不断推出的支持票。

其实对于具体的输出绑定,这三个不一定都是可行的。请参考官方文档。这三者的设计都是基于对应的SDK包,所以在大多数情况下,相当于在函数体中根据对应的SDK编写代码。

【讨论】:

以上是关于Azure 函数 - 我们何时需要使用 out 进行输出绑定?的主要内容,如果未能解决你的问题,请参考以下文章

Azure 触发的 Webjob - 检测 webjob 何时停止

Flink AggregateFunction窗口函数,merge何时执行

Flink AggregateFunction窗口函数,merge何时执行

Flink AggregateFunction窗口函数,merge何时执行

何时使用 Azure Blob 存储与 Azure 文件共享?

Azure基础:何时使用Azure Functions无服务器计算(11)