Azure Functions 및 .NET 5: 종속성 주입
9837 단어 azurefunctionsdidotnet
Guide for running functions on .NET 5.0 in Azure 및 Develop and publish .NET 5 functions using Azure Functions에서 개발자 가이드를 찾을 수 있습니다.
오늘은 .NET 5를 사용할 때 이 "격리된 프로세스"에서 DI(Dependency Injection)를 사용하는 방법을 공유하고자 합니다.
Reference: Start-up and configuration
프로젝트 만들기
먼저 먼저! 새 템플릿을 사용하여 함수 프로젝트를 만들어야 합니다.
1. Azure Function Core 도구 v3의 최신 버전을 설치합니다. 자세한 내용은 here을 참조하십시오.
2. 도구를 설치한 후 버전을 확인하십시오. 3.0.3381보다 높아야 합니다.
func --version
3. 새 폴더를 생성하고 기능을 초기화합니다.
mkdir dotnet5func
cd dotnet5func
func init
4. 이제 새로운 옵션을 사용할 수 있습니다. "dotnet(격리된 프로세스)"을 선택합니다.

5. 그런 다음 새 기능 프로젝트를 만듭니다. 원하는 대로 트리거를 선택합니다. 이번에는 HttpTrigger를 선택했습니다.
func new

6. 완료할 함수 이름을 입력한 다음 함수를 실행하고 예상대로 작동하는지 확인합니다.
func start
7. 함수를 중지하고 Visual Studio Code 또는 Visual Studio를 사용하여 프로젝트를 엽니다.
code .
종속성 주입 구성
DI를 사용할 때 알아야 할 가장 중요한 것은 Startup.cs가 필요 없다는 것입니다!! 이제 Program.cs에서 코드를 직접 변경하여 DI를 구성할 수 있습니다.
1.\Program.cs는 프로젝트를 스캐폴드할 때 아래와 같아야 합니다.
using System.Threading.Tasks;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Hosting;
using Microsoft.Azure.Functions.Worker.Configuration;
namespace dotnet5func
{
public class Program
{
public static void Main()
{
var host = new HostBuilder()
.ConfigureFunctionsWorkerDefaults()
.Build();
host.Run();
}
}
}
2.\DI를 사용하려면 HostBuilder를 수정하기만 하면 됩니다. HttpClient 팩터리를 추가해 보겠습니다. ConfigureServices 메서드를 사용하고 ASP.NET 프로젝트와 정확히 동일한 AddHttpClient()를 사용할 수 있습니다.
using System.Threading.Tasks;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.DependencyInjection;
namespace dotnet5func
{
public class Program
{
public static void Main()
{
var host = new HostBuilder()
.ConfigureFunctionsWorkerDefaults()
.ConfigureServices(s => {
s.AddHttpClient();
})
.Build();
host.Run();
}
}
}
3. 함수 코드를 열고 DI를 통해 IHttpClientFactory를 수락합니다. 여러 곳을 변경해야 합니다.
func --version
mkdir dotnet5func
cd dotnet5func
func init
func new
func start
code .
DI를 사용할 때 알아야 할 가장 중요한 것은 Startup.cs가 필요 없다는 것입니다!! 이제 Program.cs에서 코드를 직접 변경하여 DI를 구성할 수 있습니다.
1.\Program.cs는 프로젝트를 스캐폴드할 때 아래와 같아야 합니다.
using System.Threading.Tasks;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Hosting;
using Microsoft.Azure.Functions.Worker.Configuration;
namespace dotnet5func
{
public class Program
{
public static void Main()
{
var host = new HostBuilder()
.ConfigureFunctionsWorkerDefaults()
.Build();
host.Run();
}
}
}
2.\DI를 사용하려면 HostBuilder를 수정하기만 하면 됩니다. HttpClient 팩터리를 추가해 보겠습니다. ConfigureServices 메서드를 사용하고 ASP.NET 프로젝트와 정확히 동일한 AddHttpClient()를 사용할 수 있습니다.
using System.Threading.Tasks;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.DependencyInjection;
namespace dotnet5func
{
public class Program
{
public static void Main()
{
var host = new HostBuilder()
.ConfigureFunctionsWorkerDefaults()
.ConfigureServices(s => {
s.AddHttpClient();
})
.Build();
host.Run();
}
}
}
3. 함수 코드를 열고 DI를 통해 IHttpClientFactory를 수락합니다. 여러 곳을 변경해야 합니다.
이번에는 swapi.dev를 사용합니다. swapi는 스타워즈를 좋아한다면 멋진 API입니다. 자세한 내용은 swapi.dev을 확인하십시오.
using System.Collections.Generic;
using System.Net;
using System.Net.Http;
using System.Threading.Tasks;
using Microsoft.Azure.Functions.Worker;
using Microsoft.Azure.Functions.Worker.Http;
using Microsoft.Extensions.Logging;
namespace dotnet5func
{
public class dotnet5func
{
private readonly IHttpClientFactory clientFactory;
public dotnet5func(IHttpClientFactory clientFactory)
{
this.clientFactory = clientFactory;
}
[Function("dotnet5func")]
public async Task<HttpResponseData> Run([HttpTrigger(AuthorizationLevel.Function, "get", "post")] HttpRequestData req,
FunctionContext executionContext)
{
var logger = executionContext.GetLogger("dotnet5func");
logger.LogInformation("C# HTTP trigger function processed a request.");
var client = clientFactory.CreateClient();
var swapires = await client.GetStringAsync("https://swapi.dev/api/people/1/");
var response = req.CreateResponse(HttpStatusCode.OK);
response.Headers.Add("Content-Type", "text/plain; charset=utf-8");
response.WriteString(swapires);
return response;
}
}
}
4. 함수를 다시 실행하고 엔드포인트를 호출합니다.
func start

요약
코드를 작성할 때 Azure Functions와 웹 API 사이에 여전히 약간의 차이가 있지만, 간극을 메우면 지식을 쉽고 효과적으로 재사용할 수 있습니다!
내년 LTS인 .NET 6 릴리스를 기다릴 수 없습니다!
Reference
이 문제에 관하여(Azure Functions 및 .NET 5: 종속성 주입), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/kenakamu/azure-functions-and-net-5-dependency-injection-5ed4
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(Azure Functions 및 .NET 5: 종속성 주입), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/kenakamu/azure-functions-and-net-5-dependency-injection-5ed4텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)