ASP.NET MVC Comment sont sécurisées les variables statiques

Je veux m'assurer que mon site web est susceptible d'être hébergées dans le cloud, dans l'avenir, et aussi qu'elle peut gérer beaucoup de demandes.

Le degré de sécurité sont variables statiques?

Sont-ils dangereux parce que les demandes par les utilisateurs distincts sont en fait le partage de ces variables statiques? Ou est-ce parce que si vous étalez le site depuis plus de threads/fragmentation ou similaire, (pour gérer des charges élevées) les threads partagent les variables statiques?

Surtout que j'ai des classes d'assistance, avec des propriétés statiques, dois-je changer cette architecture de sorte que j'ai créer à la place une instance de chaque classe et de l'accès aux instances?

E. G Voici un échantillon de ce que je fais:

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()
{
}
}
}
Les mêmes règles s'appliquent...la statique est partagée dans le domaine de l'application. Pour le partage des données de configuration (comme dans votre exemple), qui peuvent être exactement ce que vous voulez, mais prenez soin de seulement initialiser une seule fois, et à partir d'un seul fil.

OriginalL'auteur Baconbeastnz | 2013-01-08