我有以下非常有趣的课程......
pubilc class Thing{
public Thing()
{
DoSomethingThatTakesALongTime();
}
public boolean CheckSomething(string criteria)
{
return criteria == "something";
} }
在我的ASP.Net MVC应用程序中,我需要经常拨打CheckSomething
。
如您所见,构造函数需要很长时间才能加载。
我可以使用哪些方法来缓存课程?请记住,我想让它保持可测试......而且我不知道那会带来什么!!!!
干杯,
ETFairfax
答案 0 :(得分:2)
您可以创建该类的静态实例。
某处:
public static Thing singleThing = new Thing ();
现在,在第一次访问给定应用程序域的singleThing变量时,构造函数将会运行。完成此操作后,对象将保留在内存中,直到应用程序域结束(服务器重新启动,代码更新,web.config中的更改,回收等)。这意味着一旦初始化的对象将可供您的应用程序的所有客户端使用。
答案 1 :(得分:2)
您可以使用工厂模式创建它(Flyweight模式以共享内存)
创建一个返回该类实例的Factory。工厂看起来像这样
如果缓存中的实例
如果不是
对于缓存,您可以使用HttpContext Cache或Enterprise Library Cache。
修改强>
有趣的讨论下面是哪种模式。
我的理解如下:
答案 2 :(得分:0)
如果你的东西类对你的应用程序做了全局的事情(不依赖于会话),只需使类静态或将实例添加到缓存中(HttpContext.Cache)