네트워킹 기술 선택
UWP 개발자가 사용할 수 있는 네트워킹 기술에 대한 개요 및 앱에 적합한 기술을 선택하는 방법에 대한 제안 사항입니다.
소켓
다른 디바이스와 통신하고 고유의 프로토콜을 사용하려면 소켓을 사용합니다.
UWP(유니버설 Windows 플랫폼) 개발자는 Windows.Networking.Sockets 및 Winsock이라는 두 가지 소켓 구현을 사용할 수 있습니다. 새 코드를 작성하는 경우 Windows.Networking.Sockets는 UWP 개발자가 사용하도록 설계된 최신 API라는 장점이 있습니다. 플랫폼 간 네트워킹 라이브러리나 기타 기존 Winsock 코드를 사용 중이거나 Winsock API를 선호하는 경우 이를 사용합니다.
소켓을 사용하는 경우
두 소켓 구현을 모두 사용하면 TCP 또는 UDP를 사용하여 원하는 프로토콜을 사용하여 다른 디바이스와 통신할 수 있습니다.
환경과 사용 중인 기존 코드를 기반으로 요구 사항에 가장 적합한 소켓 API를 선택합니다.
소켓을 사용하지 말아야 할 경우
- 소켓을 사용하여 자체 HTTP(S) 스택을 구현하지 마세요. 대신 HttpClient를 사용합니다.
- WebSockets(StreamWebSocket 및 MessageWebSocket 클래스)이 통신 요구 사항(웹 서버와의 TCP)을 충족하는 경우 소켓을 사용하여 유사한 기능을 구현하는 데 시간과 개발 자원을 소비하기보다는 WebSocket을 사용하는 것이 좋습니다.
Websocket
WebSocket 프로토콜은 웹을 통한 클라이언트와 서버 간의 빠르고 안전한 양방향 통신 메커니즘을 정의합니다. 데이터는 전이중 단일 소켓 연결을 통해 즉시 전송되므로 두 엔드포인트에서 실시간으로 메시지를 보내고 받을 수 있습니다. WebSocket은 즉각적인 소셜 네트워크 알림과 최신 정보 표시(예: 게임 통계)가 안전하고 빠른 데이터 전송을 사용해야 하는 실시간 게임에 사용하기에 이상적입니다. UWP 개발자는 StreamWebSocket 및 MessageWebSocket 클래스를 사용하여 Websocket 프로토콜을 지원하는 서버에 연결할 수 있습니다.
WebSocket을 사용해야 하는 경우
- 디바이스와 서버 간에 지속적으로 데이터를 보내고 받을 때.
WebSocket을 사용하지 말아야 할 경우
- 데이터를 자주 보내거나 받는 경우 WebSocket 연결을 설정하고 유지하는 것보다 디바이스에서 서버로 개별 HTTP 요청을 보내는 것이 더 간단할 수 있습니다.
- WebSocket은 대용량 상황에는 적합하지 않을 수 있습니다. 디자인에 WebSocket을 사용하기 전에 데이터 흐름을 모델링하고 WebSocket을 통해 트래픽을 시뮬레이션하는 것이 좋습니다.
HttpClient
HTTP(S)를 사용하여 웹 서비스 또는 웹 서버와 통신하는 경우 HttpClient(및 나머지 Windows.Web.Http 네임스페이스 API)를 사용합니다.
HttpClient를 사용하는 경우
- HTTP(S)를 사용하여 웹 서비스와 통신하는 경우
- 소수의 작은 파일을 업로드하거나 다운로드하는 경우
- WebSocket(StreamWebSocket 및 MessageWebSocket 클래스)이 통신 요구 사항(웹 서버와의 TCP)을 충족하고 웹 문제의 서버가 WebSocket을 지원하는 경우 HttpClient로 유사한 기능을 구현하는 데 시간과 개발 리소스를 소비하기보다는 WebSocket을 사용하는 것이 좋습니다.
- 네트워크를 통해 콘텐츠를 스트리밍하는 경우
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를 사용하면 WNS(Windows 알림 서비스)를 사용하여 네트워크를 통해 푸시 알림을 받을 수 있습니다. 이 API 사용에 대한 자세한 내용은 WNS(Windows 푸시 알림 서비스) 개요를 참조하세요.
근거리 통신
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는 주로 전화 구성 및 프로비전을 다룹니다. 따라서 이를 제어하는 기능을 사용할 수 있는 권한은 디바이스 제조업체 및 통신 공급자로 제한됩니다.
SMS
Windows.Devices.Sms 네임스페이스는 SMS 및 관련 메시지를 하위 수준 엔터티로 처리합니다. 이는 앱 지향 SMS 사용을 위해 모바일 운영자가 사용하도록 제공되며 대부분의 앱 개발자가 사용하도록 승인되지 않은 기능에 의해 제어됩니다. 메시지를 처리하는 앱을 작성하는 경우 SMS 메시지뿐만 아니라 실시간 채팅 앱과 같은 다른 원본의 메시지도 처리하도록 설계되어 훨씬 더 풍부한 채팅/메시징 환경을 가능하게 하므로 Windows.ApplicationModel.Chat API를 대신 사용해야 합니다.