簡體   English   中英

Azure function 綁定與手動實例化 class

[英]Azure function binding vs. manually instantiating class

對於 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 Said 所說,Microsoft 建議您避免使用 Azure 函數對集成服務進行硬編碼訪問

像Function正在接收或發送數據(queue message)的場景,可以使用886982359588的參數接收數據,function的返回值發送數據。

其中一個實際示例,我從 Pluralsight 課程中了解到 Azure 函數中此綁定和硬編碼的區別和用法是:

在下面的代碼中,我將 Blob output 綁定到 Function 級別:

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 文檔以獲取更多信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM