4 Stimmen

Verbesserung der WCF-Leistung

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.

2voto

Marc Gravell Punkte 970173

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

2voto

marc_s Punkte 701497

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

1voto

sipsorcery Punkte 29399

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.

0voto

John Saunders Punkte 159011

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.

0voto

Venkat Punkte 868

"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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X