Какую сетевую технологию выбрать?
Обзор доступных сетевых технологий для разработчиков приложений UWP с рекомендациями о том, как выбрать технологии, наиболее подходящие для определенного приложения.
Сокеты
Используйте сокеты при взаимодействии с другим устройством и хотите использовать собственный протокол.
Две реализации сокетов доступны для разработчиков универсальная платформа Windows (UWP): Windows.Networking.Sockets и Winsock. Если вы пишете новый код, windows.Networking.Sockets имеет преимущество быть современным API, предназначенным для использования разработчиками UWP. Если вы используете кроссплатформенные сетевые библиотеки или другой существующий код Winsock или предпочитаете API Winsock, используйте это.
Когда следует использовать сокеты
Обе реализации сокетов позволяют взаимодействовать с другими устройствами с помощью протоколов собственного выбора с помощью TCP или UDP.
Выберите API сокетов, который лучше всего соответствует вашим потребностям на основе опыта и любого существующего кода, который вы можете использовать.
Если не использовать сокеты
- Не реализуйте собственный стек HTTP(S) с помощью сокетов. Вместо этого используйте HttpClient .
- Если WebSockets (классы StreamWebSocket и MessageWebSocket) соответствуют вашим потребностям связи (TCP на веб-сервер или с веб-сервера), рекомендуется использовать их, а не тратить свое время и ресурсы разработки, реализующие аналогичные функции сокетами.
Websockets
Протокол WebSockets определяет механизм быстрого, безопасного двустороннего взаимодействия между клиентом и сервером через Интернет. Данные передаются немедленно через подключение с полным дуплексным одним сокетом, что позволяет отправлять и получать сообщения из обеих конечных точек в режиме реального времени. WebSockets идеально подходит для использования в играх в режиме реального времени, где мгновенные уведомления социальных сетей и актуальные отображения информации (например, статистика игры) должны быть безопасными и использовать быструю передачу данных. Разработчики UWP могут использовать классы StreamWebSocket и MessageWebSocket для подключения к серверам, поддерживающим протокол Websocket.
Когда следует использовать Websockets
- Если вы хотите отправлять и получать данные на постоянной основе между устройством и сервером.
Если не использовать Websockets
- Если вы отправляете или получаете данные редко, вы можете сделать отдельные HTTP-запросы с устройства на сервер, а не устанавливать и поддерживать подключение WebSocket.
- WebSockets может не подходить для очень больших ситуаций. Рекомендуется моделировать потоки данных и имитировать трафик через WebSockets перед фиксацией их использования в проектировании.
HttpClient
Используйте HttpClient (и остальную часть API пространства имен Windows.Web.Http) при использовании HTTP(S) для взаимодействия с веб-службой или веб-сервером.
Когда следует использовать HttpClient
- При использовании HTTP(S) для взаимодействия с веб-службами.
- При отправке или скачивании небольшого количества небольших файлов.
- Если WebSockets (классы StreamWebSocket и MessageWebSocket) соответствуют вашим потребностям связи (TCP на веб-сервер или с веб-сервера), а веб-сервер, на который имеется вопрос, поддерживает WebSockets, рассмотрите возможность использовать их, а не тратить свое время и ресурсы разработки, реализующие аналогичные функции с HttpClient.
- При потоковой передаче содержимого по сети.
Если не использовать HttpClient
- Если вы передаете большие файлы или большое количество файлов, рассмотрите возможность использования фоновой передачи.
- Если вы хотите ограничить ограничения на отправку и скачивание на основе типа подключения или сохранить ход выполнения и возобновить загрузку после прерывания, необходимо использовать фоновые передачи.
- Если вы взаимодействуете между двумя устройствами и ни один из них не предназначен для работы в качестве сервера HTTP(S), следует использовать сокеты. Не пытайтесь реализовать собственный HTTP-сервер и использовать HttpClient для взаимодействия с ним.
Фоновые передачи
Используйте API фоновой передачи, если требуется надежно передать файлы по сети. API фоновой передачи предоставляет расширенные функции отправки и скачивания, которые выполняются в фоновом режиме во время приостановки приложения и сохраняются после завершения работы приложения. API отслеживает состояние сети и автоматически приостанавливает передачу и возобновляет передачу при потере подключения, а также передачи данных с учетом чува и заряда батареи, что означает, что действие загрузки корректируется на основе текущего состояния подключения и заряда устройства. Эти возможности важны, когда ваше приложение работает на мобильных или зарядных устройствах. API идеально подходит для отправки и скачивания больших файлов с помощью HTTP(S). FTP также поддерживается, но только для скачивания.
Новая функция фоновой передачи данных в Windows 10 представляет собой возможность активировать постобработку после завершения передачи файлов, чтобы можно было обновить локальные каталоги, активировать другие приложения или уведомить пользователя о завершении скачивания.
Когда следует использовать фоновые передачи
- Используйте фоновые передачи для надежной передачи больших файлов или большого количества файлов.
- Используйте фоновые передачи с группами завершения фоновой передачи, если требуется после обработки передачи файлов с фоновой задачей.
- Используйте фоновые передачи, если вы хотите возобновить передачу после прерывания сети.
- Используйте фоновые передачи, если вы хотите изменить поведение передачи на основе сетевых условий, таких как подключение к плану данных с лимитным планом.
Если не использовать фоновые передачи
- Если вы передаете небольшое количество небольших файлов, и при завершении передачи вам не нужно делать никаких операций после передачи, рекомендуется использовать методы HTTPClient PUT или POST.
- Если вы хотите передавать данные и использовать их локально при поступлении, используйте HttpClient.
Дополнительные технологии, связанные с сетью
Качество подключения
API в пространстве имен Windows.Networking.Connectivity позволяют получать доступ к данным о сетевом подключении, расходах и использовании. Дополнительные сведения об использовании этого API см. в статье Доступ к состоянию сетевого подключения и управление затратами на него (XAML).
Обнаружение служб DNS
API Windows.Networking.ServiceDiscovery.Dnssd позволяет объявлять сетевую службу другим устройствам в сети с помощью протокола DNS-SD, описанного в IETF RFC 2782.
Обмен данными по Bluetooth
Помимо прочего, API Windows.Devices.Bluetooth позволяет использовать Bluetooth для подключения к другим устройствам и передачи данных. Дополнительные сведения см. в статье "Отправка или получение файлов с помощью RFCOMM".
Push-уведомления (WNS)
API Windows.Networking.PushNotifications позволяет использовать службу уведомлений Windows (WNS) для получения push-уведомлений по сети. Дополнительные сведения об использовании этого API см. в обзоре служб push-уведомлений Windows (WNS)
Связь рядом с полем
API Windows.Networking.Proximity позволяет использовать почти полевой обмен данными для приложений, использующих близкое взаимодействие или касание с устройствами, чтобы обеспечить простую передачу данных. Дополнительные сведения об использовании этого API см. в разделе Поддержка близкого взаимодействия и касания.
Веб-каналы RSS и Atom
API Windows.Web.Syndication позволяет управлять веб-каналами синдикации с помощью форматов RSS и Atom. Дополнительные сведения об использовании этого API см. в каналах RSS/Atom.
Перечисление Wi-Fi и управление подключением
API Windows.Devices.WiFi позволяет перечислять адаптеры Wi-Fi, проверять наличие доступных сетей Wi-Fi и подключать адаптер к сети.
Радиоуправление
API Windows.Devices.Radios позволяет находить и управлять радио на локальном устройстве, включая Wi-Fi и Bluetooth.
Wi-Fi Direct
API Windows.Devices.WiFiDirect позволяет подключаться и взаимодействовать с другими локальными устройствами с помощью Wi-Fi Direct для создания нерегламентированных локальных беспроводных сетей.
Службы Wi-Fi Direct
API Windows.Devices.WiFiDirect.Services позволяет предоставлять прямые службы Wi-Fi и подключаться к ним. Службы Wi-Fi Direct — это способ, которым одно устройство в прямой сети Wi-Fi (рекламодатель услуг) предоставляет возможности другому устройству (просатель услуг) через подключение Wi-Fi Direct.
Мобильные операторы
Windows 10 предоставляет широкой аудитории разработчиков некоторые API, которые ранее были доступны только производителям устройств и мобильным операторам. Обратите внимание, что в то время как эти API предоставляются сейчас, они также вставляются определенными возможностями приложений, которые должны быть утверждены корпорацией Майкрософт, прежде чем приложение может быть опубликовано. Фактическое использование этих API по-прежнему ограничено в первую очередь производителями устройств и мобильными операторами.
Сетевые операции
API Windows.Networking.NetworkOperator занимается в основном настройкой и подготовкой телефонов. Таким образом, разрешение на использование возможностей, которые управляют им, ограничены производителями устройств и поставщиками телекоммуникаций.
SMS
Пространство имен Windows.Devices.Sms относится к SMS и связанным сообщениям в качестве низкоуровневых сущностей. Он предоставляется для использования мобильными операторами для использования sms, направленного на приложение, и управляется возможностью, которая не будет утверждена для использования большинством разработчиков приложений. Если вы пишете приложение для работы с сообщениями, вместо этого следует использовать API Windows.ApplicationModel.Chat , так как он предназначен для обработки не только SMS-сообщений, но и сообщений из других источников, таких как приложения чата в режиме реального времени, что обеспечивает гораздо более широкий интерфейс чата и обмена сообщениями.