| 

.NET C# Java Javascript Exception

4
Wir haben eine Anwendung die als Client-Server konzipiert wurde. Als Kommunikations-Framework benutzen wir Zyan. Als Datenlayer setzen wir EF 4.4 mit ObjectContext ein.

Solange nur ein Client Daten sendet, ist die Ausführung fehlerfrei. Kommen aber mehrere Anweisungen gleichzeitig, wird die Performance total langsam und das EF steigt aus. Nachforschungen ergeben, das EF nicht Thread-sicher ist.

Frage: Wie bekommt man es hin, dass die Anfragen vom Client an den Server übergeben werden können und der sich dann um eine serielle Verarbeitung bemüht. Ich stell mir so was wie eine "Warteschlange" vor.

Tests haben ergeben, dass ich bis zu 4 Anfragen pro Sekunde hinbekomme, wenn sie hintereinander kommen würden.
News:
20.12.2013
MyKey0815 1,6k 2 9
1 Antwort
1
Ich glaube nicht, dass sich dies pauschal beantworten lässt, solange man nicht genaueres über die Architektur und die Instanzierung des EF Contextes weiss.
Welche Patterns setzt ihr ein?
Repository? Unit of Work? Wird der Context vernünftig disposed?
Läuft der ObjectContext z.B. permanent als Singleton auf dem Server oder wird bei jedem Zugriff neu instanziert - global oder für jeden User separat?
Handelt es sich um schreibende und lesende Zugriff?
Handelt es sich um Fire-and Forget Zugriffe, bei denen Queries abgeschickt werden sollen, aber keine Antworten notwendig sind.

Es gibt viele Lösungen, die mir einfallen, aber halt nicht pauschal.
Theoretisch kannst Du natürlich schon lauter Fire and Forgetanfragen and den Server schicken, der die Anfragen in eine Queue scheibt und dann seriell weiter an die DB schickt. Aber mir scheint, dies wäre eher ein Workaround, während der Fehler wohl im Design liegt.
20.12.2013
judgy 3,0k 1 1 8
Wir werden unser konzept/Architektur nochmal durchdenken. Danke für die gedankenansansätze in diese Richtung
MyKey0815 29.12.2013

Stelle deine Ef-Frage jetzt!