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 回答