Wir haben eine neue App mit folgendem Stack entwickelt:
SQL Server 2008 R2 - & gt; Entity Framework 4.2 - & gt; WCF-Datenservice - & gt; WCF Data Services-Clientbibliothek
Dies ist alles .NET 4.0
Jetzt ist die WCF Data Services-Client-Bibliothek sehr praktisch für kleine Datenmengen und einfache Schemas / Objektdiagramme, aber sie ist ein echter Hund für komplexere Modelle. Insbesondere haben wir festgestellt, dass die DataServiceContext.Links-Sammlung etwas wie O (n ^ 2) skaliert: je mehr verwandte Objekte Sie laden und je verschachtelter Ihr Diagramm ist, desto langsamer wird es, bis das Laden der Daten länger dauert in den Kontext als es liest es von der Leitung.
Zum Beispiel haben wir eine Sammlung mit 2000 Mitgliedern und jedes Mitglied hat 4 Navigationseigenschaften. Das Ziehen der gesamten Sammlung ohne Erweiterung der Navigationseigenschaften dauert etwa 1 Sekunde. Die Erweiterung aller 4 Navigationseigenschaften dauert 5 Sekunden. Wir haben die Leistung an verschiedenen Punkten im Stack gemessen, und der Großteil der zusätzlichen Zeit wird für den Client ausgegeben, um die Daten zu sammeln.
Wir haben verschiedene Techniken implementiert, um dies für große Datensätze zu umgehen:
Kennt jemand andere Techniken? Gibt es eine Einstellung, die beim Laden verwandter Objekte unnötigen Overhead verursachen könnte?
Manchmal scheint es, als wären wir auf halbem Weg zum Schreiben unseres eigenen benutzerdefinierten Kontextes, und ich hätte gerne eine Plausibilitätsprüfung, bevor sie noch ausgefeilter wird.
[Ja, mir ist klar, dass WCF Data Services möglicherweise das falsche Tool für den Job ist. Leider sind wir schon auf dieser Straße]
Tags und Links odata wcf-data-services wcf-data-services-client