3

システムの実行中のバージョンを自動的に確認する方法を検討しています。テストするコードをリリースするたびに、バージョンが使用しています

[assembly: AssemblyVersion("1.21.0.13329")]
[assembly: AssemblyFileVersion("1.21.0.13329")]

ASP.Net Web フォームWeb サービスを拡張して、このバージョン番号を表示したいと考えています。そのため、Web フォーム アプリはそれをホームページのどこかに配置し、Web サービスにはバージョン番号を返す Web メソッドが含まれている可能性があります。

使おうと思ってた

Version version = Assembly.GetExecutingAssembly().GetName().Version;

これをする。しかし、これはリフレクションを使用しているため、コードにパフォーマンスのオーバーヘッドが追加される可能性があることを懸念しています。特にホームページで何度か呼び出される可能性があり、これにより応答時間が遅くなることは望ましくありません。

別の解決策があるので、代替手段は必要ありません。これのパフォーマンスのオーバーヘッドが比較的大きくなるかどうかを誰かが知っているかどうか知りたいですか?

4

1 に答える 1

11

パフォーマンスのオーバーヘッドの問題とそれが重要かどうかは、実際にはアクセス量に依存します。単一ページのヒットでは、おそらくそうではありません-コード実行時間は数ミリ秒で測定されます。サーバーが多くのヒットで負荷がかかっている場合は、おそらく.

しかし、とにかく一度だけヒットすることはできませんか (つまり、リフレクションを使用しますが、毎回ではありません):

これは、Web アプリケーション インスタンスの存続期間中は変わらないと思います。では、この情報を一度キャプチャして保存してみませんか?

おそらく、これをキャプチャするクラスを次のように作成します。

public class AppVersion
{
    private static readonly Version _applicationVersion = Assembly.GetExecutingAssembly().GetName().Version;

    public static Version ApplicationVersion
    {
        get { return _applicationVersion; }
    }
}

次の方法でコードでこれにアクセスできるようになりました。

var version = AppVersion.ApplicationVersion
于 2012-06-14T10:33:56.887 に答える