Azure函数绑定与手动实例化类



对于Azure函数:
使用Blob绑定或手动为其创建引用有什么区别吗?

1:绑定

public Task Run(
[HttpTrigger(AuthorizationLevel.Function, "get")] HttpRequest req,
[Blob("images")] CloudBlobContainer container)
{
// Code
}

2:手动

public Task Run(
[HttpTrigger(AuthorizationLevel.Function, "get")] HttpRequest req)
{
var account = CloudStorageAccount.Parse(connectionstring);
var client = account.CreateCloudBlobClient();
var container = client.GetContainerReference("images");
// Code
}

我只是说表现上的不同
这不是完全相同的事情吗;在引擎盖下";在两个例子中?

我相信这两种实现都能提供相同的性能。

是的!正如Skin所说,微软建议您避免使用Azure功能对集成服务进行硬编码访问。

当函数接收或发送数据(队列消息(时,您可以使用函数参数来接收数据,并使用函数的返回值来发送数据。

我从Pluralsight课程中了解到Azure函数中这种绑定和硬编码的区别和用法的一个实际例子是:

在下面的代码中,我使用Blob输出绑定功能级别:

public class GenerateLicenseFile
{
[FunctionName("GenerateLicenseFile")]
public void Run([QueueTrigger("orders", Connection = "AzureWebJobsStorage")]Order order,
[Blob("licenses/{rand-guid}.lic")]TextWriter outputBlob,
ILogger log)
{
outputBlob.WriteLine($"OrderId: {order.OrderId}");
outputBlob.WriteLine($"Email: {order.Email}");
outputBlob.WriteLine($"ProductId: {order.ProductId}");
outputBlob.WriteLine($"PurchaseDate: {DateTime.UtcNow}");

要将订单Id作为许可证文件名,

public  static  class  GenerateLicenseFile
{
[FunctionName("GenerateLicenseFile")]
public  static  async  Task  Run(
[QueueTrigger("orders", Connection  =  "AzureWebJobsStorage")] Order  order,
IBinder  binder,
ILogger  log)
{
var  outputBlob  =  await  binder.BindAsync<TextWriter>(
new  BlobAttribute($"licenses/{order.OrderId}.lic")
{
Connection  =  "AzureWebJobsStorage"
});
outputBlob.WriteLine($"OrderId: {order.OrderId}");
outputBlob.WriteLine($"Email: {order.Email}");
outputBlob.WriteLine($"ProductId: {order.ProductId}");
outputBlob.WriteLine($"PurchaseDate: {DateTime.UtcNow}");

当在Azure函数中使用绑定作为参数和硬编码时,会提到一些场景,有关详细信息,请参阅此Microsoft文档。

最新更新