型指定のない要求/応答
このサンプルは、Message クラスを使用する操作コントラクトを定義する方法を示します。
メモ : |
---|
このサンプルのセットアップ手順とビルド手順については、このトピックの最後を参照してください。 |
このサンプルは、「入門サンプル」に基づいています。サービス コントラクトは、メッセージの種類を引数として取得してメッセージを返すという 1 つの操作を定義します。この操作は、合計の計算に必要なすべてのデータをメッセージ本文から収集し、その合計を返信メッセージの本文に格納して返送します。
[OperationContract(Action = CalculatorService.RequestAction, ReplyAction = CalculatorService.ReplyAction)]
Message ComputeSum(Message request);
サービスでは、操作によって入力メッセージ内で渡された整数の配列が取得され、その合計が計算されます。応答メッセージの送信では、サンプルは適切なメッセージ バージョンと Action を含む新しいメッセージを作成し、計算された合計をメッセージ本文に追加します。これを実行するサンプル コードを次に示します。
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;
}
クライアントは ServiceModel Metadata Utility Tool (Svcutil.exe) によって生成されるコードを使用して、リモート サービスにプロキシを作成します。要求メッセージを送信するには、クライアントにメッセージ バージョンが存在する必要があります。これは基になるチャネルによって異なります。したがって、クライアントは、作成済みのプロキシ チャネルに適用される新しい OperationContextScope を作成し、これが、OutgoingMessageHeaders.MessageVersion
プロパティで設定されている正しいメッセージ バージョンにより、OperationContext を作成します。クライアントは入力配列を本文として要求メッセージに渡し、プロキシの ComputeSum
を呼び出します。次にクライアントは、応答メッセージの GetBody<T>
メソッドにアクセスし、渡した入力の合計を取得します。これを実行するサンプル コードを次に示します。
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);
}
このサンプルは Web ホストのサンプルです。したがって、クライアント実行可能ファイルのみを実行する必要があります。クライアントでの出力のサンプルを次に示します。
Prompt>Client.exe
Sum of numbers passed (1,2,3,4,5) = 15
Press <ENTER> to terminate client.
このサンプルは Web ホストのサンプルです。したがって、手順 3. で示したリンクを確認し、サンプルのビルド方法と実行方法を確認してください。
サンプルを設定、ビルド、および実行するには
「Windows Communication Foundation サンプルの 1 回限りのセットアップの手順」が実行済みであることを確認します。
ソリューションの C# 版または Visual Basic .NET 版をビルドするには、「Windows Communication Foundation サンプルのビルド」の手順に従います。
単一コンピュータ構成か複数コンピュータ構成かに応じて、「Windows Communication Foundation サンプルの実行」の手順に従います。
Copyright © 2007 by Microsoft Corporation.All rights reserved.