共用方式為


哪一種網路功能技術?

適用於 UWP 開發人員的網路功能技術概觀,並建議您如何選擇最適合的應用程式的技術。

通訊端

當您與另一部裝置通訊並想要使用自己的通訊協定時,請使用通訊端

通用 Windows 平台 (UWP) 開發人員有兩種通訊端實作可使用:Windows.Networking.SocketsWinsock。 如果您要撰寫新的程式碼,則 Windows.Networking.Sockets 的優點是成為新式 API,專為 UWP 開發人員使用而設計。 如果您使用跨平台網路程式庫或其他現有的 Winsock 程式碼,或如果偏好 Winsock API,則請使用。

使用通訊端的時機

  • 這兩個通訊端實作都可讓您使用自己選擇的通訊協定 (利用 TCP 或 UDP) 與其他裝置通訊。

  • 根據體驗和您可能使用的任何現有程式碼,選擇最符合需求的通訊端 API。

不使用通訊端的時機

  • 請勿使用通訊端實作您自己的 HTTP(S) 堆疊。 請改用 HttpClient
  • 如果 WebSockets (StreamWebSocketMessageWebSocket 類別) 符合您的通訊需求 (TCP 往返網頁伺服器),請考慮使用,而不是花自己的時間和開發資源來實作與通訊端類似的功能。

WebSocket

WebSocket 通訊協定會定義一種機制,在用戶端與伺服器之間,透過 Web 進行快速、安全的雙向通訊。 資料會立即透過全雙工單一通訊端連線來傳輸,因此能即時從這兩個端點傳送與接收訊息。 WebSocket 非常適合用於即時遊戲,其中即時社交網路通知和最新的資訊顯示 (例如遊戲統計資料) 必須安全且使用快速資料傳輸。 UWP 開發人員可以使用 StreamWebSocketMessageWebSocket 類別來連線到支援 Websocket 通訊協定的伺服器。

使用 Websocket 的時機

  • 當您想要在裝置與伺服器之間持續傳送及接收資料時。

不使用 Websocket 的時機

  • 如果您不常傳送或接收資料,可能會發現從裝置對伺服器提出個別 HTTP 要求會比較簡單,而不是建立及維護 WebSocket 連線。
  • WebSocket 可能不適合非常大量的情況。 請考慮將資料流程模型化,並模擬透過 WebSockets 的流量,然後再認可將其用在您的設計中。

HttpClient

當您使用 HTTP(S) 與 Web 服務或 Web 伺服器通訊時,請使用 HttpClient (以及 Windows.Web.Http 命名空間 API 的其餘部分)。

使用 HttpClient 的時機

  • 使用 HTTP(S) 與 Web 服務通訊的時機。
  • 上傳或下載少量較小型的檔案時。
  • 如果 WebSockets (StreamWebSocketMessageWebSocket 類別) 符合您的通訊需求 (TCP 往返網頁伺服器),且有問題的 Web 伺服器支援 WebSocket,請考慮使用,而不是花自己的時間和開發資源來實作與 HttpClient 類似的功能。
  • 透過網路串流內容的時機。

不使用 HttpClient 的時機

  • 如果您要傳輸大型檔案或大量檔案,請考慮改用背景傳輸。
  • 如果您需要能夠根據連線類型限制上傳/下載限制,或需要儲存進度並在中斷後繼續上傳/下載,則您必須使用背景傳輸。
  • 如果您在兩個裝置之間進行通訊,且兩個裝置都未設計為做為 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 通訊協定,向網路上的其他裝置公告網路服務。

透過藍牙進行通訊

除此之外,Windows.Devices.Bluetooth API 可讓您使用藍牙來連線到其他裝置並傳輸資料。 如需詳細資訊,請參閱使用 RFCOMM 傳送或接收檔案

推播通知 (WNS)

Windows.Networking.PushNotifications API 可讓您使用 Windows 通知服務 (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 和藍牙。

Wi-Fi Direct

Windows.Devices.WiFiDirect API 可讓您使用 Wi-Fi Direct 與其他本機裝置連線及通訊,以建立臨機操作的本機無線網路。

Wi-Fi Direct 服務

Windows.Devices.WiFiDirect.Services API 可讓您提供 Wi-Fi Direct 服務並與其連線。 Wi-Fi Direct 服務是 Wi-Fi Direct 臨機操作網路 (服務廣告客戶) 上的一部裝置透過 Wi-Fi Direct 連線向另一部裝置 (服務時間標線) 提供功能的方式。

電信業者

Windows 10 為廣泛的開發人員對象公開了一些先前僅公開給裝置製造商和電信業者的 API。 請注意,雖然這些 API 現在為公開,但其也會受到必須由 Microsoft 核准的特定應用程式功能進行閘門守護,才能發佈應用程式。 實際使用這些 API 仍主要僅限於裝置製造商和電信業者。

網路作業

Windows.Networking.NetworkOperators API 主要處理手機的設定和佈建。 因此,使用控制其功能的權限僅限於裝置製造商和電信提供者。

簡訊

Windows.Devices.Sms 命名空間會將 SMS 和相關訊息視為低階實體。 其可供電信業者用於應用程式導向的 SMS 用途,並由不會核准供大部分應用程式開發人員使用的功能所控制。 如果您要撰寫應用程式來處理訊息,則應該改用 Windows.ApplicationModel.Chat API,因為其設計不只是可處理簡訊訊息,還可處理來自其他來源的訊息,例如即時聊天應用程式,可獲得更豐富的聊天/傳訊體驗。