maxConcurrentInstances: Maximale Anzahl von Instanzen der Service-Klasse, die Anforderungen zur gleichen Zeit unabhängig von dem Gleichzeitigkeit Modus und Instanz-Kontext-Modus dienen kann.
maxConcurrentSessions: Maximale Anzahl gleichzeitig aktiver WCF-Sitzungen.
den Parallelitätsmodus Angenommen wird zu NO multithreading eingestellt.
IF Instance context mode = Per session
THEN Max number of requests processed in parallel = Min(maxConcurrentInstances, maxConcurrentSessions)
IF Instance context mode = Per call
THEN Max number of requests processed in parallel = maxConcurrentInstances
IF Instance context mode = Single
THEN Max number of requests processed in parallel = 1
Unter der Annahme, dass die Parallelität Modus multithreading eingestellt ist.
Eine einzelne Instanz kann jetzt mehrere Anfragen verarbeiten, aber Sie müssen sich um die Nebenläufigkeitsprobleme kümmern.
Die wichtige Frage ist: wie wählen Sie die Instanz-Kontext-Modus?
- Sie nicht sicher sind, mit Multi-Thread-Programmierung: halten Sie sich an PerSession oder PerCall
- Sie müssen zwischen den Anrufen vom gleichen Client auf der Service-Ebene keine Daten halten: PerSession vermeiden
- Das Erstellen einer neuen Instanz des Dienstes ist sehr kostspielig: Verwenden Sie Single, aber bereiten Sie sich darauf vor, mit Nebenläufigkeitsproblemen umzugehen.
Danach ist es eine Frage der Optimierung der maximalen Anzahl von Instanzen (für PerCall) und Sitzungen (für PerSession). Normalerweise beginnt man mit einer willkürlichen Zahl wie 100 und sieht, ob es schneller wird. Wenn ja, dann gut. Wenn nicht, überprüfen Sie, ob Ihre Instanzen schnell genug erstellt werden können.