ASP.NET 웹개발 방법 추천 부탁드립니다.

안녕하세요.
회사 업무용 웹을 PHP로 개발해 왔는데 소스가 오픈되는 부분 때문에
문제를 겪어서 ASP.NET으로 개발하려고 하는데
어떻게 접근해야 할지요?
웹 개발 방법에 대해 추천을 부탁드립니다.

ASP.NET에 대해 구글링, 유튜브를 보며 공부해 봤는데
ASP.NET Core MVC, Razor 등 생소한 단어가 많이 나오고 해서
갈피를 못 잡겠네요.
웹에 대한 지식도 좀 있고 C#으로 Windows Service 프로그램도 만들어 봤고 해서
연관 지식은 좀 있다고 생각하는데 많이 어렵네요.

망망대해 위에서 어디로 가야 할지 방향을 못 잡는 느낌이네요 ㅠㅠ

선배 고수님들의 애정어린 조언을 부탁드립니다.
감사합니다.

1 Like

C#을 조금 아신다고 하시니 다음 책을 추천합니다.

ui는 요즘 blazor로 만드는 편이라 필요하면 다음책도

2 Likes

정말 감사합니다.

1 Like

Asp.Net 은 윈도우 전용 프레임워크로 현재는 레거시입니다.

지금 시점에서 사용할 수 있는 버전은 Asp.Net Core 인데, 윈도우 리눅스, 맥에서 구동할 수 있습니다.

어떤 문서나 학습 자료를 보시더라도, 이 두 버전의 구분을 명확히 하는 게 출발점이라고 할 수 있습니다.

Asp.Net Core 는 기본적으로 서버입니다.
Http 요청을 캡슐화한 HttpContext와 Http 응답을 캡슐화한 HttpResponse 객체를 제공하는데, 이들을 미들웨어 파이프라인을 통과하면서 처리하는 구조입니다.

요청 도착 => HttpContext 생성 => 미들웨어1, … , 미들웨어n
응답 전송 <= HttpResponse <= 미들웨어1, … , 미들웨어n (어딘가에서 HttpResponse 생성)

미들웨어는 Short Circuit 구조로 되어 있습니다.
요청을 읽은 후, 어떤 액션을 하고 그 다음 미들웨어로 요청을 넘길 수도 있고, 넘기지 않고, 응답을 보낼 수 있습니다.
개발자는 미들웨어만 정의해도 서버를 구성할 수 있습니다.

Asp.Net Core 는 또한 호스트 앱입니다.
닷넷 호스트 앱의 가장 큰 특징은 서비스 컨테이너를 포함하고 있다는 점입니다.
Asp.Net Core 는 이 컨테이너에 HttpContext 와 HttpResponse, 미들웨어 파이프 라인과 관련된 서비스를 기본적으로 제공하고 있는 것이죠.

이게 기본이고, 여기에 서비스와 미들웨어를 추가하는 방식으로 워크로드를 확장하는 구조입니다.

Wep Api, Minimal API, MVC, Web App, Blazor Web App등은 기본 컨테이너에 각각이 요구하는 서비스와 미들웨어가 추가하는 방식으로 설정됩니다. (프로젝트 템플릿을 사용하면 간편하게 선택할 수 있습니다)

참고로, Blazor 는 Single Pgae App 기술로, Asp.Net Core 의 다른 웹앱 기술과는 약간 차이가 있습니다. 뿐만 아니라, 일반적인 SPA와도 약간 다릅니다.

블레이저 자체는 매우 훌륭한 기술이 맞지만, SPA 에 익숙하지 않으시다면, 선택 여부는 신중하게 결정하시는 게 좋습니다.

프론트 엔드 기술이 있다면, Asp.Net Core Web Api 혹은 Asp.Net Core Minimal Api 가 가장 채택하기 용이할 것입니다.

MVC 구조에 익숙하다면, Asp.Net Core MVC가 코딩 효율적인 선택일 확률이 높습니다.

코드를 숨기는 게 목적이라면, Asp.Net Core MVC, Asp.Net Core Web App, Asp.Net Core Blazor Web App (InteractiveServer) 가 가장 적합하다고 할 수 있습니다.

7 Likes

정말 감사합니다.
방향을 정하는데 많이 도움이 되네요.

1 Like

저도 php 소스 때문에 이것저것 많이 고민 했었는데요. 최근에 phpbolt 라는 친구가 상용솔루션의 대체솔루션으로 오픈소스화 되었습니다. 일단은 이걸로 기존 서비스들을 인크립션 처리하고 ASP.NET을 고민해야하지 않나 싶어요.

저도 asp.net mvc 4 를 기반으로 하는 제품을 하나 맡았는데… 정말 .net 프레임워크로 winform 생각하고 금방 적응하겠지 싶었는데… 생각보다 기초가 없어서 애를 먹었었습니다. 그때 봤던 유튜브 강의가 있는데요. 지금은 퇴임하시고 온라인 학원 강사 하시는 것 같던데… 제가 들었던 과정은 .net 프레임워크 기반의 asp.net mvc 과정으로 그랜드캐년대학의 사드 교수님의 강의에요. 한번도 뵌적은 없지만, 차근차근 잘 알려주셔서 이해하기 좋았습니다.

asp.net core 강의도 있으니 한번 아래 강의도 한번 찾아서 들어보세요.

1 Like

아이구 감사합니다.
phpbolt 라는 것을 진작 알았어야 했는데요…
ASP.NET core MVC도 한번 시작해 봐야겠어요.

정말 감사합니다.

1 Like

링크에서 자습서를 포함한 MVC 하위 메뉴들을 살펴보세요.
(ASP.NET Core MVC 개요 | Microsoft Learn)
왼쪽 메뉴에 자습서와 각 항목에서 아래 내용을 살펴보세요.

컨트롤러의 메서드를 Action이라고 합니다. 라우팅은 컨트롤러의 액션과 URL이 관련돼있습니다.
View는 컨트롤러 액션에서 모델과 함께 반환되며 ASP.NET의 MVC는 Razor라는 템플릿 엔진을 사용해서 뷰를 구현합니다. 컨트롤러에서 반환되는 모델을 사용하는 방법이 포함되어 있습니다. 부분 뷰와 함께 살펴보세요.

Layout 은 공통으로 사용되는 틀인데 js, css를 설정하는 부분도 나옵니다. jQuery, Bootstrap 사용하는 부분을 확인해보세요.
@RenderBody에 Layout을 사용하는 뷰 내용이 배치됩니다.
@RenderSection 으로 스크립트를 추가할 섹션을 정하고 뷰에서 @section Scripts 안에 스크립트와 부분 뷰를 추가하는 설명이 나옵니다. 뷰 쪽 페이지는 여기 설명이 잘 되어 있네요.(https://www.c-sharpcorner.com/article/ajax-in-net-core/)

추가로 다음 링크에서 뷰를 컴포넌트로 만들어서 재사용하는 고급 기술도 살펴보세요(ASP.NET Core의 보기 구성 요소 | Microsoft Learn)

모델의 경우 예제 코드에서는 Entity Framework Core(ORM)을 사용해 관계형 디비와 객체 매핑과 마이그레이션, 디비 사용을 하고 있습니다. 웹 MVC는 루비 온 레일즈의 영향을 받았는데 여기에 액티브 레코드가 이렇게 사용했습니다.

저는 MVC 모델과 디비 모델을 분리하는 것을 좋아합니다. 별도의 class 로 정의해서 View 에서 사용할 모델을 정의하고 디비에서 가져온 값을 변환해서 뷰에서 사용하죠.

자습서의 데이터베이스 작업 부분을 보면 EF Core에 대한 설명이 추가로 더 나옵니다.
기존의 데이터베이스가 어떻게 되어있는지 모르겠지만 아마 계속 사용하시겠죠?
리버스 엔지니어링이라고 디비 스키마를 이용해 모델을 생성할 수 있습니다.
(리버스 엔지니어링 - EF Core | Microsoft Learn)
마이그레이션 작업은 연습용 디비와 개발용 디비에서만 사용하는 것이 좋습니다.
EF Core가 조금 부담되실 수 있는데 기존 디비를 그대로 사용하신다면 데이터 접근은 Dapper 를 사용하시는 것도 방법입니다.(GitHub - DapperLib/Dapper: Dapper - a simple object mapper for .Net) 데이터베이스 규모가 크다면 EF에 시간을 투자해보세요.

C# 구문을 활용할 수 있는 Razor 템플릿은 좋은 선택이지만 사내 프로그램이 꼭 서버에서 렌더링해야 할 필요가 없을 때, SEO 가 필요하지 않을 때, SPA로 클라이언트 앱을 구성해도 되는 경우에는 클라이언트 쪽 개발 - 단일 페이지 앱에서 선택하시는 것도 추천합니다. ASP.NET으로 Web API 까지만 구성하면 서버 쪽이 더 간단해집니다. 최신 프론트엔드 프레임워크에 익숙하지 않고 앵귤러 1.x 버전에 익숙하시면 Vue 쪽을, 시간적 여유가 되고 프론트엔드를 좀 더 다뤄보고 싶으시면 더 많이 사용되는 React를 추천합니다.
(React를 사용하여 ASP.NET Core 앱 만들기 - Visual Studio (Windows) | Microsoft Learn)
(Vue를 사용하여 ASP.NET Core 앱 만들기 - Visual Studio (Windows) | Microsoft Learn)

3 Likes

안녕하세요. 우선 저는 시니어 레벨의 경력을 가지고있지는 않아 도움이 될지는 모르겠습니다. 하지만 제가 여태까지 배운 내용에 따라 감히 조언을 드리고자 합니다.
일단 만들려고 하시는 앱의 목적이 무엇인지 확실히 알아야할 것 같습니다. 모놀로틱인지 아니면 마이크로서비스로 만들려고 하시는지…
백앤드 서비스를 만들려고 하시는거면 asp.net web api 로 시작하신 다음 프론트앤드 앱을 블레이저로 따로 만드는 방법이 있겠습니다.
그렇지 않고 그냥 모놀로틱으로 하실 꺼면 블레이저 서버로 다 해도 됩니다. 혼자서 다 개발해야되는 거면 굳이 백앤드와 프론트앤드를 시작부터 나눌 이유는 없어보이네요.

1 Like

자세한 설명 정말 감사드립니다.
많은 도움이 되네요.

1 Like

정말 감사합니다.

1 Like

예전 c#생각한다면 당장 진입점인, Program.cs 보는 순간 좀 헉할 겁니다.
Main도 없고 스크립트로 되어있으니까요. 가장 좋은 건 .net 8로 MVC 템플릿으로 프로젝트 만들고 Program.cs 첫줄 부터 디버깅하면 감이 오실겁니다. 화이팅

1 Like

정말 감사합니다.

1 Like