Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Het niet-getypte voorbeeld laat zien hoe u bewerkingscontracten definieert die gebruikmaken van de berichtklasse.
Opmerking
De installatieprocedure en build-instructies voor dit voorbeeld bevinden zich aan het einde van dit onderwerp.
Dit voorbeeld is gebaseerd op aan de slag. Het servicecontract definieert één bewerking die een berichttype als argument gebruikt en een bericht retourneert. De bewerking verzamelt alle vereiste gegevens voor het berekenen van de som van de hoofdtekst van het bericht en verzendt vervolgens de som als hoofdtekst in het retourbericht.
[OperationContract(Action = CalculatorService.RequestAction, ReplyAction = CalculatorService.ReplyAction)]
Message ComputeSum(Message request);
Op de service haalt de bewerking de reeks gehele getallen op die in het invoerbericht zijn doorgegeven en berekent vervolgens de som. Als u een antwoordbericht wilt verzenden, maakt het voorbeeld een nieuw bericht met de juiste berichtversie en actie en voegt u de berekende som toe als hoofdtekst. In de volgende voorbeeldcode ziet u dit.
public Message ComputeSum(Message request)
{
//The body of the message contains a list of numbers which will be
//read as a int[] using GetBody<T>
int result = 0;
int[] inputs = request.GetBody<int[]>();
foreach (int i in inputs)
{
result += i;
}
Message response = Message.CreateMessage(request.Version,
ReplyAction, result);
return response;
}
De client gebruikt code die wordt gegenereerd door het hulpprogramma voor metagegevens van ServiceModel (Svcutil.exe) om een proxy te maken voor de externe service. Als u een aanvraagbericht wilt verzenden, moet de client de berichtversie hebben, die afhankelijk is van het onderliggende kanaal. Er wordt dus een nieuw OperationContextScope-bereik gecreëerd voor het proxykanaal dat het heeft gemaakt, waardoor een OperationContext met de juiste berichtversie wordt gecreëerd, die in de OutgoingMessageHeaders.MessageVersion-eigenschap is ingevuld. De client geeft een invoermatrix door als hoofdtekst aan het aanvraagbericht en roept vervolgens de ComputeSum proxy aan. De client haalt vervolgens de som op van de invoer die deze heeft doorgegeven door toegang te krijgen tot de GetBody<T> methode in het antwoordbericht. In de volgende voorbeeldcode ziet u dit.
using (new OperationContextScope(client.InnerChannel))
{
// Call the Sum service operation.
int[] values = { 1, 2, 3, 4, 5 };
Message request = Message.CreateMessage(
OperationContext.Current.OutgoingMessageHeaders.MessageVersion,
RequestAction, values);
Message reply = client.ComputeSum(request);
int response = reply.GetBody<int>();
Console.WriteLine("Sum of numbers passed (1,2,3,4,5) = {0}",
response);
}
Dit voorbeeld is een web-hosted voorbeeld en daarom moet alleen het uitvoerbare clientbestand worden uitgevoerd. Hier volgt de voorbeelduitvoer op de client.
Prompt>Client.exe
Sum of numbers passed (1,2,3,4,5) = 15
Press <ENTER> to terminate client.
Dit voorbeeld is een voorbeeld dat wordt gehost op het web en controleer daarom de koppeling in stap 3 om te zien hoe u het voorbeeld bouwt en uitvoert.
Het voorbeeld instellen, compileren en uitvoeren
Zorg ervoor dat u de One-Time Setup Procedure voor de Windows Communication Foundation-voorbeelden hebt uitgevoerd.
Als u de C# of Visual Basic .NET-editie van de oplossing wilt bouwen, volgt u de instructies in Het bouwen van de Windows Communication Foundation-voorbeelden.
Als u het voorbeeld wilt uitvoeren in een configuratie met één of meerdere computers, volgt u de instructies in Windows Communication Foundation-voorbeelden uitvoeren.