次の方法で共有


どのネットワーク技術ですか?

UWP 開発者が利用できるネットワーク テクノロジの概要と、アプリに適したテクノロジの選択方法に関する提案。

ソケット

別 の デバイスと通信していて、独自のプロトコルを使用する場合は、ソケットを使用します。

ユニバーサル Windows プラットフォーム (UWP) 開発者は、Windows の 2 つのソケット実装を使用できます。Networking.Sockets、および Winsock。 新しいコードを記述する場合は、Windows。Networking.Sockets には、UWP 開発者が使用するために設計された最新の API であるという利点があります。 クロスプラットフォーム ネットワーク ライブラリまたはその他の既存の Winsock コードを使用している場合、または Winsock API を使用する場合は、それを使用します。

ソケットを使用するタイミング

  • どちらのソケット実装でも、TCP または UDP を使用して、任意のプロトコルを使用して他のデバイスと通信できます。

  • エクスペリエンスと、使用している可能性がある既存のコードに基づいて、ニーズに最適なソケット API を選択します。

ソケットを使用しない場合

  • ソケットを使用して独自の HTTP(S) スタックを実装しないでください。 代わりに、HttpClient を使用します。
  • WebSocketが (StreamWebSocketおよびMessageWebSocketクラス)、通信ニーズ (Webサーバーとの間でTCPを利用する) を満たす場合、独自にソケットを使って同様の機能を開発するのではなく、それを活用することを検討してください。

Websocket

WebSocket プロトコルは、Web 経由のクライアントとサーバー間の高速で安全な双方向通信のメカニズムを定義します。 データは全二重単一ソケット接続を介して直ちに転送され、両方のエンドポイントからリアルタイムでメッセージを送受信できます。 WebSocket は、リアルタイム ゲームでの使用に最適です。リアルタイム ゲームでは、インスタント ソーシャル ネットワーク通知や up-to-date 情報の表示 (ゲーム統計など) をセキュリティで保護し、高速なデータ転送を使用する必要があります。 UWP 開発者は、StreamWebSocket および MessageWebSocket クラスを使用して、Websocket プロトコルをサポートするサーバーに接続できます。

Websocket を使用するタイミング

  • デバイスとサーバーの間で継続的にデータを送受信する場合。

Websocket を使用しない場合

  • データの送受信頻度が低い場合は、WebSocket 接続を確立して維持するのではなく、デバイスからサーバーに個別の HTTP 要求を行う方が簡単な場合があります。
  • WebSocket は、大量の状況には適していない場合があります。 設計で使用することをコミットする前に、データ フローをモデル化し、WebSocket 経由でトラフィックをシミュレートすることを検討してください。

Httpクライアント

HttpClient (および残りの Windows.Web.Http 名前空間 API) を使用して、HTTP(S) で Web サービスまたは Web サーバーと通信します。

HttpClient を使用する場合

  • HTTP(S) を使用して Web サービスと通信する場合。
  • 少数の小さなファイルをアップロードまたはダウンロードする場合。
  • If WebSocket (the StreamWebSocket and MessageWebSocket クラス) は、通信ニーズ (Web サーバーとの間の TCP) を満たし、問題の Web サーバーは WebSocket をサポートしています。HttpClient で同様の機能を実装する独自の時間や開発リソースを費やすのではなく、それらを使用することを検討してください。
  • ネットワーク経由でコンテンツをストリーミングする場合。

HttpClient を使用しない場合

  • 大きなファイルまたは多数のファイルを転送する場合は、代わりにバックグラウンド転送を使用することを検討してください。
  • 接続の種類に基づいてアップロード/ダウンロードの制限を制限できるようにする場合、または中断後に進行状況を保存してアップロード/ダウンロードを再開する場合は、バックグラウンド転送を使用する必要があります。
  • 2 つのデバイス間で通信していて、どちらも HTTP (S) サーバーとして機能するように設計されていない場合は、ソケットを使用する必要があります。 独自の HTTP サーバーを実装し、 HttpClient を使用して通信しないでください。

バックグラウンド転送

ネットワーク経由でファイルを確実に転送する場合は、 バックグラウンド転送 API を使用します。 バックグラウンド転送 API は、アプリの中断中にバックグラウンドで実行され、アプリの終了を超えて保持される高度なアップロードおよびダウンロード機能を提供します。 この API は、ネットワークの状態を監視し、接続が失われた場合に転送を自動的に中断および再開します。また、転送はデータセンス対応およびバッテリ検出対応でもあります。つまり、ダウンロード アクティビティは現在の接続とデバイスのバッテリ状態に基づいて調整されます。 これらの機能は、アプリがモバイルまたはバッテリ駆動デバイスで実行されている場合に不可欠です。 この API は、HTTP(S) を使用して大きなファイルをアップロードおよびダウンロードするのに最適です。 FTP もサポートされていますが、ダウンロードに対してのみサポートされます。

Windows 10の新しいバックグラウンド転送機能は、ファイル転送が完了したときに後処理をトリガーする機能であり、ローカル カタログを更新したり、他のアプリをアクティブ化したり、ダウンロードが完了したときにユーザーに通知したりできます。

バックグラウンド転送を使用する場合

  • バックグラウンド転送を使用して、大きなファイルや多数のファイルを確実に転送します。
  • バックグラウンド タスクでファイル転送を後処理したい場合は、バックグラウンド転送完了グループを使ってバックグラウンド転送を利用します。
  • ネットワークの中断後に進行中の転送を再開できるようにする場合は、バックグラウンド転送を使用します。
  • 従量制課金データ プラン上にあるようなネットワーク条件に基づいて転送動作を変更できるようにする場合は、バックグラウンド転送を使用します。

バックグラウンド転送を使用しない場合

  • 少数の小さなファイルを転送していて、転送が完了したときに後処理を行う必要がない場合は、HttpClient PUT メソッドまたは POST メソッドを使用することを検討してください。
  • データをストリーム配信し、受信したデータをローカルで使用する場合は、HttpClient を使用します。

接続品質

Windows.Networking.Connectivity 名前空間の API を使用すると、ネットワーク接続、コスト、利用状況の情報にアクセスできます。 この API の使用方法の詳細については、「 ネットワーク接続状態へのアクセスとネットワーク コストの管理」を参照してください。

DNS サービスの検出

Windows。Networking.ServiceDiscovery.Dnssd API を使用すると、IETF RFC 2782 で説明されている DNS-SD プロトコルを使用して、ネットワーク上の他のデバイスにネットワーク サービスをアドバタイズできます。

Bluetooth経由の通信

特に、Windows。Devices.Bluetooth API を使用すると、Bluetoothを使用して他のデバイスに接続し、データを転送できます。 詳細については、「 RFCOMM を使用したファイルの送受信」を参照してください。

プッシュ通知 (WNS)

Windows。Networking.PushNotifications API を使用すると、Windows Notification Service (WNS) を使用して、ネットワーク経由でプッシュ通知を受信できます。 この API の使用方法の詳細については、「Windows プッシュ通知サービス (WNS) の概要」を参照してください>

近距離通信

Windows。Networking.Proximity API を使用すると、近接通信を使用するアプリやデバイスをタップして簡単にデータ転送を可能にする、近距離通信を使用できます。 この API の使用方法の詳細については、「 近接通信とタップ」を参照してください。

RSS/Atom フィード

Windows。Web.Syndication API を使用すると、RSS 形式と Atom 形式を使用して配信フィードを管理できます。 この API の使用方法の詳細については、 RSS/Atom フィードを参照してください。

Wi-Fi の列挙と接続制御

Windows。Devices.WiFi API を使用すると、Wi-Fi アダプターの列挙、使用可能な Wi-Fi ネットワークのスキャン、およびアダプターをネットワークに接続できます。

無線制御

Windows。Devices.Radios API を使用すると、Wi-Fi やBluetoothなど、ローカル デバイス上の無線を検索して制御できます。

Wi-Fi Direct

Windows。Devices.WiFiDirect API を使用すると、Wi-Fi Direct を使用して他のローカル デバイスに接続して通信し、アドホック ローカル ワイヤレス ネットワークを作成できます。

Wi-Fi ダイレクト サービス

Windows。Devices.WiFiDirect.Services API を使用すると、Wi-Fi Direct サービスを提供し、それらに接続できます。 Wi-Fi ダイレクト サービスは、Wi-Fi ダイレクト アドホック ネットワーク (サービス広告主) 上の 1 つのデバイスが、Wi-Fi 直接接続を介して別のデバイス (サービス シーカー) に機能を提供する方法です。

携帯電話会社

Windows 10は、以前はデバイスの製造元や携帯電話会社にのみ公開されていた一部の API を幅広い開発者対象ユーザーに公開します。 これらの API は現在公開されていますが、アプリを公開する前に Microsoft が承認する必要がある特定のアプリ機能によっても制限されることに注意してください。 これらの API の実際の使用は、主にデバイスの製造元と携帯電話会社に限定されます。

ネットワーク操作

Windows。Networking.NetworkOperators API は、主に電話の構成とプロビジョニングを扱います。 そのため、それを制御する機能を使用するアクセス許可は、デバイスの製造元と通信プロバイダーに限定されます。

SMS

Windows。Devices.Sms 名前空間は、SMS および関連するメッセージを低レベルエンティティとして扱います。 これは、携帯電話会社がアプリ向けの SMS を使用するために提供され、ほとんどのアプリ開発者が使用を承認しない機能によって制御されます。 メッセージを処理するアプリを作成する場合は、Windowsを使用する必要があります。代わりに ApplicationModel.Chat API は、SMS メッセージだけでなく、リアルタイム チャット アプリなどの他のソースからのメッセージを処理するように設計されているため、より充実したチャット/メッセージング エクスペリエンスを実現します。