NancyFx框架之检测任务管理器
先建一个空的项目和之前的NancyFx系列一样的步骤


然后建三个文件夹Models,Module,Views

然后分别安装一下组件
- jQuery
- Microsoft.AspNet.SignalR
- Microsoft.Owin
- Nancy
- Nancy.Owin
然后往Model类里面添加CPUHub类,Broadcaster类
CPUHub类

public class CPUHub:Hub
{
private readonly Broadcaster broadcaster;
public CPUHub():this(Broadcaster.broadcaster)
{ }
public CPUHub(Broadcaster broadcaster)
{
this.broadcaster = broadcaster;
}
}
Broadcaster类

public class Broadcaster
{
private readonly static Lazy<Broadcaster> lazy = new Lazy<Broadcaster>(()=>new Broadcaster(GlobalHost.ConnectionManager.GetHubContext<CPUHub>().Clients)); private readonly TimeSpan timeSpan = TimeSpan.FromMilliseconds();
private readonly Timer timer;
public static Broadcaster broadcaster
{
get { return lazy.Value; }
}
private IHubConnectionContext hubConnectionContext
{
get;
set;
}
private Broadcaster(IHubConnectionContext hubConnectionContexts)
{
hubConnectionContext = hubConnectionContexts;
timer = new Timer(BroadcastCpuUsage,null,timeSpan,timeSpan);
}
private void BroadcastCpuUsage(object o)
{
string cpu = GetCurrentCpu(); }
private string GetCurrentCpu()
{
string currentCpu = "";
HttpClient httpClient = new HttpClient();
httpClient.BaseAddress = new Uri("http://localhost:3039");
var response = httpClient.GetAsync("api/cpu").Result;
if (response.IsSuccessStatusCode)
{
currentCpu = response.Content.ReadAsStringAsync().Result;
}
return currentCpu;
}
}
然后在往Module里面添加 CPUModule类
public class CPUModule:NancyModule
{
PerformanceCounter performanceCounter;
public CPUModule():base("api/cpu")
{
InitializePerformanceCounter();
Get("/",Lexan=>
{
int cpu = (int)Math.Ceiling(performanceCounter.NextValue());
return Response.AsText(cpu.ToString());
});
}
private void InitializePerformanceCounter()
{
performanceCounter = new PerformanceCounter();
performanceCounter.CategoryName = "";
performanceCounter.CounterName = "";
performanceCounter.InstanceName = "";
performanceCounter.NextValue();
Thread.Sleep();
}
}

然后添加index.html页面在根目录下

<!DOCTYPE html>
<html>
<head>
<title>NancyTaskManager</title>
</head>
<body>
<label id="lblVal"></label>
<br />
<canvas id="cvPercentage"></canvas>
<br />
<br />
<canvas id="cvGraph" height="" width=""></canvas>
<script src="Scripts/jquery-2.1.0.js"></script>
<script src="Scripts/jquery.signalR-2.0.2.js"></script>
<script src="Scripts/Chart.js"></script>
<script src="/signalr/hubs"></script>
<script src="Scripts/taskManager.js"></script>
</body>
</html>
继续往根目录里面添加Startup类
[assembly:OwinStartup(typeof( NancyFxTaskManager.Startup))]
namespace NancyFxTaskManager
{
public class Startup
{
public void Configuration(IAppBuilder app)
{
app.MapSignalR().UseNancy(); }
}
}

好了我们准备就绪,看看运行效果

感谢各位dalao的观看,如有不是,多多指教
NancyFx框架之检测任务管理器的更多相关文章
- Nancyfx框架在传统Webform项目中的应用
最近有个老项目需要做一个需求更迭,老项目是基于传统的webform项目的 为了更好的前后台交互,决定引入Nancyfx框架 关于Nancyfx框架框架是啥就不多介绍了 总的来说是一款轻量级的web框架 ...
- Tensorflow实现Mask R-CNN实例分割通用框架,检测,分割和特征点定位一次搞定(多图)
Mask R-CNN实例分割通用框架,检测,分割和特征点定位一次搞定(多图) 导语:Mask R-CNN是Faster R-CNN的扩展形式,能够有效地检测图像中的目标,同时还能为每个实例生成一个 ...
- [Xcode 实际操作]七、文件与数据-(20)CoreML机器学习框架:检测和识别图片中的物体
目录:[Swift]Xcode实际操作 本文将演示机器学习框架的使用,实现对图片中物体的检测和识别. 首先访问苹果开发者网站关于机器学习的网址: https://developer.apple.com ...
- Xposed那些事儿 — xposed框架的检测和反制
之前看到有人发了关于使用xposed屏蔽抖音检测xposed的思路(https://www.52pojie.cn/thread-684757-1-1.html),贴出了部分伪代码,但觉抖音写的蛮有意思 ...
- 2 _ 基本框架 _ 检测VMX环境
VT 是先开为大,谁先开谁上层,谁上层 谁权限大. 1 判断是否支持 VMX intel 白皮书 第3卷 传入 参数eax =1, 返回值 ecx 的第5位 = 1 则 surpported VMX. ...
- Unity3D——Epirome框架_TimerManager计时任务管理器
1.Timer timer = new Timer(); 创建时间管理器 参数(float time, TimeUnit timeUnit,bool ignoreTimeScale = false, ...
- NancyFx 2.0的开源框架的使用-CustomModule(自定义模块)
NancyFx框架的自定义模块 新建一个空的Web项目 然后通过NuGet库安装下面的包 Nancy Nancy.Hosting.Aspnet 然后添加Models,Module,Views三个文件夹 ...
- NancyFx 2.0的开源框架的使用-ModelBinding(实现绑定)
NancyFx框架中使用绑定模型 新建一个空的Web程序 然后安装Nuget库里面的包 Nancy Nancy.Hosting.Aspnet Nancy.ViewEnglines.Spark 并在We ...
- NancyFX 简介
Nancy是.NET 平台的微框架.在受到Ruby社区的Sinatra框架启发下,NancyFx框架提供一个.NET平台下的低门槛.易上手的可用于Web开发工具包. 请注意我说的是可用于Web开发,这 ...
随机推荐
- Day_02-Python的循环结构
循环结构 应用场景 如果在程序中我们需要重复的执行某条或某些指令,例如用程序控制机器人踢足球,如果机器人持球而且还没有进入射门范围,那么我们就要一直发出让机器人向球门方向奔跑的指令.当然你可能已经注意 ...
- CSS中的 , > + ~
1.群组选择器(',') /* 表示既h1,又h2 */ h1, h2 { color: red; } 2.后代选择器(空格) /* 表示 h1 下面的所有 span 元素,不管是否以 h1 为直接父 ...
- Nginx 作为代理服务与负载均衡
代理服务 代理一代为办理(代理理财.代理收货等等) 代理区别 区别在于代理的对象不一样 正向代理代理的对象是客户端 反向代理代理的对象是服务端 反向代理配置 server { listen 80; s ...
- 6.10&&6.12考试反思
考试结果:6.10AK 6.12:100(评测机)200(本地&&兼容评测机版) OI的考试做题流程无非是: 通读全部题目——>找一个最有把握/最简单的题——>分析思考—— ...
- js返回上一页并刷新的几种方法
1.返回上一页 1)<a href="javascript:history.go(-1)"></a> 2)<a href="javascri ...
- Linux6.6及以上版本配置oracle-ASM共享储存-UDEV
在linux6.6版本之前,我们又两种方式可以配置asm共享磁盘,一种是安装asm驱动包进行asm磁盘组配置,另一种是UDEV通过识别共享存储UUID号进行asm磁盘组配置. 但在linux6.6之后 ...
- Apache2.4常用编译参数
转载文章,亲试 Apache2.4以后的版本编译依赖apr,所以,编译之前需要先安装apr及apr-util. 编译参数只是一个参考作用,这个参数是我平常使用的,具体工作中的需求还是要区别对待的 一些 ...
- 图论之点双&边双
说人话: 边双联通: a到b的路径上无必经边 点双联通: a到b的路径上除了a,b没有必经点 tarjan求点双联通: 代码(补图) 割点: 桥: 求点双:强制dfs时不越过割点,即可求出一个块 求边 ...
- 模拟赛DAY1 T1大美江湖
这就是一个模拟题,注意1234分别对应左右上下横坐标和纵坐标的判断就好了 题解: 需要注意的是,向上取整ceil函数是对于一个double值返回一个double值,也就是说在ceil里面的类型一定要是 ...
- docker 提高效率 network-bridging 桥接
安装的时间顺序 bit3 192.168.107.128 wredis 192.168.107.129 wmysql 192.168.107.130 wslave 192.168.107.131 w ...