> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# GDK と XDK における Web リクエストの相違点

> Microsoft Game Development Kit と XBOX One Software Development Kit における Web リクエストの相違点

この記事では、Microsoft Game Development Kit (GDK) と XBOX One Software Development Kit の間の Web リクエスト API の相違点について説明します。`WinHttp` は、`IXMLHttpRequest2` (IXHR2) および `IMessageWebSocket` API を置き換える新しい Win32 HTTP API です。`WinHttp` は IXHR2 よりも低レベルの API であるため、コンテンツ キャッシュ、Cookie、XBOX サービス トークンの自動挿入、自動セキュリティ強制など、IXHR2 に比べて欠けている機能もあります。その代わり、`WinHttp` はイン プロセスで動作し、オーバーヘッドが小さく、過度なメモリ コピーを避けることで、はるかに高いパフォーマンスを発揮します。また、`WinHttp` は 1 つの API で HTTP/1.1、HTTP/2、および WebSockets をサポートしており、チャンク アップロードなど IXHR2 にない機能も備えています。

`XCurl` は Microsoft Game Development Kit (GDK) 向けの HTTP API です。`XCurl` は、`WinHttp` の上に置かれるアダプター経由で、よりシンプルな API を提供します。`XCurl` の API 表面は [libCurl](https://curl.haxx.se/libcurl/) と広範に一致します。`XCurl` はセキュリティのベスト プラクティスの処理とネットワーク初期化の処理を自動化することで、タイトル開発を簡素化します。

`WinHttp` に加えて、XBOX Services API (`XSAPI`) は、独自のカスタム サーバーに対して REST HTTP リクエストを行うためのシンプルな [http\_call](/reference/live/xsapi-c/http_call_c/http_call_c_members) API セットを提供します。タイトルが独自サービスや XBOX サービスに対して行う REST リクエストには `XSAPI` の使用を推奨します。
`XSAPI` の詳細は、[XBOX Services API の入門](/services/xbox-services/fundamentals/xbox-services-api/live-gs-xbl-apis) を参照してください。

GDK には、WinHTTP の使用をシンプルな Microsoft Game Development Kit (GDK) 非同期モデルに抽象化した [SimpleWinHttp サンプル](https://aka.ms/gdkdl) が含まれています。セキュアで堅牢な WinHTTP 統合を構築する際に関わる多くの詳細をカバーしているため、独自の WinHTTP 実装の出発点として利用することを推奨します。

`XCurl` および `WinHttp` の使い方の詳細については、[HTTP と Web Socket](/build/console-features/networking/web-requests/http-networking) を参照してください。

## ネットワーク初期化

Game OS の起動プロセス中、タイトルはできるだけ早く起動されます。ハード ドライブからアセットのロードを開始し、グラフィックス スタックの初期化も開始できます。しかし、ネットワーク サービスが起動する前にコードが実行されるため、Win32 のネットワーク API を安全に使用できない期間が発生します。この期間を *ネットワーク初期化* 期間と定義し、その後ネットワークは初期化済みとみなされます。ネットワーク初期化には通常数秒かかり、コード上で目立つ場合があります。

XBOX One ERA タイトルにおけるネットワーク初期化では、本来リアルタイム安全な `WSAStartup` や `bind` のようなネットワーク API を、暗黙的かつ任意にストールさせていました。Microsoft Game Development Kit (GDK) アプリでは、ネットワーク初期化は明示的な概念となり、Win32 のネットワーク API やセキュリティ API を使用するには、これと対話する必要があります。

Microsoft Game Development Kit (GDK) タイトルは、`Winsock`、`WinHttp`、`IP Helper`、`BCrypt`、`WinCrypt`、`Schannel`、その他のネットワーク Win32 API を呼び出す前に、`XNetworkingConnectivityHint::networkInitialized` の Boolean 値が `true` に設定されるのを待たなければなりません。ネットワーク初期化前にこれらの API を呼び出すと、ランダムなプロセス クラッシュを含む不定な動作を引き起こします。

さらに、これと同じ概念はすべてのサスペンド/レジューム サイクルにも適用されます。サスペンド時、Microsoft Game Development Kit (GDK) タイトルはすべてのネットワーク ハンドルとセキュリティ ハンドルを閉じる必要があります。その後、Microsoft Game Development Kit (GDK) タイトルは、ネットワークの観点でレジューム ハンドラーを初回タイトル起動と同じように扱い、再びネットワークが初期化されるのを待つ必要があります。

ネットワーク初期化を待機する方法を示すコード例を含む詳細は、[ネットワーク初期化と接続](/build/console-features/networking/initialization-connectivity-networking) を参照してください。

## 関連項目

[ネットワーク初期化と接続](/build/console-features/networking/initialization-connectivity-networking)

[通信セキュリティの概要](/build/game-principles/security/communication-security-overview)

[XBOX Services API の入門](/services/xbox-services/fundamentals/xbox-services-api/live-gs-xbl-apis)

[http\_call\_c](/reference/live/xsapi-c/http_call_c/http_call_c_members)


## Related topics

- [ゲーム メッシュ通信: GDK と XDK の相違点](/ja-jp/build/console-features/networking/xdk-migration/xdk-migration-game-mesh-networking.md)
- [XBOX One Software Development Kit 移行ガイド](/ja-jp/build/console-features/networking/xdk-migration/xdk-migration-toc.md)
- [Web リクエスト](/ja-jp/build/console-features/networking/web-requests/web-requests-toc.md)
- [XDK ネットワークから XBOX GDK への移行](/ja-jp/build/console-features/networking/xdk-migration/index.md)
- [PlayFab におけるスロットリング](/ja-jp/services/playfab/live-service-management/service-gateway/throttling/what-is-throttling.md)
