Lia*_*iam 3 asp.net performance c#-4.0
我正在研究创建一种自动检查系统运行版本的方法.每当我们发布代码来测试时,我们的版本都在使用
[assembly: AssemblyVersion("1.21.0.13329")]
[assembly: AssemblyFileVersion("1.21.0.13329")]
Run Code Online (Sandbox Code Playgroud)
我现在想扩展我们的ASP.Net Web表单和Web服务以显示此版本号.因此,Web表单应用程序将把它放在主页上的某个位置,Web服务可能会有一个返回版本号的Web方法.
我在考虑使用
Version version = Assembly.GetExecutingAssembly().GetName().Version;
Run Code Online (Sandbox Code Playgroud)
去做这个.但我担心因为这是使用反射,它可能会增加我的代码的性能开销.它可能被多次调用,特别是在主页上,我不希望这会减慢响应时间.
我有另一个解决方案,所以我不想要替代方案,我只是想知道是否有人知道这个性能开销是否会相对显着?
Rob*_*ine 10
性能开销以及它是否重要的问题实际上取决于访问量.在单页命中,可能不是 - 代码执行时间是在几毫秒内测量的.如果服务器负载很多,很可能.
但是你不能只是一次击中(即仍然使用反射,但不是每次):
我假设这不会改变Web应用程序实例的生命周期 - 所以为什么不捕获这些信息并存储它?
也许创建一个类来捕获它,例如:
public class AppVersion
{
private static readonly Version _applicationVersion = Assembly.GetExecutingAssembly().GetName().Version;
public static Version ApplicationVersion
{
get { return _applicationVersion; }
}
}
Run Code Online (Sandbox Code Playgroud)
您现在可以通过以下代码访问此代码:
var version = AppVersion.ApplicationVersion
Run Code Online (Sandbox Code Playgroud)