ASP.NET 이론
ASP.NET 실습
Blazor실습
Stateful / Stateless
- Stateful
- 서버가 클라이언트의 상태를 계속 기억하고 유지 → 연결 유지?
- 클라이언트의 로그인 정보, 세션, 현재 상태 등이 서버에 저장되고 관리
- 클라-서버 간 지속적인 연결 필요 → 상태 정보를 저장하고 업데이트하기 위해 많은 리소스 필요할 수 있음 + 확장이 어려움
- Stateless
- 클라이언트의 요청들이 각각 독립적 + 이전 요청들이랑 상관 없음
- 스테이지 클리어, 아이템 사용 등 필요시에만 서버에 연결해서 데이터를 전달하고 결과를 반영함
- 서버는 이 요청들을 다 독립적으로 처리 → 비동기?
- 요청들을 처리할때 요청 사이에 서버와 클라 연결이 끊어져도 상관 없음
- 확장성이 좋음 + 서버 리소스를 효율적으로 사용 가능
- 장애 발생 시 장애가 발생한 서버를 간단하게 대체 가능
왜 소켓 서버 아니고 웹 API 서버를 쓸까?
- 웹 API는 Stateless
- 소켓 서버는 Stateful
- 실시간 게임이라면? 서버가 클라의 게임 상태를 계속 유지 + 관리해야함 → stateless라면 그때마다 연결하고, 인증하고.. 등 이런걸 계속 해야함 → 구려! → Stateful한 소켓 서버를 사용해서 클라와의 연결을 유지하는게 낫다
- 실시간 아니고 싱글 게임이나, 그냥 게임하고 결과를 등록하거나 갱신하는 게임이라면? 굳이 서버와 클라가 계속 연결되어있을 필요 없음