Estoy desarrollando una aplicación de blog compartida por organizaciones sin fines de lucro. Quiero que cada organización pueda cambiar su propia configuración de blog. Tomé un patrón singleton (de BlogEngine.net) y lo modifiqué. (Entiendo que ya no es un patrón único). He probado este enfoque y parece funcionar bien en un entorno de desarrollo. ¿Es este patrón una buena práctica? ¿Existen problemas que pueden surgir cuando se coloca en un entorno de producción?¿Es este patrón de singleton C# modificado una buena práctica?
public class UserBlogSettings
{
private UserBlogSettings()
{
Load();
}
public static UserBlogSettings Instance
{
get
{
string cacheKey = "UserBlogSettings-" + HttpContext.Current.Session["userOrgName"].ToString();
object cacheItem = HttpRuntime.Cache[cacheKey] as UserBlogSettings;
if (cacheItem == null)
{
cacheItem = new UserBlogSettings();
HttpRuntime.Cache.Insert(cacheKey, cacheItem, null, DateTime.Now.AddMinutes(1),
Cache.NoSlidingExpiration);
}
return (UserBlogSettings) cacheItem;
}
}
}
(porciones de código se omiten por razones de brevedad.)
Gracias por cualquier ayuda, comentarios, etc.
Es por la organización de usuarios (en contraposición a usuario) - por lo que la organización XYZ puede tener muchos usuarios en el sitio, al mismo tiempo ver sus blogs . –
@geri Eso tiene más sentido. Aparte de la cuestión del reparto, no está mal. ¿Seguro que solo quieres guardarlo en caché por un minuto? Considere la duración del objeto al crearlo/insertarlo en el caché. – Will
Gracias por la sugerencia de lanzamiento: el caché de un minuto es solo para desarrollo. ¿Qué pasa con la instancia estática? Cualquier problema con eso? –