5

私は現在、クラス ライブラリを作成し、MVC ビューを埋め込んで、ここで説明されているように複数のサイトで共有できるようにしようとしています: http://www.wynia.org/wordpress/2008/12/aspnet-mvc-plugins /

パフォーマンスは重要なので、これが進むべきかどうかを理解しようとしています。可能であれば、VirtualPathProvider について簡単に説明してもらえますか?

このメソッドは、ファイルごとに 1 回だけ呼び出されることに気付きました。

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 の「キャッシュ」には影響しませんか? 私がこれを尋ねている理由は、EmbeddedVirtualFile と呼ばれる、作成した VirtualFile のカスタム実装が、オーバーライドされた Open() メソッドでこのコードを使用するためです。

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

これによりパフォーマンスが低下するのではないかと心配しています。誰かが私を安心させることができますか?

4

0 に答える 0