存储应用程序变量

时间:2014-05-23 17:01:11

标签: asp.net asp.net-mvc session

似乎存在三种不同的存储变量的方法,这些变量可用于应用程序中的每个请求:

  1. 的Global.asax.cs

    public class MvcApplication : HttpApplication
    {
        protected void Application_Start()
        {
            Application["SiteDatabase"] = new SiteDatabase();
        }
    }
    
  2. OWIN:

    public partial class Startup
    {
        public void ConfigureAuthentication(IAppBuilder Application)
        {
            Application.CreatePerOwinContext<SiteDatabase>(new SiteDatabase());
        }
    } 
    
  3. 静态容器

    public static class GlobalVariables
    {
        private SiteDatabase _Database;
        public SiteDatabase Database
        {
            get { return _Database ?? new SiteDatabase(); }
        }
    } 
    
  4. 每种方法的相对优势是什么?

1 个答案:

答案 0 :(得分:8)

按顺序:

的Global.asax.cs

  • 优点:适用于所有ASP.NET应用程序,静态可用,因此您不必自己在应用程序周围传输数据。
  • 缺点:没有强类型。不会自动在分布式环境中工作。

OWIN

  • 优点:在OWIN中运行良好,并在应用程序中流动。一些人认为使用静态编程很糟糕。
  • 缺点:如果您不使用OWIN(例如Katana),则无法使用。不会自动在分布式环境中工作。

静态容器

  • 优点:适用于所有ASP.NET应用程序,静态可用。强烈类型意味着没有丑陋的演员
  • 缺点:它是静态的:)不能自动在分布式环境中工作。

数据库

  • 优点:在分布式系统中工作
  • 缺点:可能非常慢;由于网络问题可能会失败;需要更多代码才能可靠地实现。数据也必须是可序列化的。

高速缓存

  • 优点:与数据库类似,但速度要快得多。
  • 缺点:类似于数据库(但速度更快),加上缓存通常不适用于长期存在的对象,尽管ASP.NET缓存确实提供了这种行为(但在那时,为什么要使用缓存)。