Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
Az XmlReader-minta bemutatja, hogyan lehet feldolgozni egy üzenet törzsét egy XmlReader használatával. A minta az első lépéseken alapul, amely egy számológép szolgáltatást implementál. Hozzá lett adva egy további szolgáltatásművelet, Sumamely egy olyan üzenetet fogad el, amely egy összeadandó értéktömböt tartalmaz. A szolgáltatás elolvassa az üzenetet egy XmlReader segítségével.
Megjegyzés:
A minta telepítési eljárása és összeállítási utasításai a témakör végén találhatók.
A számológép felülete tartalmaz egy szolgáltatásműveletet Sum, amely elfogad egy Message nevű paramétert, ahogyan az az alábbi mintakódban is látható.
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);
}
A felhasználó Sum először létrehoz egy egész számokat tartalmazó tömböt, majd létrehoz egy üzenetet a tömbből, és meghívja a Sum metódust a létrehozott üzenet használatával, ahogyan az az alábbi mintakódban látható.
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);
}
A szolgáltatásban a szolgáltatásművelet Sum megvalósítása egy objektummal XmlReader éri el az üzenet törzsét, amely az értékek összegzése során iterál. A GetReaderAtBodyContents metódus az üzenet törzsének elérésére van meghívva, ahogyan az az alábbi mintakódban is látható.
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;
}
A minta futtatásakor a művelet kérései és válaszai megjelennek az ügyfélkonzol ablakában. Nyomja le az ENTER billentyűt az ügyfélablakban az ügyfél leállításához.
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.
A példa beállítása, elkészítése és futtatása
Győződjön meg arról, hogy elvégezte a Windows Communication Foundation-minták One-Time beállítási eljárását.
A megoldás C# vagy Visual Basic .NET kiadásának létrehozásához kövesse Windows Communication Foundation-mintákcímű témakör utasításait.
Ha a mintát egy vagy több gép közötti konfigurációban szeretné futtatni, kövesse A Windows Communication Foundation-minták futtatásacímű témakör utasításait.