Restful web API 静态上下文?
Restful web API with static context?
我正在编写一个工具,您可以在其中查看 CPU 的 PerfomanceCounter.NextValue() 或 Web 中的内存。现在我在绘制图表的前端有一个休息网站 api 和 angular。我考虑过 Websockets,但我认为最好从前端使用轮询。但是 rest api 方法应该独立于对象,性能计数器 class 总是需要很多时间来初始化。
我已经尝试在每次收到 get 请求时初始化性能计数器,但这会消耗很多时间并且响应时间非常糟糕。我想看到实时图表,也许 cpu 每秒都有一个新值。
你知道如何避免每次都初始化吗?
您可以使用 Lazy 静态初始化,PerformanceCounter 对象是安全的。
例如:
public static Lazy<PerformcanceCounter> Counter= new Lazy<PerformcanceCounter>(() =>{
return new PerformanceCounter(categoryName, counterName, false);
});
然后在如下代码中使用它:
Counter.Value.Next();
初始化只会运行一次,在第一次访问 Lazy 对象时。
另一个技巧是use static constructor。
唯一不同的是,类型构造函数将运行 of first access to the type.
我正在编写一个工具,您可以在其中查看 CPU 的 PerfomanceCounter.NextValue() 或 Web 中的内存。现在我在绘制图表的前端有一个休息网站 api 和 angular。我考虑过 Websockets,但我认为最好从前端使用轮询。但是 rest api 方法应该独立于对象,性能计数器 class 总是需要很多时间来初始化。
我已经尝试在每次收到 get 请求时初始化性能计数器,但这会消耗很多时间并且响应时间非常糟糕。我想看到实时图表,也许 cpu 每秒都有一个新值。
你知道如何避免每次都初始化吗?
您可以使用 Lazy 静态初始化,PerformanceCounter 对象是安全的。
例如:
public static Lazy<PerformcanceCounter> Counter= new Lazy<PerformcanceCounter>(() =>{
return new PerformanceCounter(categoryName, counterName, false);
});
然后在如下代码中使用它:
Counter.Value.Next();
初始化只会运行一次,在第一次访问 Lazy 对象时。
另一个技巧是use static constructor。 唯一不同的是,类型构造函数将运行 of first access to the type.