Ngày nay, bạn sẽ thấy nhiều ứng dụng, bằng cách nào đó đã tích hợp với các dịch vụ web hoặc các thiết bị khác trên mạng. Tìm nạp nội dung thời tiết trực tuyến, tin tức mới nhất, trò chuyện hoặc trò chơi ngang hàng là một số ví dụ sử dụng dịch vụ mạng. Các ứng dụng này được xây dựng bằng nhiều loại API mạng. Trong Windows 10, các API mạng được cải thiện về tốc độ và hiệu suất bộ nhớ cũng như khả năng và tính linh hoạt mà chúng cung cấp cho các nhà phát triển.
Năng lực
Để kết nối mạng, bạn phải thêm các yếu tố khả năng thích hợp vào tệp kê khai ứng dụng của mình. Nếu không có khả năng mạng nào được chỉ định trong tệp kê khai của ứng dụng, thì ứng dụng của bạn sẽ không có khả năng kết nối mạng và mọi nỗ lực kết nối với mạng sẽ không thành công.
Sau đây là các khả năng kết nối mạng được sử dụng nhiều nhất.
Không. | Khả năng & Mô tả |
1 | khách hàng internet Cung cấp khả năng truy cập Internet và mạng ở những nơi công cộng, như sân bay và quán cà phê. Hầu hết các ứng dụng yêu cầu truy cập Internet sẽ sử dụng khả năng này. |
2 | internetClientServer Cung cấp cho ứng dụng quyền truy cập mạng vào và ra từ Internet và các mạng ở những nơi công cộng như sân bay và quán cà phê. |
3 | privateNetworkClientServer Cung cấp cho ứng dụng quyền truy cập mạng trong và ngoài ứng dụng tại những địa điểm đáng tin cậy của người dùng, chẳng hạn như nhà riêng và cơ quan. |
Để xác định một hoặc nhiều khả năng trong tệp kê khai ứng dụng của bạn, hãy xem hình ảnh được cung cấp bên dưới.
Nền tảng Windows chung (UWP) chứa một tập hợp lớn các API mạng bằng cách nhắm mục tiêu những điều sau:
- Truy vấn trạng thái kết nối của thiết bị và kết nối với các thiết bị ngang hàng.
- Giao tiếp với các dịch vụ web REST và
- Tải xuống các tệp phương tiện lớn trong nền
Công nghệ mạng
Trong Universal Windows Platform (UWP), các công nghệ mạng sau đây có sẵn cho các nhà phát triển, có thể được sử dụng trong nhiều trường hợp khác nhau.
ổ cắm
Sockets được sử dụng khi bạn muốn giao tiếp với một thiết bị khác bằng giao thức của riêng bạn.
- Bạn có thể sử dụng cả Windows.Networking.Sockets và Winsock để giao tiếp với các thiết bị khác với tư cách là nhà phát triển ứng dụng Universal Windows Platform (UWP).
- Windows.Networking.Sockets có lợi thế là một API hiện đại, được thiết kế để các nhà phát triển UWP sử dụng.
- Nếu bạn đang sử dụng thư viện mạng đa nền tảng hoặc mã Winsock hiện có khác, thì hãy sử dụng các API Winsock .
Đoạn mã sau đây cho thấy cách tạo một bộ nghe ổ cắm.
try {
//Create a StreamSocketListener to start listening for TCP connections.
Windows.Networking.Sockets.StreamSocketListener socketListener = new
Windows.Networking.Sockets.StreamSocketListener();
//Hook up an event handler to call when connections are received.
socketListener.ConnectionReceived += SocketListener_ConnectionReceived;
//Start listening for incoming TCP connections on the specified port.
You can specify any port that's not currently in use.
await socketListener.BindServiceNameAsync("1337");
} catch (Exception e) {
//Handle exception.
}
Đoạn mã sau đây cho thấy việc triển khai trình xử lý sự kiện SocketListener_ConnectionRenition .
private async void SocketListener_ConnectionReceived(
Windows.Networking.Sockets.StreamSocketListen er sender,
Windows.Networking.Sockets.StreamSocketListenerConnectionReceivedEventArgs args){
//Read line from the remote client.
Stream inStream = args.Socket.InputStream.AsStreamForRead();
StreamReader reader = new StreamReader(inStream);
string request = await reader.ReadLineAsync();
//Send the line back to the remote client.
Stream outStream = args.Socket.OutputStream.AsStreamForWrite();
StreamWriter writer = new StreamWriter(outStream);
await writer.WriteLineAsync(request);
await writer.FlushAsync();
}
WebSocket
Các WebSockets giao thức cung cấp một nhanh và liên lạc hai chiều an toàn giữa một khách hàng và một máy chủ trên web. Các nhà phát triển Universal Windows Platform (UWP) có thể sử dụng các lớp MessageWebSocket và StreamWebSocket để kết nối với các máy chủ hỗ trợ giao thức Websocket.
Các tính năng quan trọng là –
- Theo Giao thức WebSocket, dữ liệu được truyền ngay lập tức qua kết nối ổ cắm đơn song công đầy đủ.
- Nó cho phép gửi và nhận tin nhắn từ cả hai điểm cuối trong thời gian thực.
- WebSockets lý tưởng để sử dụng trong trò chơi thời gian thực, nơi các thông báo mạng xã hội tức thì và hiển thị thông tin cập nhật (thống kê trò chơi) cần được bảo mật và sử dụng truyền dữ liệu nhanh.
Đoạn mã sau đây cho biết cách gửi và nhận tin nhắn trên một kết nối an toàn.
MessageWebSocket webSock = new MessageWebSocket();
//In this case we will be sending/receiving a string so we need to
set the MessageType to Utf8.
webSock.Control.MessageType = SocketMessageType.Utf8;
//Add the MessageReceived event handler.
webSock.MessageReceived += WebSock_MessageReceived;
//Add the Closed event handler.
webSock.Closed += WebSock_Closed;
Uri serverUri = new Uri("wss://echo.websocket.org");
try {
//Connect to the server.
await webSock.ConnectAsync(serverUri);
//Send a message to the server.
await WebSock_SendMessage(webSock, "Hello, world!");
} catch (Exception ex) {
//Add code here to handle any exceptions
}
Đoạn mã sau đây cho thấy việc triển khai sự kiện, sẽ nhận được một chuỗi từ một WebSocket được kết nối .
//The MessageReceived event handler.
private void WebSock_MessageReceived(MessageWebSocket sender,
MessageWebSocketMessageReceivedEventArgs args){
DataReader messageReader = args.GetDataReader();
messageReader.UnicodeEncoding = UnicodeEncoding.Utf8;
string messageString = messageReader.ReadString(
messageReader.UnconsumedBufferLength);
//Add code here to do something with the string that is received.
}
Http Client
Các API không gian tên HttpClient và Windows.Web.Http , cung cấp khả năng gửi và nhận thông tin cho nhà phát triển bằng giao thức HTTP 2.0 và HTTP 1.1.
Nó có thể được sử dụng để –
- giao tiếp với dịch vụ web hoặc máy chủ web.
- Tải lên hoặc tải xuống một số tệp nhỏ.
- Truyền nội dung qua mạng.
Đoạn mã sau đây cho thấy cách gửi yêu cầu GET bằng Windows.Web.Http.HttpClient và Windows.Web.Http.HttpResponseMessage
//Create an HTTP client object
Windows.Web.Http.HttpClient httpClient = new Windows.Web.Http.HttpClient();
//Add a user-agent header to the GET request.
var headers = httpClient.DefaultRequestHeaders;
//The safe way to add a header value is to use the TryParseAdd method
and verify the return value is true,
//especially if the header value is coming from user input.
string header = "ie";
if (!headers.UserAgent.TryParseAdd(header)) {
throw new Exception("Invalid header value: " + header);
}
header = "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0)";
if (!headers.UserAgent.TryParseAdd(header)) {
throw new Exception("Invalid header value: " + header);
}
Uri requestUri = new Uri("http://www.contoso.com");
//Send the GET request asynchronously and retrieve the response as a string.
Windows.Web.Http.HttpResponseMessage httpResponse = new
Windows.Web.Http.HttpResponseMessage();
string httpResponseBody = "";
try {
//Send the GET request
httpResponse = await httpClient.GetAsync(requestUri);
httpResponse.EnsureSuccessStatusCode();
httpResponseBody = await httpResponse.Content.ReadAsStringAsync();
} catch (Exception ex) {
httpResponseBody = "Error: " + ex.HResult.ToString("X") + " Message: " + ex.Message;
}