Azure Function v3 with DI (Dependency Injection)

Raju RH
2 min readJul 12, 2020

Azure Functions allows you to run small pieces of code (called “functions”) without worrying about application infrastructure. Few key benefits of Azure function usage are like Serverless applications we can develop using Azure Function, can develop applications with several languages like C#, Java, Python, Powershell. It supports pay per pricing model, integration with several Azure Services, etc.

As of today, Azure Functions 3.0 is now go-live and ready for production. One of the major benefits of this release is Azure Functions v3 targeting netcoreapp3.1. If you want to develop using .NET Core 3.1, you must use Visual Studio 2019 16.4 or newer. Upgrading a v2 app to v3 can be found here

Just a brief history about the version of Azure function with .NET frameworks

  1. Azure Function v1 — .NET framework 4.61
  2. Azure Function v2 — .NET Core app 2.1
  3. Azure Function v3 — .NET Core app 3.1

Support for dependency injection begins with Azure Functions 2.x. Having Dependency Injection eases things like DBContext, Http client usage (Httpclienfactory), Iloggerfactory, cache support, etc.

In spite of having the latest version of Azure function v3 for Dependency Injection to enable few steps are manual as shown below. Hope the coming release will incorporate changes or support for the same.

Prerequisites

  • Microsoft.Azure.Functions.Extensions
  • Microsoft.NET.Sdk.Functions

1. Open Visual Studio and select to create a new Azure Functions project to ensure you choose v3.

2. To support DI following tasks need to be done manually. Create the Startup class

  • Configure(IFunctionsHostBuilder builder) method is where we register all services. IFunctionHostBuilder.Services is the IoC Container
  • The Startup class must extend the FunctionsStartup class
  • Registering services is exactly the same way we do in other .NET Core applications by using AddScoped, AddSingleton or AddTransient methods

3. Removal of Static keyword in Function class and method level

Code on GitHub: https://tinyurl.com/wyrb8d2

References

https://dev.to/azure/develop-azure-functions-using-net-core-3-0-gcm

https://docs.microsoft.com/en-gb/azure/azure-functions/functions-dotnet-dependency-injection

Originally published at https://rajurh.blogspot.com on July 12, 2020.

--

--

Raju RH

Specialties: Azure,.Net Core, Docker, Containers, Azure DevOps, Cognitive Services (AI)