asp.net - Assembly.GetExecutingAssembly() 性能

标签 asp.net performance c#-4.0

我正在研究创建一种自动方式来检查我们系统的运行版本。每当我们发布代码进行测试时,我们的版本都在使用

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

我现在想扩展我们的 ASP.Net 网页表单 网络服务以显示此版本号。因此,Web 表单应用程序会将其放在主页上的某个位置,而 Web 服务可能会有一个返回版本号的 Web 方法。

我正在考虑使用
Version version = Assembly.GetExecutingAssembly().GetName().Version;

去做这个。但我担心,因为这是使用反射,它可能会给我的代码增加性能开销。它可能会被多次调用,尤其是在主页上,我不希望这会降低响应时间。

我有另一个解决方案,所以我不需要替代方案,我只想知道是否有人知道这的性能开销是否会相对显着?

最佳答案

性能开销以及它是否重要的​​问题实际上取决于它的访问量。在单个页面点击时,可能不是 - 代码执行时间以几毫秒为单位。如果服务器负载过重,点击次数很多,很有可能。

但是你不能只命中一次吗(即仍然使用反射,但不是每次都使用):

我假设这在 Web 应用程序实例的整个生命周期中都不会改变 - 那么为什么不一次捕获此信息并存储它呢?

也许创建一个类来捕获它,例如:

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

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

您现在可以通过以下方式在代码中访问它:
var version = AppVersion.ApplicationVersion

关于asp.net - Assembly.GetExecutingAssembly() 性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11031233/

相关文章:

asp.net - WCF数据服务jquery跨域问题

javascript - 提交至 Eloqua 表单,无需 Eloqua 处理页面

mysql - 复合索引中列的顺序会影响查找速度吗?

c#-4.0 - 具有通用基类的派生类的集合

mysql - C# Entity Framework : There is already an open DataReader associated with this Connection which must be closed first

c# - Visual Studio,F11,只对特定线程正在做什么感兴趣?

c# - SqlBulkCopy 忽略数据库中数据表的重复记录

c# - 如何在生产中部署 Owin 自托管应用程序?

javascript - 我的日期选择器工作得不太好

python - Pandas:SQL-HAVING 语句的高效等效项