Desenvolvimento do Windows 10 - Rede

Hoje em dia, você verá muitos aplicativos, que de alguma forma foram integrados a serviços da Web ou outros dispositivos em uma rede. Buscar conteúdo on-line sobre o clima, últimas notícias, bate-papo ou jogos ponto a ponto são alguns exemplos que usam serviços de rede. Esses aplicativos são desenvolvidos usando uma ampla variedade de APIs de rede. No Windows 10, as APIs de rede são aprimoradas em termos de velocidade e desempenho de memória, bem como os recursos e flexibilidade que fornecem aos desenvolvedores.

Capacidades

Para se conectar à rede, você deve adicionar elementos de capacidade apropriados ao manifesto do aplicativo. Se nenhum recurso de rede for especificado no manifesto do seu aplicativo, seu aplicativo não terá capacidade de rede e qualquer tentativa de conexão com a rede falhará.

A seguir estão os recursos de rede mais usados.

S.No. Capacidade e descrição
1

internetClient

Fornece acesso de saída à Internet e redes em locais públicos, como aeroportos e cafés. A maioria dos aplicativos que requerem acesso à Internet deve usar esse recurso.

2

internetClientServer

Fornece ao aplicativo acesso à rede de entrada e saída da Internet e redes em locais públicos, como aeroportos e cafeterias.

3

privateNetworkClientServer

Fornece ao aplicativo acesso à rede de entrada e saída nos locais confiáveis ​​dos usuários, como casa e trabalho.

Para definir um ou mais recursos em seu arquivo de manifesto do aplicativo, observe a imagem fornecida abaixo.

A Plataforma Universal do Windows (UWP) contém um grande conjunto de APIs de rede visando o seguinte -

  • Consultando o status de conectividade do dispositivo e conectando-se aos dispositivos pares.
  • Comunicação com serviços da web REST e
  • Download de grandes arquivos de mídia em segundo plano

Tecnologias de rede

Na Plataforma Universal do Windows (UWP), as seguintes tecnologias de rede estão disponíveis para os desenvolvedores, que podem ser usadas em muitas situações diferentes.

tomadas

Os soquetes são usados ​​quando você deseja se comunicar com outro dispositivo com seu próprio protocolo.

  • Você pode usar ambos, Windows.Networking.Sockets e Winsock para se comunicar com outros dispositivos como um desenvolvedor de aplicativos da Plataforma Universal do Windows (UWP).

  • Windows.Networking.Sockets tem a vantagem de ser uma API moderna, projetada para ser usada por desenvolvedores UWP.

  • Se você estiver usando bibliotecas de rede de plataforma cruzada ou outro código Winsock existente, use Winsock APIs.

O código a seguir mostra como criar um ouvinte de soquete.

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 código a seguir mostra a implementação do SocketListener_ConnectionReceived manipulador de eventos.

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

o WebSocketsO protocolo fornece uma comunicação bidirecional rápida e segura entre um cliente e um servidor na web. Os desenvolvedores da Plataforma Universal do Windows (UWP) podem usar oMessageWebSocket e StreamWebSocket classes para se conectar a servidores que suportam o protocolo Websocket.

Recursos importantes são -

  • No protocolo WebSocket, os dados são transferidos imediatamente por meio de uma conexão de soquete único full-duplex.

  • Ele permite que as mensagens sejam enviadas e recebidas de ambos os terminais em tempo real.

  • WebSockets são ideais para uso em jogos em tempo real onde notificações instantâneas de redes sociais e exibições atualizadas de informações (estatísticas de jogos) precisam ser seguras e usar transferência rápida de dados.

O código a seguir mostra como enviar e receber mensagens em uma conexão segura.

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 código a seguir mostra a implementação do evento, que receberá uma string de um WebSocket.

//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. 
}

HttpClient

HttpClient e Windows.Web.Http APIs de namespace, fornecem capacidade ao desenvolvedor de enviar e receber informações usando os protocolos HTTP 2.0 e HTTP 1.1.

Pode ser usado para -

  • comunicar-se com um serviço da web ou servidor da web.
  • Faça upload ou download de vários arquivos pequenos.
  • Transmita o conteúdo pela rede.

O código a seguir mostra como enviar uma solicitação GET usando Windows.Web.Http.HttpClient e 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; 
}