我目前正在尝试创建一个类库并将 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;
}
我有点担心这会对性能产生影响。有人可以安慰我吗?