대형 프로젝트 - C# + 유니티로 만드는 MMORPG 게임 개발/(5) EF Core

Connected와 Disconnected

monstro 2025. 8. 11. 17:01
728x90
반응형

- 개요

Update를 하는 경우의 2가지 상황ConnectedDisconnected에 대해서 알아보겠습니다.

  • Connected : Update의 3단계동시에 수행되지 않고 끊겨서 수행되는 상황
  • Disconnected : Update의 3단계동시에 수행되는 상황

 

이번에는 Disconnected 상황만 다뤄보도록 하겠습니다.

Disconnected 상황인 경우 처리할 수 있는 Update 방식2가지가 존재합니다.

  • Reload 방식 : 필요한 정보만 보내서 Update를 수행
  • Full Update 방식 : 모든 정보를 보내서 완전히 새로운 Entity를 만들어 Update를 수행

 

1) 사전 작업

1 - 1) DataModel 클래스

 

DTO 클래스Guild의 기본키를 운반할 수 있도록 정수형 프로퍼티를 추가하였습니다.

 

1 - 2) Extensions 클래스

 

Extension 메서드에 GuildId를 가져오는 로직을 추가하였습니다.

 

1 - 3) DBCommands 클래스

 

ShowGuilds 함수를 추가하였습니다.

해당 함수를 사용하여 업데이트하기전업데이트한후Guild 테이블의 데이터를 출력합니다.

 

2) Reload 방식 - DBCommands 클래스

 

UpdateByReload 함수의 로직은 위와 같습니다.

수정하고 싶은 길드 ID를 입력받고, 새로 수정할 길드명을 입력받아 데이터를 갱신합니다.

이때 DbContext의 Find 함수Guild 테이블의 기본키를 넘겨주어 빠르게 탐색합니다.

 

수정하기 이전의 GuildName

 

Re-load 업데이트를 통한 데이터 갱신

 

수정한 이후의 GuildName

 

최종 실행 결과는 위와 같습니다.

 

3) Full Update 방식 - DBCommands 클래스

 

MakeUpdateJsonStr 함수를 사용하여 json 형식의 데이터를 보내 Full Update를 진행합니다.

 

 

UpdateByFull 함수의 로직은 위와 같습니다.

MakeUpdateJsonStr 함수를 사용하여 가져온 json 형태의 데이터를 역직렬화하여 Guild 객체를 생성합니다.

생성한 객체를 통해 Full Update를 진행합니다.

 

수정하기 이전의 GuildName

 

Full Update를 통한 데이터 갱신

 

수정한 이후의 GuildName

 

최종 실행 결과는 위와 같습니다.

 

- 최종 정리

위와 같은 과정을 거쳐 알아본 Re-load 업데이트 방식과 Full 업데이트 방식의 특징은 다음과 같습니다.

1) Re-load 업데이트

  • 장점 : 최소한의 정보를 사용하여 Update를 진행할 수 있음
  • 단점 : Update할 데이터를 찾기 위해 최소 2번의 Read가 수행되어야 함

2) Full 업데이트

  • 장점 : Read할 필요없이 바로 Update를 진행할 수 있음
  • 단점 : Update하기 위해서는 해당 테이블의 모든 정보가 필요 + 모든 정보가 노출되므로 보안에 취약
728x90
반응형

'대형 프로젝트 - C# + 유니티로 만드는 MMORPG 게임 개발 > (5) EF Core' 카테고리의 다른 글

Relationship Update  (0) 2025.08.12
외래키와 Nullable  (0) 2025.08.11
Update 기초  (0) 2025.08.11
Entity 상태 관리  (0) 2025.08.11
Data Transfer Object  (0) 2025.08.05