Frage

Hat jemand Erfahrung damit, wie gut sich Webdienste, die mit Microsoft WCF erstellt wurden, für eine große Anzahl von Benutzern skalieren lassen?

Das Niveau, an das ich denke, liegt im Bereich von mehr als 1000 Clientbenutzern, die eine Verbindung zu einer Sammlung von WCF-Diensten herstellen, die die Geschäftslogik für unsere Anwendung bereitstellen, und diese kommunizieren mit einer Datenbank – ähnlich einer herkömmlichen dreistufigen Architektur.

Gibt es bestimmte Fallstricke, die die Leistung verlangsamt haben, oder irgendwelche Design-Lektionen, die dieses Maß an Skalierbarkeit ermöglicht haben?

War es hilfreich?

Lösung

Um sicherzustellen, dass Ihre WCF-Anwendung auf das gewünschte Niveau skaliert werden kann, müssen Sie möglicherweise Ihre Überlegungen zu den Statistiken, die Ihre Dienste erfüllen müssen, anpassen.

Sie erwähnen die Betreuung von „mehr als 1.000 Client-Benutzern“, aber um zu beurteilen, ob Ihre Dienste auf diesem Niveau funktionieren können, benötigen Sie auch einige geschätzte Nutzungszahlen, die Ihnen bei der Berechnung einiger einfacherer Statistiken helfen, wie z. B. der Anzahl der Anfragen pro Sekunde Ihrer App muss umgehen.

Nachdem wir gerade mit der Arbeit an einem WCF-Projekt fertig waren, konnten wir auf unserer Testhardware 400 Anfragen pro Sekunde erhalten. In Kombination mit unserem erwarteten Nutzungsmuster, bei dem jeder Benutzer 300 Anfragen pro Tag stellte, deutete dies darauf hin, dass wir durchschnittlich 100.000 Benutzer pro Tag bearbeiten könnten (unter der Annahme, dass flaches Nutzungsdiagramm über den Tag hinweg).

Da es außerdem recht üblich ist, den WCF-Dienstcode zustandslos zu machen, ist es ziemlich einfach, den eigentlichen WCF-Code durch das Hinzufügen zusätzlicher Felder zu skalieren, was bedeutet, dass die Gesamtleistung Ihres Systems viel wahrscheinlicher durch Ihre Geschäftslogik eingeschränkt wird Persistenzschicht als bei WCF.

Andere Tipps

Die vier wichtigsten Dinge, auf die Sie sich als Erstes konzentrieren können (neben einem guten Servicecode), sind wahrscheinlich folgende Punkte:

  • Bindungen - Einige Bindungen und die Protokolle, auf denen sie ausgeführt werden, sind einfach schneller als andere. TCP wird schneller sein als alle http-Bindungen
  • Instanzmodus – Dies bestimmt, wie Ihre Klassen den Sitzungsaufrufern zugeordnet werden
  • Ein- und Zwei-Wege-Operationen - Wenn keine Antwort an den Kunden erforderlich ist, dann tun Sie dies in eine Richtung
  • Drosselung - Max. Sitzungen/gleichzeitige Aufrufe und Instanzen

Sie haben WCF so konzipiert, dass es standardmäßig sicher ist, sodass die Standardeinstellungen sehr einschränkend sind.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top