목록게임/ASP.NET Core (15)
센로그
◆ Dependency Injection 종속성 주입. 웹 개발시 유용한 패턴이라 많은 웹 서버 플랫폼에 도입된 기능이다. 디자인 패턴에서, 우리는 코드간의 종속성을 줄이는 것을 중요하게 생각함 (loosely coupled) 그러면 종속성이란 무엇이냐? 우선 종속성과 관련된 예시를 보자. public class FileLogSettings { string _filename; public FileLogSettings(string filename) { _filename = filename; } } public class FileLogger { FileLogSettings _settings; public FileLogger(FileLogSettings settings) { _settings = setting..
◆ WebAPI 지금까지 우리는 MVC를 공부했었다. WebAPI는 단순히 말하면 MVC에서 View 기능을 제거한 것이다. MVC에서 View가 HTML을 반환하지 않고, JSON/XML 데이터를 반환하면 그게 WebAPI임. 나머지 Routing, Model Binding, Validation, Response 등은 MVC에서와 똑같이 동작한다! 지금까지 MVC에서는 컨트롤러의 Action들을 다 IActionResult 형식으로 만들었다. 이번에는 다른 형식을 써보자. public IEnumerable Test() { List names = new List() { "Seeyoun", "Hoochu", "KongKong", "Hangang" }; return names; } List 형식의 데이터를 ..
◆ TagHelper 태그 헬퍼는 일종의 HTML Helper이다. 왜 필요할까? 보통 웹페이지는 View만 딱 보여주고 끝나진 않는다. 예를들어 View를 보여주고, 유저가 Submit을 하면 이어서 로직이 실행되는 상황이 자주 발생하곤 한다. DataModel을 이용해서 유저 요청을 파싱할 수 있다고 했었다. 근데 그건 언제까지나, 서버 쪽에 데이터가 왔을 때의 처리에 관한 내용이다. 아직 서버에게 보내기 전에, 뷰 자체에서 유저가 제출한 데이터에 따라 뭔가(경고 메시지 등)를 보여주고 싶다면? HTML로 손수 작성해도 되긴 함. 그러나 노가다가 될수도? ASP.NET Core에서는 TagHelper를 이용하면 쉽게 처리할 수 있다. 참고로 _ViewImports.cshtml을 보면, TagHelpe..
◆ View View는 MVC의 V로, 유저에게 보여줄 뷰(UI)를 의미한다. 요청이 들어오면 Action에서 데이터를 전달받아서 서비스를 통해 처리하고, 다시 돌려받은 데이터를 View로 전달할 것. 그리고 View에서 HTML을 생성해서 응답으로 돌려줄 것임. 이때 View가 어떻게 동작하는지 살펴보겟음. 현재 코드(기본 MVC 프로젝트)에서 View는 어디서 처리하고 있을까? Index.cshtml을 보면 아래와 같이 작성되어있다 @{ ViewData["Title"] = "Home Page"; } Welcome Learn about building Web apps with ASP.NET Core. 이렇듯 C# 과 HTML 을 섞은 것처럼 생긴 포맷을 Razor View Page 라고 함. (.csh..
◆ Model Binding MVC에서 M, 즉 데이터 모델에 관해 알아볼 것임. 데이터 모델도 종류가 다양함. Binding Model 클라에서 보낸 Request를 파싱하기 위한 데이터 모델 유효성 검증 필수 Application Model 서버의 각종 서비스들이 사용하는 데이터 모델 ex) 랭킹 서비스라면 랭킹 데이터같이 서비스쪽으로 넘길 데이터가 필요할 것 View Model 뷰, 즉 Response UI를 만들기 위한 데이터 모델 API Model WebAPI Controller에서 JSON/XML 포맷으로 응답할 때 필요한 데이터 모델 오늘은 그중 Binding Model에 대해 알아볼 것. MVC - 요청 및 처리 순서 MVC 로 설계된 웹에서, 일반적인 요청 처리 순서는 다음과 같다. (f..
◆ Routing HTTP request가 들어오면 이를 담당 handler에게로 라우팅해줘야 한다. (ASP.NET Core에서는, 담당 액션에게로) 이때 라우팅 방법은 크게 두 가지로 나뉜다. 코드를 통한 라우팅 라우팅 패턴 설정 (MVC에서 주로 사용) 어트리뷰트 라우팅 (WebAPI에서 주로 사용) 폴더 구조 자체를 통한 라우팅 폴더 구조 라우팅은 직관적이니 패스하고, 여기서는 코드를 통한 라우팅을 공부해볼 것이다. 라우팅 패턴 다음은 program.cs에서 라우팅을 하던 코드임 //라우팅 패턴 설정 app.MapControllerRoute( name: "default", // '컨트롤러 이름, 액션 이름, 아이디' 형태로 라우팅 패턴에 맞게끔 코드를 연동시켜줌. (기본 관례) pattern: "..