ASP.NET MVC-Wie sicher sind statische Variablen

Ich möchte sicherstellen, dass meine website ist in der Lage die auf der cloud in die Zukunft-und auch, dass es kann eine Menge Anfragen.

Wie sicher sind statische Variablen?

Sind Sie unsicher, da Sie gesonderte Anträge durch getrennte Benutzer sind, tatsächlich teilen Sie diese statischen Variablen? Oder ist es, weil wenn verbreiten Sie die Website über threads/Splitter oder ähnliches, (mit hohen Belastungen) die threads teilen sich die statischen Variablen?

Hauptsächlich habe ich helper-Klassen mit statischen Eigenschaften, sollte ich das ändern dieser Architektur, so dass ich stattdessen erstellen Sie eine Instanz der jeweiligen Klasse und den Zugriff auf die Instanzen?

E. G Hier ist ein Beispiel, was ich Tue:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Mvc.Mailer;

namespace MVCWebsite.Helpers
{
        public class AppSettings
        {
                public static void OnAppInit()
                {
                        //General
                        AppName = "MyApp";
                        DesktopBaseURLs = new Dictionary<string, string>();
                        DesktopBaseURLs.Add("dev", "localhost:50560");
                        DesktopBaseURLs.Add("test", "www.test.whatever.com");
                        DesktopBaseURLs.Add("live", "www.whatever.com");
                        MobileBaseURLs = new Dictionary<string, string>();
                        MobileBaseURLs.Add("dev", "m.local.whatever.com");
                        MobileBaseURLs.Add("test", "m.test.whatever.com");
                        MobileBaseURLs.Add("live", "m.whatever.com");

                        //Emails
                        EmailHostName = AppName + ".com"; //For the moment atleast
                        NoReplyEmailAddress = "no-reply@" + EmailHostName.ToLower();
                        SupportEmailAddress = "support@" + EmailHostName.ToLower();
                        ErrorEmailAddress = "errors@" + EmailHostName.ToLower();

                        //Resources
                        TempFileURL = "/content/temp/";
                        UserDataURL = "/content/user-content/";
                        ProfilePicturesURL = UserDataURL + "profile-pictures/";

                        var a = GlobalHelper.GetURLAsServerPath(ProfilePicturesURL);
                        var b = a;

                }

                //General
                public static string AppName { get; set; }
                public static Dictionary<string, string> DesktopBaseURLs;
                public static Dictionary<string, string> MobileBaseURLs;

                //Emails
                public static string EmailHostName { get; set; }
                public static string NoReplyEmailAddress { get; set; }
                public static string SupportEmailAddress { get; set; }
                public static string ErrorEmailAddress { get; set; }

                //Resources
                public static string UserDataURL { get; set; }
                public static string TempFileURL { get; set; }
                public static string ProfilePicturesURL { get; set; }

                //Methods
                public static void SetAppURL()
                {

                }
        }
}
Die gleichen Regeln gelten...die statische geteilt wird innerhalb der app-Domäne. Für die freigegebene Konfiguration Daten (wie in deinem Beispiel), dann ist das vielleicht genau das, was Sie wollen, aber achten Sie darauf, nur einmal initialisieren, und von einem einzigen thread.

InformationsquelleAutor Baconbeastnz | 2013-01-08

Schreibe einen Kommentar