我正在研究创建一种自动检查系统运行版本的方法。每当我们发布代码来测试时,我们的版本都在使用
[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;
这样做。但我担心因为这是使用反射,它可能会增加我的代码的性能开销。它可能被多次调用,特别是在主页上,我不希望这会减慢响应时间。
我有另一个解决方案,所以我不想要替代方案,我只是想知道是否有人知道这个性能开销是否会相对显着?
答案 0 :(得分:10)
性能开销的问题及其是否重要实际上取决于访问量。在单页命中,可能不是 - 代码执行时间是在几毫秒内测量的。如果服务器负载很多,很有可能。
但是你不能只是一次击中(即仍然使用反射,但不是每次):
我假设这不会改变Web应用程序实例的生命周期 - 那么为什么不捕获这些信息并存储它呢?
也许创建一个类来捕获它,例如:
public class AppVersion
{
private static readonly Version _applicationVersion = Assembly.GetExecutingAssembly().GetName().Version;
public static Version ApplicationVersion
{
get { return _applicationVersion; }
}
}
您现在可以通过以下代码访问此代码:
var version = AppVersion.ApplicationVersion