Ich habe eine Anforderung, wo ich mehrere parallele Aufrufe an verschiedene Web-Services auf verschiedenen Servern gehostet senden müssen. Ich muss eine Konfigurationsdatei lesen, um zu wissen, wie oft der Anruf getätigt werden muss. Nehmen wir an, es gibt 4 Server und auf jedem Server wird ein Web-Service gehostet. Der konfigurierte Wert ist 4, dann muss ich 4 Aufrufe an jeden Dienst parallel machen. Insgesamt Anrufe wäre 16. Hier ist der Code, die ich getan habe:Ich muss mehrere verschiedene Web-Services parallel aufrufen mit C#
string XmlFile = ConfigurationManager.AppSettings["XMLFile"].ToString();
int num = Convert.ToInt16(ConfigurationManager.AppSettings["NumberOfCalls"]);
Service service1 = new InfoMsg.Manager.Service();
Service service2 = new InfoMsg.Manager.Service();
Service service3 = new InfoMsg.Manager.Service();
Service service4 = new InfoMsg.Manager.Service();
string xmlString = System.IO.File.ReadAllText(XmlFile);
if (!string.IsNullOrEmpty(xmlString))
{
Parallel.For(0, num, i =>
Parallel.Invoke(() => service1.CheckInXML(xmlString),
() => service2.CheckInXML(xmlString),
() => service3.CheckInXML(xmlString),
() => service4.CheckInXML(xmlString))
);
}
ich tatsächlich zwischen 14 und 16 Anrufe mache so etwas nicht stimmt. Ist das ein richtiger Weg?
Was ist passiert, als Sie es versucht haben? Hat es funktioniert? – Servy
Ja! es funktioniert. Aber ich bin mir nicht sicher, ob ich es richtig mache –
Manchmal sind Anrufe weniger als das, was ich erwarte. Nehmen wir an, der Wert von num ist 4, dann sollten die Gesamtanrufe 16 sein. –