-
Notifications
You must be signed in to change notification settings - Fork 178
.NET Worker bindings
Anthony Chu edited this page Sep 3, 2021
·
4 revisions
With the .NET worker, we have migrated to a new binding model. In this model, no explicit Microsoft.Azure.WebJobs
references are required.
The attributes required to create Functions, Triggers, and Bindings are now available in these Nuget packages --
- Common types (FunctionAttribute):
Microsoft.Azure.Functions.Worker.Extensions.Abstractions
- Http bindings:
Microsoft.Azure.Functions.Worker.Extensions.Http
- Storage (Queue, Blob, Table) bindings:
Microsoft.Azure.Functions.Worker.Extensions.Storage
- Timer bindings:
Microsoft.Azure.Functions.Worker.Extensions.Timer
- Event Hubs bindings:
Microsoft.Azure.Functions.Worker.Extensions.EventHubs
- Event Grid bindings:
Microsoft.Azure.Functions.Worker.Extensions.EventGrid
- Service Bus bindings:
Microsoft.Azure.Functions.Worker.Extensions.ServiceBus
- Cosmos DB bindings:
Microsoft.Azure.Functions.Worker.Extensions.CosmosDB
- RabbitMQ bindings:
Microsoft.Azure.Functions.Worker.Extensions.RabbitMQ
- SignalR Service bindings:
Microsoft.Azure.Functions.Worker.Extensions.SignalRService
- Kafka bindings:
Microsoft.Azure.Functions.Worker.Extensions.Kafka
- Warmup trigger:
Microsoft.Azure.Functions.Worker.Extensions.Warmup
You can find samples using all of our new binding types under samples
(link)
In the new model, we have changed how output bindings work. You can now specify output bindings in two ways:
In this model, the function return value is treated as the value for the Output Binding. An example --
public static class EventHubsFunction
{
[Function("EventHubsFunction")]
[EventHubOutput("MyEventHubName", Connection = "EventHubConnectionAppSetting")]
public static string Run([EventHubTrigger("src", Connection = "EventHubConnectionAppSetting")] string input,
FunctionContext context)
{
var logger = context.GetLogger("EventHubsFunction");
logger.LogInformation(input);
var message = $"Output message created at {DateTime.Now}";
return message;
}
}
In this model, the function return type can specify output bindings using property attributes.
/// <summary>
/// This class specifies output bindings in the properties of <see cref="MyOutputType"/>.
/// <see cref="MyOutputType"/> defines a Queue output binding, and an Http Response property.
/// By default, a property of type <see cref="HttpResponseData"/> in the return type of the function
/// is treated as an Http output binding. This property can be used to provide a response to the Http trigger.
/// </summary>
public static class MultiOutput
{
[Function("MultiOutput")]
public static MyOutputType Run([HttpTrigger(AuthorizationLevel.Anonymous, "get")] HttpRequestData req,
FunctionContext context)
{
var response = req.CreateResponse(HttpStatusCode.OK);
response.WriteString("Success!");
string myQueueOutput = "some output";
return new MyOutputType()
{
Name = myQueueOutput,
HttpReponse = response
};
}
}
public class MyOutputType
{
[QueueOutput("myQueue")]
public string Name { get; set; }
public HttpResponseData HttpReponse { get; set; }
}