답변:
나는 여기서 성전을 시작하려는 것은 아니지만 대부분의 인터넷 서비스 (플리커, 트위터, 페이스 북 등)는 직렬화 형식으로 RESTful 웹 서비스 및 JSON을 선호하여 SOAP를 삭제했습니다. 본질적으로 동일하지만 REST 서비스는 url 및 http 메소드를 사용하여 수행해야 할 작업을 정의합니다 (예 :
GET /articles - list all articles
POST /articles - add a new article
PUT /articles/123 - update article 123 with new data
json.org에 설명 된 JSON도 XML보다 단순하며 전혀 관련이 없으므로 요청 당 몇 바이트를 절약 할 수 있습니다. 이전 예에 따라 JSON 표기법으로 기사를 설명하는 방법은 다음과 같습니다.
{
"id": 123,
"author": "Cyril",
"content": "Hello, this is an article",
"tags": [ "gamedev", "webservices", "multiplayer" ]
}
IOS에는 http://code.google.com/p/json-framework 를 언급하는 멋진 기사 http://petermcintyre.wordpress.com/2010/11/04/consume-json-rest-in-ios/ 가 있습니다 . / 데이터 구문 분석 및 생성
턴 기반이기 때문에 서버의 http 세션을 사용하여 상태를 유지할 수 있으므로 서버에 대한 지속적인 소켓 연결을 유지할 필요가 없습니다. 모든 서버 측 언어가이를 지원합니다 (php, python, java 등).
이 아키텍처를 사용하면 투명한 방식으로 수평 확장 (서버 추가)이 가능합니다.
게임이 턴 기반이기 때문에 실시간 업데이트는 중요하지 않습니다. 가장 쉬운 방법은 이미 구축 된 서버를 사용하는 것입니다. 웹 서버를 사용합니다. 게임을 이식 할 가치가있는 모든 플랫폼은 웹 서버에있는 웹 서비스에 쉽게 액세스 할 수 있어야합니다.
거의 실시간으로 업데이트를 제공하려면 긴 폴링 을 검토하는 것이 좋습니다 . 해당 링크의 코드는 서버 측에서 가장 긴 폴링 구현을 제공합니다. 그러나 요점은 일단 리소스에 대한 요청이 있으면 요청 된 데이터가 사용 가능해질 때까지 서버가 차단 호출을 실행한다는 것입니다. 그런 다음 프로세스를 반복해서 반복하십시오.
어떤 데이터를 다시 보내야하는지에 대해서는 항상 클라이언트를 적대적인 것으로 취급하십시오. 클라이언트는 "턴 상태"가 무엇이든 보내야하며 서버가이를 확인한 다음 모든 것이 체크 아웃되면 새로운 "게임 상태"를 연결된 모든 클라이언트에게 다시 보냅니다.
-
SOAP 웹 서비스는 시작하기 가장 좋은 곳 ( link )이며 시작하기 쉬우 며 대부분의 웹 프레임 워크는이를 노출시키는 방법을 제공합니다. RESTful 서비스를 살펴볼 수도 있지만 일반적으로 소비자에게 약간의 직렬화 프로세스를 남겨 둡니다.
Android에서 SOAP 웹 서비스를 사용 하려면 여기를 참조하십시오 .
SOAP 또는 HTTP를 사용하는 것은 과도하다고 생각합니다. 바닐라 TCP 연결을 통해 자신의 프로토콜을 정의하십시오. 예를 들어, 명령으로 전송 된 각 텍스트 줄을 해석하십시오. 클라이언트와 서버가 보낼 수있는 명령 / 응답을 정의하십시오.
FICS는 그러한 방식으로 작동하며 수년 동안 수천 명의 체스 플레이어에게 서비스를 제공해 왔습니다. IRC도 그렇게 작동합니다 (RFC 1459 참조).