아직도 dotNet에서 컨트롤러를 작성하고 계십니까? Minimal API를 사용해 보세요!

한동안 .NET 개발 작업을 했다면 프레임워크 초기부터, 특히 .NET Core로 대대적으로 전환하기 전의 많은 기이함과 특이성에 익숙할 것입니다. Verbose는 기존 웹 API 및 IIS 지원 앱에 대해 절제된 표현입니다. 우와! dotNet 앱을 실행하기 위해 완전한 Windows Server 시스템이 필요했던 때를 기억하십니까? 고맙게도 생태계는 그 이후로 엄청나게 진화했습니다.

따라서 Program.cs, Startup.cs 및 ControllerBase에서 상속된 수많은 컨트롤러가 포함된 일반적인 C# 웹 API에는 많은 명명 규칙과 엄격한 구조가 있었습니다. 코드는 다음과 비슷합니다.

using System.Diagnostics;
using Microsoft.AspNetCore.Mvc;
using sandboxing.Models;

namespace sandboxing.Controllers
{
    public class HomeController : Controller
    {
        private readonly ILogger<HomeController> _logger;

        public HomeController(ILogger<HomeController> logger)
        {
            _logger = logger;
        }

        public IActionResult Index()
        {
            return View();
        }

        public IActionResult Privacy()
        {
            return View();
        }

        [ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)]
        public IActionResult Error()
        {
            return View(new ErrorViewModel { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier });
        }
    }
}


재미있는 사실: 여전히 원하는 경우 dotnet new mvc를 입력하여 MVC 스타일 웹 앱을 빌드할 수 있습니다. 위의 코드는 이 명령에서 가져온 HomeController입니다. 문자열“Hello World, I guess?”만 포함하도록 Index.cshtml을 수정하고 컨트롤러Index() 메서드를 통해 브라우저로 다시 보낼 수 있습니다. 해당 경로를 탐색하면 앱이 컨트롤러에서 문자열을 로드합니다(실제로 요청하지 않은 머리글 및 바닥글 포함).



아주 간단하죠? 음, 실제로 간단할 수 있다면 어떨까요?

Microsoft는 dotNet 6을 통해 이 구조를 크게 단순화하고 C# 개발을 NodeJS 및 Express와 같은 최신 기술에 더 가깝게 만드는 Minimal APIs 패러다임을 도입했습니다(분명히 요즘 백엔드에서 Javascript를 실행해도 괜찮습니다).

이러한 노력의 일환으로 Web API의 기본 상용구 구조를 단순화하는 Startup.cs를 완전히 제거했습니다. 계속해서 dotnet new web 를 입력하십시오.

Program.cs는 다음과 같이 표시됩니다.

var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();

app.MapGet("/", () => "Hello World!");

app.Run();


그게 다야. 한 파일에 네 줄. app.MapGet 라인은 익명 함수 "string() { return "Hello World!"; }"를 "/"경로로. 해당 경로를 탐색합니다. 함수에서 반환을 얻습니다. 서버, 클라우드, Linux 또는 Windows 어디에서나 쉽게 호스팅할 수 있는 터미널 응용 프로그램(IIS who?)에서 모두 실행됩니다.

보시다시피 닷넷 앱의 장황한 시대는 지났습니다. 한동안 C#을 시도하지 않았다면 지금이 온보딩을 시작하고 모든 하드웨어에 설치할 수 있는 린(Lean) 앱을 빌드할 수 있는 가장 좋은 시간입니다. 자세한 내용은 Microsoftofficial documentation를 확인하십시오(문서가 꽤 훌륭하다고 장담합니다). 오래 지속되는 Minimal API!

좋은 웹페이지 즐겨찾기