Производительность 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);
}

Таким образом, возврат null здесь не влияет на «кэширование» VirtualFile? Причина, по которой я спрашиваю об этом, заключается в том, что созданная нами пользовательская реализация VirtualFile, называемая EmbeddedVirtualFile, использует этот фрагмент кода в переопределенном методе Open():

var assembly = Assembly.LoadFile(assemblyName);
if (assembly != null)
{
    Stream resourceStream = assembly.GetManifestResourceStream(resourceName);
    return resourceStream;
}

Я несколько боюсь, что это будет хитом производительности. Кто-нибудь может меня успокоить?


person thomasvdb    schedule 25.07.2012    source источник
comment
Я думаю, что этот вопрос/ответ должен быть вам полезен: stackoverflow .com/questions/1505732/   -  person Hao Kung    schedule 25.08.2012
comment
Спасибо @HaoKung! Собственно отвечает на мой вопрос!   -  person thomasvdb    schedule 27.08.2012