3 Stimmen

Kann ich eine statische Cache-Helper-Methode in einem NET MVC-Controller verwenden?

Ich weiß, dass es einige Beiträge darüber gab, wo man eine Cache-Prüfung/-Aktualisierung und die Trennung der Anliegen zwischen dem Controller, dem Modell und dem Caching-Code hinzufügen kann.

Es gibt zwei großartige Beispiele, die ich versucht habe, mit zu arbeiten, aber da ich neu in MVC bin, frage ich mich, welches am saubersten ist und am besten zur MVC-Methodik passt? Ich weiß, dass Sie DI und Unit-Tests berücksichtigen müssen.

Beispiel 1 (Helper-Methode mit Delegat)

...in Controller

var myObject = CacheDataHelper.Get(thisID, () =>
WebServiceServiceWrapper.GetMyObjectBythisID(thisID));

Beispiel 2 (Prüfung auf Cache in der Modellklasse) im Controller

var myObject =   WebServiceServiceWrapper.GetMyObjectBythisID(thisID));

dann in der Modellklasse..............

if (!CacheDataHelper.Get(cachekey, out myObject)) {

//do some repository processing

// Add obect to cache CacheDataHelper.Add(myObject, cachekey);

}

Beide verwenden eine statische Cache-Helferklasse, aber das erste Beispiel verwendet eine Methodensignatur mit einer übergebenen Delegatenmethode, die den Namen der aufgerufenen Repository-Methode enthält. Wenn sich die Daten nicht im Cache befinden, wird die Methode aufgerufen und die Cache-Helferklasse übernimmt das Hinzufügen oder Aktualisieren zum aktuellen Cache.

Im zweiten Beispiel ist die Cache-Prüfung Teil der Repository-Methode mit einer zusätzlichen Zeile für den Aufruf der Add-Methode des Cache-Helfers zur Aktualisierung des aktuellen Cache.

Aufgrund meiner mangelnden Erfahrung und Kenntnisse bin ich mir nicht sicher, welche von ihnen am besten für MVC geeignet ist. Ich mag die Idee des Aufrufs der Cache-Helfer mit dem Delegat-Methode-Namen, um alle Cache-Code im Repository zu entfernen, aber ich bin nicht sicher, ob die Verwendung der statischen Methode im Controller ideal ist?

Das zweite Beispiel entspricht dem obigen, aber jetzt gibt es keine Trennung zwischen der Caching-Prüfung und der Repository-Suche. Vielleicht ist das kein Problem, da Sie wissen, dass es ohnehin eine Zwischenspeicherung erfordert?

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