dotNET
-
[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로 추가한다. 해당 옵션을..
-
[EFCore] Microsoft.Data.SqlClient.SqlException 오류 뜰 때.NET/개념 및 유용한 팁 2022. 1. 30. 11:48
개발 중인 프로젝트에서 아래와 같은 오류가 발생했다. Microsoft.Data.SqlClient.SqlException: 'A connection was successfully established with the server, but then an error occurred during the login process. (provider: SSL Provider, error: 0 - 신뢰되지 않은 기관에서 인증서 체인을 발급했습니다.)’ 원인은 따로 설치했던 Microsoft.EntityFrameworkCore.SqlServer 패키지에서 참조하는 Microsoft.Data.SqlClient 에 호환되는 버전이 맞지 않으면 발생했던 문제이다. 따로 설치된 Microsoft.Data.SqlClient ..
-
[ASP.NET Core] AddSingleton(), AddScoped(), AddTransient() 차이점 - 1.NET/ASP.NET Core 2021. 9. 12. 22:54
ASP.NET Core에서 의존성 주입에 의해 추가되는 Service는 크게 3가지 생명주기를 지닌다. AddSingleton AddScoped AddTransient AddSingleton의 경우는 클라이언트(보통 웹브라우저)의 접속상태에 관계없이, 웹 서비스 시작 때 생성되서, 웹 서비스가 종료될때까지 유지된다. Singleton이란 이름에 걸맞게, 클라이언트가 아무리 많이 붙어도 오직 1개의 서비스만 존재하게 된다. AddScoped는 클라이언트의 Request 시작부터, Response 종료까지 유지된다. 각 클라이언트마다 존재하므로, 연결되는 클라이언트 수 만큼 존재하게 될 수 있다. AddTransient는 의존성 주입한 객체마다 독립적인데, 그냥 간단한 교육용 예제 서비스에선 AddScope..
-
[EF Core] 여러 프로젝트가 참조된 솔루션에서 dotnet ef 명령어 사용시 유의사항정리.NET/개념 및 유용한 팁 2021. 8. 31. 22:22
CleanArchitecture까진 필요없고, 단일 프로젝트 형식은 테스트 케이스 개발에 불편함이 있어 별도 프로젝트 템플릿을 구현하고 있다. 구현하면서 Entity Framework Core를 이용해 Code First 방식으로 DB를 마이그레이션 하는 방법을 다루게 되었는데 뻘짓을 많이 하여 리스트로 정리할겸 포스트를 쓴다. 1. 시작프로젝트에 Microsoft.EntityFrameworkCore.Tools Nuget 패키지가 설치되어 있어야 한다. 설치가 안되어있을 경우, 아래와 같은 오류가 나온다. Your startup project 'Template.WebApi' doesn't reference Microsoft.EntityFrameworkCore.Design. This package is r..
-
[Viusal Studio] xUnit 간편하게 사용할 수 있는 확장 xUnit.net.TestGenerator.NET/개발환경 및 Tools 2021. 8. 22. 14:49
xUnit 도 MSTest 처럼 컨텍스트 메뉴에서 테스트 프로젝트를 자동생성하려면 xUnit.net.TestGenerator를 설치해야 한다. https://marketplace.visualstudio.com/items?itemName=YowkoTsai.xUnitnetTestGenerator xUnit.net.TestGenerator - Visual Studio Marketplace Extension for Visual Studio - xUnit.net Test Generator extensions for Visual Studio 2017 and Visual Studio 2019. Creates Unit tests with xUnit.net 2.0 framework. Works on Visual Stud..
-
[.NET] IEnumable에 대한 성능팁.NET/개념 및 유용한 팁 2021. 6. 5. 16:31
매일 수신받는 medium 에서 IEnumable에 대한 유용한 글을 수신받았다. 번역기가 있어 어느정도 이해할 순 있지만 내용이 좀 길어 짧게 정리할 겸 포스트를 쓴다. 1. Count() != 0 보단 Any()를 써라 종종 배열(IEnumable)에 요소가 있는지 여부를 사용할 때, Count() != 0 조건을 사용하는 경우가 많다. 그러나 Count()는 각 요소의 개수를 구하기 위해 아래와 같은 구현으로 동작한다. public static int Count(this IEnumerable enumerable) { var count = 0; using(var enumerator = enumerable.GetEnumerator()) { while (enumerator.MoveNext()) count..
-
[EntityFramework Core] 간단히 알아본 Insert & Update 퍼포먼스 성능비교.NET/개념 및 유용한 팁 2021. 5. 30. 21:48
EntityFramework Core는 Microsoft에서 관리하는 오픈소스 ORM 라이브러리이다. ORM이 없기 전, 과거(라곤 하지만 현재도 유지되고 있다.)에는 쿼리 문자열을 작성하여 조회한 뒤, DataTable로 결과를 받아 처리하는 방식을 사용했었다. 모든 결과를 DataTable로 받기 때문에, 로직이 조금만 복잡해져도, 해당 DataTable이 가리키는 테이블이 무엇이고 어떤 필드가 어떤 유형(type)인지 제대로 파악하기 어려웠었다. EntityFramework 는 시스템이 사용할 테이블을 클래스(Class) 모델로 생성하고, 모델 객체를 통해 데이터를 조작하기 때문에 소스로직이 복잡해지더라도 클래스유형을 통해 분석이 용이하다는 장점이 있다. 근데 써본사람들은 알겠지만, SQL쿼리보다 ..
-
[ASP.NET Core] 세상 간편해진 Video/Audio Streaming.NET/ASP.NET Core 2021. 4. 21. 22:36
예전에 개선된 다운로드 예제를 작성하면서 확인하게된 EnableRangeProcessing 옵션을 테스트해보고자 코드 몇 줄 끄적였다. true로 설정한 채 mp4, mp3 같은 미디어 파일을 반환하면 자동으로 스트리밍 처리가 된다는 것이다. 테스트를 위해 mvc프로젝트를 생성하고 간단한 StreamingController 를 생성해보았다. StreamingController.cs using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace StreamingEx..