Производительность VirtualPathProvider
В настоящее время я пытаюсь создать библиотеку классов и внедрить в нее представления 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);
}
То есть возвращение нулевого значения здесь не влияет на "кеширование" VirtualFile? Я спрашиваю об этом потому, что созданная нами специальная реализация VirtualFile под названием EmbeddedVirtualFile использует этот фрагмент кода в переопределенном методе Open():
var assembly = Assembly.LoadFile(assemblyName);
if (assembly != null)
{
Stream resourceStream = assembly.GetManifestResourceStream(resourceName);
return resourceStream;
}
Я немного боюсь, что это повлияет на производительность. Может ли кто-нибудь меня успокоить?