Könnte ich wissen, wie ich die Leistung meines .Net WCF-Dienstes verbessern kann? Im Moment seine ziemlich langsam und manchmal wird es verstopft und schließlich reagiert nicht mehr.
Antworten
Zu viele Anzeigen?Welche Art von Daten senden Sie, und über welche Verbindung?
Ist das Problem die Größe von Anfragen (Bandbreite), oder die Menge von Anfragen (Latenzzeit). Wenn Latenz, dann einfach weniger, aber größere Anfragen stellen ;-p
Für die Bandbreite: Wenn Sie binäre Daten über http senden, können Sie MTOM aktivieren - das spart ein paar Bytes. Sie können die Komprimierungsunterstützung auf dem Server aktivieren, aber das ist nicht garantiert.
Wenn Sie .NET zu .NET verwenden, sollten Sie Folgendes in Betracht ziehen protobuf-net ; dies hat WCF-Haken für den Austausch des Formatierers ( DataContractSerializer
), um das Binärformat "protocol buffers" von Google zu verwenden, das sehr klein und schnell ist. Ich kann beraten über wie auf Anfrage.
Ansonsten: weniger Daten senden ;-p
Welche Art von InstanceContextMode und ConcurrencyMode verwenden Sie auf Ihre Serviceklasse?
Wenn es sich um PerCall-Instanzen handelt, sollten Sie prüfen, ob Sie den Overhead für die Erstellung einer Serverinstanz für jeden Aufruf reduzieren können.
Wenn es sich um einzelne Instanzen (Singleton) handelt - brauchen Sie das wirklich? :-) Versuchen Sie es stattdessen mit PerCall.
Marc
Welche Bindung verwenden Sie? Wenn Sie HTTP verwenden, könnten Sie mit TCP eine bessere Leistung erzielen.
Höchstwahrscheinlich wird der Engpass jedoch weiter oben in der WCF-Pipeline und möglicherweise in Ihren gehosteten Objekten liegen.
Wir bräuchten mehr Details über Ihre WCF-Einrichtung, um Ihnen weiterhelfen zu können.
Die von Ihnen beschriebenen Symptome können durch alles Mögliche verursacht werden. Sie müssen die Ursache mit Hilfe eines Profilers wie dotTrace von JetBrain oder AQTime von Automated QA eingrenzen.
Oder Sie könnten es auf die altmodische Weise tun, indem Sie Ihren Code instrumentieren (was die Profiler für Sie tun). Erfassen Sie die Startzeit, bevor Ihr Vorgang beginnt. Wenn die Operation beendet ist, subtrahieren Sie die Startzeit von der aktuellen Zeit, um die verstrichene Zeit zu ermitteln, und drucken Sie sie aus oder protokollieren Sie sie oder was auch immer. Machen Sie das Gleiche mit den Methoden, die dieser Vorgang aufruft. Sie werden schnell sehen, welche Methoden die meiste Zeit benötigen. Gehen Sie dann in diese Methoden und machen Sie dasselbe, um herauszufinden, was die sie so lange dauern, usw.
"Verbessern Sie die Leistung meiner .Net WCF Service" - seine sehr generischen Begriff, den Sie fragen, verschiedene Möglichkeiten, die wir Leistung verbessern können und zur gleichen Zeit müssen Sie finden, die eine Ursache Leistung Hit wie DB-Zugriff in WCF-Methoden.
Bitte versuchen Sie, verfügbare Funktionen in WCF wie oneWay WCF-Methode wissen es wird Ihnen helfen, bei der Suche nach Möglichkeiten zur Verbesserung der Leistung.
Danke Venkat
- See previous answers
- Weitere Antworten anzeigen