В настоящее время я пытаюсь создать библиотеку классов и встроить в нее представления MVC, чтобы мы могли делиться ими на нескольких сайтах, как описано здесь: http://www.wynia.org/wordpress/2008/12/aspnet-mvc-plugins/
Производительность важна, поэтому я пытаюсь выяснить, стоит ли это делать. Может ли кто-нибудь кратко объяснить VirtualPathProvider, если это возможно?
Я заметил, что этот метод вызывается только один раз для каждого файла.
public override VirtualFile GetFile(string virtualPath)
{
if (ResourceFileExists(virtualPath))
return new EmbeddedVirtualFile(virtualPath);
return base.GetFile(virtualPath);
}
Кэширует ли VirtualPathProvider файл/представление автоматически? В другой статье (объясняющей то же самое) они заявили, что вы должны переопределить GetCacheDependency:
public override CacheDependency GetCacheDependency(string virtualPath, IEnumerable virtualPathDependencies, DateTime utcStart)
{
if (ResourceFileExists(virtualPath))
// Return null or otherwise ASP.NET will try to monitor the file.
// Is actually the default implementation.
return null;
return base.GetCacheDependency(virtualPath, virtualPathDependencies, utcStart);
}
Таким образом, возврат null здесь не влияет на «кэширование» VirtualFile? Причина, по которой я спрашиваю об этом, заключается в том, что созданная нами пользовательская реализация VirtualFile, называемая EmbeddedVirtualFile, использует этот фрагмент кода в переопределенном методе Open():
var assembly = Assembly.LoadFile(assemblyName);
if (assembly != null)
{
Stream resourceStream = assembly.GetManifestResourceStream(resourceName);
return resourceStream;
}
Я несколько боюсь, что это будет хитом производительности. Кто-нибудь может меня успокоить?