Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
O exemplo XmlReader demonstra o processamento de um corpo de mensagem usando um XmlReader. O exemplo baseia-se em Getting Started, que implementa um serviço de calculadora. Foi adicionada uma operação Sumde serviço adicional que aceita uma mensagem que contém uma matriz de valores a serem adicionados. O serviço lê a mensagem usando um XmlReader.
Observação
O procedimento de instalação e as instruções de build para este exemplo estão localizados no final deste tópico.
A interface da calculadora inclui uma operação de serviço chamada Sum que aceita um Message parâmetro, conforme mostrado no código de exemplo a seguir.
public interface ICalculator
{
[OperationContract]
double Add(double n1, double n2);
[OperationContract]
double Subtract(double n1, double n2);
[OperationContract]
double Multiply(double n1, double n2);
[OperationContract]
double Divide(double n1, double n2);
[OperationContract]
Message Sum(Message message);
}
O cliente acessa Sum primeiro criando uma matriz de valores inteiros, depois criando uma mensagem da matriz e chamando o Sum método usando a mensagem criada, conforme mostrado no código de exemplo a seguir.
CalculatorClient client = new CalculatorClient();
//...
// Call the Sum service operation.
int[] values = { 1, 2, 3, 4, 5 };
using (new OperationContextScope(client.InnerChannel))
{
Message request = Message.CreateMessage(OperationContext.Current.OutgoingMessageHeaders.MessageVersion, "http://Microsoft.ServiceModel.Samples/ICalculator/Sum", values);
Message reply = client.Sum(request);
int sum = reply.GetBody<int>();
Console.WriteLine("Sum(1,2,3,4,5) = {0}", sum);
}
No serviço, a implementação da operação de serviço Sum acessa o corpo da mensagem usando um objeto XmlReader para iterar pelos valores a serem somados. O GetReaderAtBodyContents método é chamado para acessar o corpo da mensagem, conforme mostrado no código de exemplo a seguir.
public int Sum(Message message)
{
int sum = 0;
string text = "";
//The body of the message contains a list of numbers that are read
//directly using an XmlReader.
XmlReader body = message.GetReaderAtBodyContents ();
while (body.Read())
{
text = body.ReadString().Trim();
if (text.Length>0)
{
sum += Convert.ToInt32(text);
}
}
body.Close();
Message response = Message.CreateMessage(
"http://Microsoft.ServiceModel.Samples/ICalculator/SumResponse",
sum);
return response;
}
Quando você executa o exemplo, as solicitações e respostas da operação são exibidas na janela do console do cliente. Pressione ENTER na janela do cliente para desligar o cliente.
Add(100,15.99) = 115.99
Subtract(145,76.54) = 68.46
Multiply(9,81.25) = 731.25
Divide(22,7) = 3.14285714285714
Sum(1,2,3,4,5) = 15
Press <ENTER> to terminate client.
Para configurar, compilar e executar o exemplo
Verifique se você executou o Procedimento de instalação avulsa dos exemplos do Windows Communication Foundation.
Para compilar a edição .NET do C# ou do Visual Basic da solução, siga as instruções contidas em Como Compilar as Amostras do Windows Communication Foundation.
Para executar o exemplo em uma configuração única ou entre máquinas, siga as instruções em Executando os exemplos do Windows Communication Foundation.