我正在研究创建一种自动方式来检查我们系统的运行版本。每当我们发布代码进行测试时,我们的版本都在使用
[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/