मुझे एक साधारण ASP.NET MVC
नियंत्रक मिला है। कुछ क्रिया विधियों के अंदर, मैं एक संसाधन तक पहुंचता हूं जो मैं कहूंगा महंगा है।मैं एएसपी.नेट एमवीसी नियंत्रक में आलसी <T> का उपयोग कैसे कर सकता हूं?
तो मैंने सोचा, क्यों इसे स्थिर नहीं बनाते। तो double checked locking करने के बजाय मैंने सोचा कि मैं .NET 4.0 में Lazy<T>
के उपयोग का लाभ उठा सकता हूं। कई बार के बजाय महंगा सेवा पर कॉल करें।
तो, यदि यह मेरा pseduo कोड है, तो मैं इसे कैसे बदल सकता हूं Lazy<T>
का उपयोग करें। इस contrite उदाहरण के लिए, मैं महंगा संसाधन के रूप में उपयोग करूंगा तो इस उदाहरण के साथ, गंतव्य पथ से सभी फ़ाइलों को प्राप्त करने के बजाय, जब भी एक अनुरोध उस क्रिया विधि को कॉल करता है, तो मैं आलसी का उपयोग करने की उम्मीद कर रहा था फाइलों की सूची पकड़ो .. निश्चित रूप से, कॉल केवल पहली बार कॉल करता है।
अगला धारणा: सामग्री बदल दी गई है तो चिंता न करें। यह दायरे से बाहर है, यहाँ।
public class FooController : Controller
{
private readonly IFoo _foo;
public FooController(IFoo foo)
{
_foo = foo;
}
public ActionResult PewPew()
{
// Grab all the files in a folder.
// nb. _foo.PathToFiles = "/Content/Images/Harro"
var files = Directory.GetFiles(Server.MapPath(_foo.PathToFiles));
// Note: No, I wouldn't return all the files but a concerete view model
// with only the data from a File object, I require.
return View(files);
}
}
एएसपी.NET कैश का उपयोग करने में क्या गड़बड़ है? – tvanfosson
ऐसा लगता है कि आप किसी ऑब्जेक्ट की आलसी तत्कालता के बजाय सिंगलटन की तलाश में हैं। बेशक, आप * सिंगलटन बनाने के लिए * आलसी 'का उपयोग कर सकते हैं ... –