Frage

Ich habe auf einer API arbeiten (die einen Web-Service von Sorten Wraps) für eine Weile jetzt, und es ist nur über Funktion abgeschlossen.

Ich entwarf zunächst diese API faul / verzögerungs geladen überall zu sein; das macht Sinn, wenn Sie nur in einem kleinen Teil der verfügbaren Daten die Latenz inhärent raubend einen Web-Service gegeben interessieren. Allerdings habe ich versagen einige Anwendungsfälle zu berücksichtigen, wo eifrig Belastung auf einem Verbraucher der API viel einfacher sein würde.

Also, meine Frage ist: Wie würden Sie eine API, um zu sehen wie die überwiegend ist faul-Laden für einen Mechanismus belichten mit Spannung geladene Versionen von Klassen bekommen

Ich bin Neigung in Richtung einer explicit gegossen, aber etwas entlang der Linien von Eager.AsEager(SomeDelayLoadingObject) scheint auch natürlich, wenn ausführlicher.

War es hilfreich?

Lösung

Was ich eigentlich am Ende dabei wurde eine flache Kopie der Klassen zu schaffen wollte ich eifrig geladen werden, Klassen ohne Funktionscode aber mit allen Eigenschaften.

I definiert dann zwei implizite Abgüsse aus lazy-> eifrig und eager-> faul. Beide Würfe alle Eigenschaften kopiert; jeden Laden löst damit, wenn es nötig war.

Während ich nicht glaube, dies ist eine perfekte Lösung, macht es eifrig Läden einfach Typen zu ändern; keine Code-Änderungen erforderlich sind.

Andere Tipps

Ihre API wickelt eine Webservice, so dass Ihre API mehr oder weniger ist als Proxy fungiert. Ich würde das Ladeverhalten auf dem Proxy setzen selbst oder auf irgendeine Art eines Proxy-Kontext, anstatt sich auf die Klassen.

// Basic: Every operation through the proxy uses Eager loading
using (var proxy = new ApiProxy(Loading.Eager))
{
  var result = proxy.DoSomething();
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top