웹서버 35

Entity Framework Core 데이터 관계 모델링

이번 포스트에서는 Entity Framework Core에서의 데이터 관계 모델링에 대해 알아보겠습니다.관계는 데이터를 포함하는 두 테이블 간의 연결을 의미하는데,이런 관계형 모델링에서 사용하는 몇가지 용어가 존재합니다.1) Priamry Key : 기본키, 데이터 테이블에서의 고유 식별자2) Alternate key : 대체키, 기본키를 제외한 기본키가 될 수 있는 나머지 속성들3) Principal Key : Priamry Key + Alternate key, 외래 키가 참조하는 테이블의 기본키4) Foreign Key : 한 테이블에서 참조하는 다른 테이블이 갖고 있는 기본키5) Navigation Property : 한 테이블에서 갖고 있는 다른 테이블을 의미하는 프로퍼티 위와 같은 용어가 존재합..

Entity Framework Core 데이터 모델링

기존의 GameResult 클래스를 대상으로 Add Migration 명령어를 입력하게 되면자동적으로 Migration되어 해당 클래스 기반으로 데이터 테이블을 생성하게 되는 것을 확인하였습니다. 또한 따로 지정하지 않아도 프로퍼티 Id를 Primary Key로 지정하게 되는 것도 확인할 수 있습니다.위와 같은 과정을 데이터 모델링으로 부를 수 있습니다.데이터 모델링은 주어진 개념으로부터 논리적인 데이터 모델을 구성하는 작업을 의미하는데크게 다음의 3가지로 분류할 수 있습니다.Convention(관례) : 기본적으로 설정된 규칙을 따라서 데이터 모델링이 이뤄집니다.Data Annotation(데이터 주석) : 어트리뷰트를 이용하여 데이터 테이블의 속성에 대한 세부사항을 설정합니다.Fluent API(직..

Unity와 WebApi 연동

이번 포스트에서는 이전의 WebAPI 프로젝트에 Unity 프로젝트를 연결해보겠습니다.다음과 같이 Unity 프로젝트를 구성하였습니다. 빈 오브젝트인 WebManager를 생성하고, 컴포넌트로 WebManager 스크립트를 추가하였습니다.WebManager 스크립트를 사용하여 Unity 프로젝트는이전 포스트에서의 Razor 프로젝트와 동일한 클라이언트의 역할을 수행합니다. 1) Unity 프로젝트 - WebManager 클래스1 - 1) GameResult 클라이언트에서 서버로 전송할 데이터인 GameResult 클래스를 생성하였습니다.프로퍼티인 UserName과 Score를 Web API 서버로 전송하게 됩니다. 1 - 2) WebManager 프로퍼티인 baseUrl입니다. Web API의 서버 UR..

Blazor와 Web API 연동

이번 포스트에서는 이전에 만든 Blazor 프로젝트와 Web API 프로젝트를 연동해보도록 하겠습니다.연동 방식은 다음과 같습니다. Blazor 방식의 프로젝트에서는 Client + Server를 수행하되 DB에 접근하지 않습니다.Web API 방식의 프로젝트에서의 Server가 DB에 접근하고 Blazor 방식의 Server에 전달하도록 하겠습니다. 위와 같은 구성은 다음의 이점을 얻을 수 있습니다.1) 용도에 맞게 구성요소를 분리할 수 있습니다.2) 웹 페이지를 관리하는 주체와 DB를 가져오는 주체로 구분지어 관리할 수 있습니다. 1) Blazor 프로젝트 - ApplicationDbContext 클래스 더 이상 Blazor 프로젝트에서 DB를 연결하지 않으므로 ApplicaionDbContext 클..

WebApi #3

이전 포스트에서는 REST API의 CRUD중에서 READ에 해당하는 GET만을 구현하였습니다.이번 포스트에서는CREATE에 해당하는 GET,UPDATE에 해당하는 UPDATE,DELETE에 해당하는 DELETE위의 3가지 동작을 만들어보겠습니다. 1) RankingController 클래스 우선, POST 동작을 수행하는 AddGameResult 메서드를 추가하였습니다.해당 메서드에서는 GameResult를 인자로 받는데,이때 인자에 FromBody 어트리뷰트를 추가하여 Body로부터 인자를 받을 수 있도록 설정합니다. 인자로 들어온 GameResult를 DbContext에 추가하고 반영한뒤,인자로 들어온 GameResult를 리턴하도록 구성하였습니다. UPDATE를 수행하는 메서드 UpdateGam..

WebApi #2

이번 포스트에서는 본격적으로 Web API 방식을 사용하여 웹 페이지를 구현해보겠습니다.이를 위해 우선, 웹 서버로부터 전달받은 데이터를 조작하기 위한 Controller를 만들겠습니다.이때 Controller를 만들기 이전에 Web API 방식에서 사용하는 REST Api에 대해 알아보겠습니다. 1) REST Api란?https://aws.amazon.com/ko/what-is/restful-api/ RESTful API란 무엇인가요? - RESTful API 설명 - AWSAmazon API Gateway는 어떤 규모에서든 개발자가 API를 손쉽게 생성, 게시, 유지 관리, 모니터링 및 보안 유지할 수 있도록 하는 완전관리형 서비스입니다. API Gateway를 사용하면 실시간 양방향 통신 애aws...

WebApi #1

이번 포스트에서는 Razor를 이용한 웹 페이지 구현 방식 중에서이전의 Blazor 방식이 아닌, Web API 방식을 사용하여 웹 페이지를 구현해보겠습니다. 1) Web API 방식을 사용하는 이유기존의 Blazor를 사용하는 방식은 C# 스크립트와 더불어서 HTML 스크립트를 작성하여SPA 방식으로 웹 페이지를 구현할 수 있다는 장점이 존재하였습니다. 그러나 프로젝트의 최종 목표는 웹 페이지의 구현이 아닌, Unity와 서버를 연결하는 것이 목표입니다.따라서 웹 페이지의 역할은 Unity에서 수행하고 서버는 데이터만 건네주는 방식을 구현해볼 것입니다. 2) 절차이전의 랭킹을 보여주는 Blazor 웹 페이지 프로젝트가 존재하는 동일한 경로에 프로젝트를 생성합니다.따라서 몇 가지 절차를 수행해야 합니다...

Blazor - (15) Blazor를 이용한 랭킹 앱 (4)

이전까지 작업에서 웹 페이지에서 DB로 데이터를 추가하고, 추가한 데이터도 웹 페이지에서 띄워보았습니다.이번에는 웹 페이지에서 데이터를 삭제 / 수정하고 변경된 부분을 DB에 적용해보도록 하겠습니다. 1) RankingService 클래스1 - 1) 수정(UPDATE) 새로운 UpdateGameResult 메서드를 추가하였습니다.해당 메서드는 기존의 GameResult 데이터를 수정하기 위해 사용합니다.인자로는 수정할 GameResult를 받습니다. 수정할 GameResult가 존재하지 않는다면 false를 리턴합니다.수정할 GameResult가 DB에 존재한다면 UserName과 Score를 수정하고 true를 리턴합니다.수정이 이뤄진 후, 메모리의 GameResult의 인스턴스와 DB의 GameRes..

Blazor - (14) Blazor를 이용한 랭킹 앱 (3)

이전까지는 랭킹 앱에서 DB에 있던 데이터를 읽어와 웹 페이지에서 띄우는 작업만 수행하였습니다.이번에는 웹 페이지에서 DB로 데이터를 추가하고, 추가한 데이터도 웹 페이지에서 띄워보도록 하겠습니다. 1) 로그인 여부에 따라 다른 페이지 연출CREATE 작업을 하기전 로그인을 해야 랭킹 페이지를 볼 수 있도록 코드를 수정해보겠습니다. 1 - 1) Ranking 컴포넌트이미 만들어진 컴포넌트 중에서 LoginDisplay 컴포넌트를 사용하면 위의 기능을 구현할 수 있습니다.따라서 이전의 Ranking 컴포넌트를 다음과 같이 수정하겠습니다. HTML 스크립트를 AuthorizeView 태그로 감싸고,로그인 이후에 제공할 서비스를 Authorized 태그안에 배치하고반대로 로그인하지 않은 경우 제공할 서비스를..

Blazor - (13) Blazor를 이용한 랭킹 앱 (2)

이전 포스트에 이어서 랭킹 앱을 개발해보겠습니다. 1) 앱에서 사용할 DB 1 - 1) GameResults 클래스 프로젝트의 Data 폴더 아래에 Models 폴더를 만들고, GameResult를 생성하였습니다. public class GameResult{ public int Id { get; set; } public int UserId { get; set; } public string UserName { get; set; } public int Score { get; set; } public DateTime ClearDate { get; set; }} 코드의 구성은 위와 같고, 위의 데이터를 바탕으로 데이터 테이블을 만들어보겠습니다. 1 - 2) ApplicationDbCo..