asp.net framework에서 .net core로 마이그레이션하면서 겪었던 점들 정리


1. .net core에서는 세션, 캐시, 라우팅, 브라우저링크, 정적파일호스팅 등등 모두 원하는 미들웨어 기능들을 startup.cs에서 명시적으로 사용한다고 코드 표현을 해야함


2. Request의 Form을 참조해서 보내진 form-data를 null 체크를 해서 사용하거나 했다면 .net core에서는 get이든 post든 요청할 때 form-data 담겨진 게 없다면 Form에 참조 시도를 하면 런타임에서 InvalidOperationException이 발생하니 기존에 From사용되는 부분들은 진행 시나리오 재검토가 필요함


3. .net 버전과 os 버전에 따라 차이가 있으니 직접 확인해볼 필요있으나 .net framework4.8 또는 core 3.1 / Windows 2019 64비트 환경에서 응용프로그램 풀(iis 프로세스)마다 3만2천개의 쓰레드와 1천개의 I/O 쓰레드 지원하나, kestrel / nginex 등 다른 환경에서 호스팅할 때는 재확인 필요함


4. DI (의존성주입)을 사용할 때 AddSingleton은 웹프로그램 전역에 단일 인스턴스, AddScope는 요청 범위마다 인스턴스, AddTransient는 요청마다 인턴스를 생성하는데 컨트롤러 생성자에 파라미터로 넘기고 클래스 전역변수에 담아서 사용함. 그냥 스태틱 사용해서 패턴 구현하는 게 더 편하지 않나? 


5. 마이그레이션을 하게된 가장 결정적 이유 : .net framework는 4.8 작년에 나온 게 마지막 버전이고 이제 업데이트 더이상 안함, 4.8은 c# 7.3까지만 지원하고 강제적으로 8.0의 기능을 일부 제외하고 사용 가능하긴 함. 곧 c# 9.0도 나오는데 정말 편한 문법 사용하고 싶으면 .net core / 버전5부터는 그냥 .NET 을 사용해야만 함. 


결론 : asp.net framework 에서 asp.net core로 넘어간 이유 = c# 8.0 및 곧 나올 c# 9.0 쓰려고... asp.net 때문에 넘어간 게 아니라 c# 때문에 어쩔 수 없이 강제적으로 넘어감. ㅅㅂ 좆같은 강매