여러분의 게임 서버가 이미 web application server 즉 WAS를 사용하고 있거나 WAS를 사용할 예정인 경우쉽게 게임 서버를 개발하실 수 있을 것입니다.
하지만 WAS는 다음과 같은 단점이 있습니다.
실시간 멀티플레이를 빠르게 처리하기 어렵다.
서버에서 게임플레이를 처리하기에는 서버 부하가 너무 크다.
그림 19-1실시간 멀티플레이를 WAS로 처리할 때 발생하는 비효율
따라서 여러분은 프라우드넷 같은 소켓 서버를 혼용하고 싶으실 수도 있습니다.
일반적으로 프라우드넷 같은 소켓 서버와 WAS를 혼용하는 방법은 다음과 같습니다.
19.1소켓 서버와 WAS 사이에 데이터베이스를 두어 서로 데이터를 공유 하는 방법
이 방식은 직관적이고 단순하지만 데이터베이스에 처리량이 몰리는 단점이 존재합니다.
또한 데이터 공유 이상의 처리 가령 WAS에서 소켓 서버에 요청을 보내고 응답을 받는 것이 불가능합니다.
19.2소켓 서버가 HTTP 요청 응답을 처리할 수 있는 기능을 탑재하고 WAS는 소켓 서버에 HTTP로 요청을 보내는 방법
이를 위해 Microsoft REST SDK 등을 소켓 서버에 쓰는 방법이 있습니다.
19.3WAS와 소켓 서버 사이에 HTTP가 아닌 소켓 통신을 하는 방법
WAS는 플러그인에 명령을 보내고 플러그인은 그 명령을 받아 소켓 서버로 보냅니다. 플러그인은 C++나 C# 등의 언어로 개발할 수 있습니다.
프라우드넷의 경우 NetClient나 LanClient를 사용하면 됩니다.
WAS의 플러그인 프로그래밍 방법은 다음과 같이 알려져 있습니다.
PHP: CGI or FastCGI
ASP.NET: C# class library
node.js: C plugin
Java: JNI