5

我目前正在尝试创建一个类库并将 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;
}

我有点担心这会对性能产生影响。有人可以安慰我吗?

4

0 回答 0