WinHttp é a nova API HTTP do Win32 que substitui as APIs IXMLHttpRequest2 (IXHR2) e IMessageWebSocket. WinHttp é uma API de nível mais baixo que a IXHR2 e, portanto, não tem alguns recursos em comparação com a IXHR2, como cache de conteúdo, cookies, inserção automática de tokens dos XBOX services e aplicação automática de segurança. Em contrapartida, WinHttp tem um desempenho muito melhor por ser executada no processo, ter menos sobrecarga e evitar cópias excessivas de memória. Além disso, WinHttp dá suporte a HTTP/1.1, HTTP/2 e WebSockets, tudo em uma única API, e inclui recursos que faltam na IXHR2, como uploads em partes.
XCurl é uma API HTTP para o Microsoft Game Development Kit (GDK). XCurl fornece uma API mais simples por meio de um adaptador sobre WinHttp. A superfície da API XCurl corresponde, em linhas gerais, à libCurl. XCurl simplifica o desenvolvimento de títulos ao lidar automaticamente com as práticas recomendadas de segurança e com a inicialização da rede.
Além de WinHttp, a API dos XBOX services (XSAPI) fornece o conjunto simples de APIs http_call, que você pode usar para fazer solicitações HTTP REST aos seus próprios servidores personalizados. Recomendamos usar a XSAPI para todas as solicitações REST que seu título faz aos seus próprios serviços e aos XBOX services.
Para obter mais informações sobre a XSAPI, consulte Introdução às APIs dos XBOX services.
O GDK inclui um exemplo SimpleWinHttp que abstrai o uso do WinHTTP em um modelo assíncrono simples do Microsoft Game Development Kit (GDK). Recomendamos que você use esse exemplo como ponto de partida para sua própria implementação do WinHTTP, pois ele aborda muitos dos detalhes envolvidos na criação de uma integração segura e robusta com o WinHTTP.
Para obter mais informações sobre como usar XCurl ou WinHttp, consulte HTTP e WebSockets.
Inicialização da rede
Seu título é iniciado o mais cedo possível durante o processo de inicialização do Game OS. Você pode começar a carregar ativos do disco rígido e iniciar a inicialização da pilha de gráficos. No entanto, seu código está sendo executado antes de os serviços de rede serem iniciados, o que leva a um período em que não é seguro usar as APIs de rede do Win32. Definimos esse período como o período de inicialização da rede, após o qual a rede é considerada inicializada. A inicialização da rede normalmente leva alguns segundos, o que pode ser perceptível no seu código. A inicialização da rede em títulos ERA do XBOX One bloqueava de forma implícita e arbitrária APIs de rede que, de outra forma, seriam seguras para tempo real, comoWSAStartup ou bind. Com os aplicativos do Microsoft Game Development Kit (GDK), a inicialização da rede agora é um conceito explícito com o qual você deve interagir para usar quaisquer APIs de rede ou de segurança do Win32.
Os títulos do Microsoft Game Development Kit (GDK) devem aguardar até que o Booleano XNetworkingConnectivityHint::networkInitialized seja definido como true antes de chamar qualquer API de rede em Winsock, WinHttp, IP Helper, BCrypt, WinCrypt, Schannel ou qualquer outra API de rede do Win32. Chamar qualquer uma dessas APIs antes de a rede ser inicializada resulta em comportamento indeterminado, incluindo falhas aleatórias do processo.
Além disso, esse mesmo conceito se aplica a todos os ciclos de suspensão/retomada. Na suspensão, os títulos do Microsoft Game Development Kit (GDK) devem fechar todos os identificadores de rede e de segurança. Em seguida, os títulos do Microsoft Game Development Kit (GDK) devem tratar o manipulador de retomada da mesma forma que a inicialização original do título, do ponto de vista da rede, e aguardar novamente até que a rede seja inicializada.
Para obter mais informações, incluindo exemplos de código que mostram como aguardar a inicialização da rede, consulte Inicialização e conectividade da rede.
