.NET
-
[ASP.NET Core] WebApi with Swagger - 1. API 설명 추가하기 - 3.NET/ASP.NET Core 2023. 2. 12. 23:25
만약 DTO 클래스가 별도 프로젝트로 분리되어 있을 경우, 해당 프로젝트도 document 에 설명이 반영될 수 있도록 설정해줘야 한다. DTO가 추가된 프로젝트에도 설정을 true로 추가한 뒤, Program.cs 를 아래와 같이 변경한다. foreach (var file in Directory.GetFiles(AppContext.BaseDirectory, "*.xml", SearchOption.TopDirectoryOnly)) { setup.IncludeXmlComments(file, true); var doc = XDocument.Load(file); } 첫번째 장과 마찬가지로, 위 코드는 xml 출력위치를 별도로 수정하지 않았다는 전제하에 작성한 코드이다. xml 출력위치를 특정위치로 수정했다면 ..
-
[ASP.NET Core] WebApi with Swagger - 1. API 설명 추가하기 - 2.NET/ASP.NET Core 2023. 2. 12. 23:10
주석을 통한 Swagger 문서화는 해당 데이터를 주고받는 DTO 모델에도 적용 가능하다. WeatherForecast DTO모델 클래스에 아래와 같이 주석을 달아준다. /// /// 날짜입니다. /// /// /// 2021-08-01T00:00:00 public DateTime Date { get; set; } /// /// 섭씨온도입니다. /// /// /// 42 public int TemperatureC { get; set; } /// /// 화씨온도입니다. /// /// /// 107 public int TemperatureF => 32 + (int)(TemperatureC / 0.5556); /// /// 날씨 내용입니다. /// /// /// Freezing public string? Su..
-
[ASP.NET Core] WebApi with Swagger - 1. API 설명 추가하기 - 1.NET/ASP.NET Core 2023. 2. 12. 22:29
WebApi 프로젝트를 생성하면 기본적으로 Swagger 관련 라이브러리가 Injection 되어있다. 해당 라이브러리를 통해 Swagger 문서를 생성할 수 있는데, 그냥 기본 설정값만 쓴다면 Swagger를 제대로 이용할 수 없다. 이번 단계를 통해 Swagger를 한층 더 "고오급스럽게" 사용하여 클라이언트쪽 개발자들에게 보다 쉬운 소스 설명과 더 나아가 소스 자동화 기능을 통해 덜 일하고, 더 받아가는(?) 즐거운 개발생활을 즐길 수 있길 바란다. swagger_1_comments 란 이름의 ASPNET Core WebApi 프로젝트 생성 후 아래와 같이 수행하자. 1. GenerateDocumentationFile 옵션 추가 프로젝트파일(.csproj)에 옵션을 true로 추가한다. 해당 옵션을..
-
[.NET] 비동기(async, await) 방식의 메소드를 동기 방식으로 안전하게 호출하기.NET/개념 및 유용한 팁 2023. 1. 4. 23:02
가장 좋은 것은 대세에 따라 비동기 방식으로 개발하는게 좋지만, 현 회사에서 ASP.NET Core를 동기방식으로 개발해놔버린지라 좋은 도구를 개같이 쓰거나, 옛날 라이브러리의 방식을 뒤져서 쓰거나 하는 어려움이 따르고 있다. 왠만하면 참겠으나, HttpClient 놔두고 WebRequest 써야 되는 상황이 나오니 머리에 꼭지 돌 지경이다. 하여 동기방식으로 안전하게 호출하는 방식을 찾아보았다. .NET 7.0 이하 버전 기준, 비동기 함수를 .Result 프로퍼티를 통해 직접적으로 결과를 받게끔 개발하게 되면 랜덤한 상황에 Thread 교착상태가 발생하여 갑자기 동작이 멈추는 이슈가 발생할 수 있다. // 이와 같은 호출은 큰 위험이 따른다. var res = _factory.CreateClient(..
-
[.NET] Benchmark - Count() vs Any().NET/Benchmark & 성능 테스트 2023. 1. 3. 23:11
요약 특정 조건에 대한 값이 존재하는지 유무를 따질 땐, Count() 보단 Any()를 사용하는 것이 좋다. 조건은 Where()로 처리하는게 더 유리하다. 테스트코드 using BenchmarkDotNet.Attributes; using BenchmarkDotNet.Jobs; using BenchmarkDotNet.Running; BenchmarkRunner.Run(); [MemoryDiagnoser] [SimpleJob(runtimeMoniker: RuntimeMoniker.Net60)] [SimpleJob(runtimeMoniker: RuntimeMoniker.Net70)] public class CountVsAny { public int[] items; public CountVsAny() { i..
-
[.NET] ASP.NET Core 및 비동기(async, await) 프로그래밍 개발에 도움이 되는 설명 사이트.NET/개념 및 유용한 팁 2022. 12. 26. 23:01
async, await 를 통한 비동기프로그래밍은 .NET Framework 4.5부터 지원되어왔으며, Core로 넘어오면서 이제는 비동기 형식으로 개발하는게 "정상적인" 개발이라 해야할만큼 한국 빼곤 대중화 되어있다. 특히나 ASP.NET Core는 비동기 프로그래밍이 Default라 할만큼 동기식 개발과 성능차이가 나는데, 잘못쓰면 서비스가 죽을 수도 있는 문제가 있다. 일반적으로 비동기 로직에 동기방식을 섞어쓴다던가 하지만 않으면 된다고만 알았는데 보다 잘 정리된 문서가 있어 소개한다. davidfowl/AspNetCoreDiagnosticScenarios: This repository has examples of broken patterns in ASP.NET Core applications (g..
-
[EFCore] EF Core Tool 로 C# 모델 클래스 -> DB 마이그레이션 하기.NET/개념 및 유용한 팁 2022. 8. 7. 20:38
닷넷 EF Core 툴 사용에 대한 설명 요약 목적으로 작성. 전역 도구 설치 dotnet tool install --global dotnet-ef DB 생성할 모델 및 Context 가 선언된 프로젝트에 Microsoft.EntityFrameworkCore.Design 설치 dotnet add package Microsoft.EntityFrameworkCore.Design 코드에서 DB로 마이그레이션하기. DBContext 및 모델 소스코드는 생성해야 한다. 첫 생성시엔 아래 명령어를 실행한다. dotnet ef database update 모델의 변경이나 Context 설정상 변경 발생 후 DB에 반영하려면 먼저 migrations 명령어로 변경사항을 생성해야 한다. 아래 예시는 개인적으로 개발중인 ..
-
[.NET] IServiceCollection기반 서비스에 args 값 의존성 주입(DI) 간단히 처리하기.NET/개념 및 유용한 팁 2022. 8. 3. 22:03
간혹 콘솔프로그램의 args를 IServiceCollection 및 Builder로 구성된 ASP.NET Core 및 Worker 에 그대로 의존성 주입하고 싶을때가 있다. 방법은 간단한다. AddSingleton(args); 한줄이면 끝난다. 아래코드는 .NET 6기반의 ASP.NET Core WebApi 프로젝트이다. [Program.cs] var builder = WebApplication.CreateBuilder(args); // Add services to the container. builder.Services.AddControllers(); // Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuc..