XmlReader サンプル
XmlReader サンプルでは、XmlReader を使用したメッセージ本文の処理を示します。 このサンプルは、電卓サービスを実装する「入門サンプル」に基づいています。 Sum
という 1 つのサービス操作が追加され、このサービス操作は、合計する値の配列を含むメッセージを受け入れます。 サービスは、XmlReader を使用してメッセージを読み取ります。
Note
このサンプルのセットアップ手順とビルド手順については、このトピックの最後を参照してください。
電卓インターフェイスには、Sum
パラメータを受け取る Message という名前のサービス操作が含まれます。次のサンプル コードを参照してください。
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);
}
クライアントは、最初に整数値の配列を作成してこの配列からメッセージを作成し、次に作成されたメッセージを使用して Sum
メソッドを呼び出すことによって、Sum
にアクセスします。次のサンプル コードを参照してください。
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);
}
このサービスでは、サービス操作 Sum
を実装し、XmlReader オブジェクトを使用してメッセージ本文にアクセスすることによって、値を反復処理して合計します。 GetReaderAtBodyContents メソッドが呼び出されると、メッセージ本文へのアクセスが行われます。次のサンプル コードを参照してください。
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;
}
このサンプルを実行する場合は、操作の要求や応答はクライアントのコンソール ウィンドウに表示されます。 クライアントをシャットダウンするには、クライアント ウィンドウで Enter キーを押します。
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.
サンプルをセットアップ、ビルド、および実行するには
Windows Communication Foundation サンプルの 1 回限りのセットアップの手順を実行したことを確認します。
ソリューションの C# 版または Visual Basic .NET 版をビルドするには、「 Building the Windows Communication Foundation Samples」の手順に従います。
単一または複数コンピューター構成でサンプルを実行するには、「Windows Communication Foundation サンプルの実行」の手順に従います。