WinHttp는 IXMLHttpRequest2(IXHR2) 및 IMessageWebSocket API를 대체하는 새로운 Win32 HTTP API입니다. WinHttp는 IXHR2보다 낮은 수준의 API이므로 콘텐츠 캐싱, 쿠키, 자동 XBOX services 토큰 삽입, 자동 보안 적용과 같이 IXHR2에 비해 부족한 기능이 있습니다. 그 대가로 WinHttp는 인-프로세스이고 오버헤드가 적으며 과도한 메모리 복사를 피함으로써 훨씬 더 뛰어난 성능을 제공합니다. 또한 WinHttp는 HTTP/1.1, HTTP/2, WebSockets를 모두 하나의 API에서 지원하며, IXHR2에 없는 청크 업로드와 같은 기능을 포함합니다.
XCurl은 Microsoft Game Development Kit(GDK)용 HTTP API입니다. XCurl은 WinHttp 위의 어댑터를 통해 더 간단한 API를 제공합니다. XCurl API 표면은 대체로 libCurl과 일치합니다. XCurl은 보안 모범 사례와 네트워크 초기화를 자동으로 처리하여 타이틀 개발을 단순화합니다.
WinHttp 외에도 XBOX Services API(XSAPI)는 자체 사용자 지정 서버에 대한 REST HTTP 요청을 보내는 데 사용할 수 있는 간단한 http_call API 집합을 제공합니다. 타이틀이 자체 서비스 및 XBOX services에 하는 모든 REST 요청에는 XSAPI 사용을 권장합니다.
XSAPI에 대한 자세한 내용은 XBOX Services API 시작하기를 참조하세요.
GDK에는 WinHTTP 사용을 간단한 Microsoft Game Development Kit(GDK) 비동기 모델로 추상화하는 SimpleWinHttp 샘플이 포함되어 있습니다. 이 샘플은 안전하고 강력한 WinHTTP 통합을 구축하는 데 관련된 많은 세부 사항을 다루므로 자체 WinHTTP 구현의 시작점으로 사용하는 것이 좋습니다.
XCurl 또는 WinHttp 사용 방법에 대한 자세한 내용은 HTTP 및 웹 소켓을 참조하세요.
네트워크 초기화
타이틀은 Game OS 시작 프로세스 동안 가능한 한 빨리 시작됩니다. 하드 드라이브에서 자산을 로드하기 시작하고 그래픽 스택을 초기화하기 시작할 수 있습니다. 그러나 코드는 네트워크 서비스가 시작되기 전에 실행되며, 이로 인해 Win32 네트워크 API 사용이 안전하지 않은 기간이 발생합니다. 이 기간을 네트워크 초기화 기간이라고 정의하며, 이 기간이 지나면 네트워크가 초기화된 것으로 간주됩니다. 네트워크 초기화는 일반적으로 몇 초가 걸리며, 이는 코드에서 눈에 띌 수 있습니다. XBOX One ERA 타이틀의 네트워크 초기화는WSAStartup 또는 bind와 같이 실시간에 안전한 네트워크 API를 암묵적이고 임의로 지연시키곤 했습니다. Microsoft Game Development Kit(GDK) 앱에서 네트워크 초기화는 이제 Win32 네트워킹 또는 보안 API를 사용하기 위해 상호 작용해야 하는 명시적 개념입니다.
Microsoft Game Development Kit(GDK) 타이틀은 Winsock, WinHttp, IP Helper, BCrypt, WinCrypt, Schannel 또는 기타 네트워킹 Win32 API의 어떤 네트워킹 API도 호출하기 전에 XNetworkingConnectivityHint::networkInitialized 부울이 true로 설정될 때까지 기다려야 합니다. 네트워크가 초기화되기 전에 이러한 API를 호출하면 임의의 프로세스 크래시를 포함한 불확정 동작이 발생합니다.
또한 동일한 개념이 모든 일시 중단/재개 주기에 적용됩니다. 일시 중단 시 Microsoft Game Development Kit(GDK) 타이틀은 모든 네트워크 및 보안 핸들을 닫아야 합니다. 그런 다음 Microsoft Game Development Kit(GDK) 타이틀은 네트워킹 관점에서 재개 핸들러를 초기 타이틀 시작과 동일하게 취급하고 다시 네트워크가 초기화되기를 기다려야 합니다.
네트워크 초기화를 기다리는 방법을 보여주는 코드 예제를 포함한 자세한 내용은 네트워크 초기화 및 연결성을 참조하세요.
