Asp.Net 5分钟实现网页实时监控
一、为什么会用到网页实时监控
lz最近在无锡买房了,虽然在上海工作,但是上海房价实在太高无法承受,所以选择还可以接受的无锡作为安身之地。买过房的小伙伴可能知道买房的流程,买房中间有一步很重要的就是需要商品房备案,简单点说就是你买房时可以在*商品房备案网站处查看你购买房的备案情况,如果是已经备案了开发商还在卖这套房子,那肯定就是一房多卖了。而且很重要一点就是,只有备过案,才能进行下一步银行贷款,在目前银行利息越来越高的情况下,肯定是越早备案越早贷款越有利,所以以最快速度知道自己购买房子的备案情况尤为重要。
当然也可以每天到网站查询自己的备案情况,显然这不是程序员的做法,更不是.net程序员的做法。程序员的做法肯定是备案一旦下来,程序老老实实的通知到手机上。顺便吐槽一点,查询备案的网站真慢。
二、选择windows服务、窗体(winform)、web还是控制台程序?
当然最合适的肯定是windows服务,winform和web肯定也可以的,控制台程序不一定是最合适的,但肯定开发是最快速的。综合考虑了一下,因为是一个很小的监控项目而且只会用一两个月,或者一两天,所以没变要搞那么复杂,而且windows服务还要安装到服务器,最重要的是控制台是最快开发和最容易部署的,所以最终选择了控制台程序。
三、分析需求
1、需要每隔几分钟查询一次备案情况,所以需要system.timers.timer。当然如果是非常健壮的或者是完整的项目,建议用quartz.net,当然可以选择topshelf、hangfire、fluentscheduler等等。
2、因为需要查询网站的备案情况,获取备案网页的html,然后判断html中是否含有“待售”字样即可,如果没有就说明已经备案了。 这时需要system.net.webclient。查询网站.net下就更多了,最基础的就是httpwebrequst,httpclient,或者用restsharp,都是不错的选择。
3、因为需要实时通知情况,所以选择了阿里云的短信通知,因为其他项目用到,所以直接复制代码来用。当然也有很多通知,比如邮件,app,等等。当然我们没必要搞那么复杂。
四、代码模块
直接代码,逻辑和代码很简单。
class program { static system.timers.timer timer = null; static void main(string[] args) { timer = new system.timers.timer(2 * 60 * 1000); timer.elapsed += timer_elapsed; ; timer.start(); console.readkey(); } private static void timer_elapsed(object sender, system.timers.elapsedeventargs e) { webclient client = new webclient { encoding = system.text.encoding.getencoding("utf-8") }; var html = client.downloadstring("http://www.xxxx.com/xxxxx.html"); console.writeline(datetime.now.tostring("yyyy-mm-dd hh:mm:ss") + "......" + "未签。"); if (html.indexof("待售") == -1) { if (timer != null) timer.stop(); // 发送5条短信 for (int i = 0; i < 5; i++) { // 发送短信 smsmessage.send("152****7178", "sms_92310001", new { name = "emrys", status = "恭喜恭喜恭喜,房子已签售!" }); thread.sleep(5 * 1000); } } } }
五、部署
好吧,这项没啥以及意义,直接生成代码,在bin目录拷贝debug文件夹直接扔到服务器,点击运行xxxxxxx.exe。部署完毕。^_^
六、总结
1、虽然当时只是突发奇想,并没有具体统计时间,拿起vs就是一顿突突。所有代码和部署应该不会超过5分钟。 从这可以看出.net在vs配合下在一些方面做的还是不错的。
2、现在.net core开源跨平台以及运行速度,c#“优美的语言”,vs宇宙第一ide,其他不多说,望.net越来越好。
以上所述是小编给大家介绍的asp.net 5分钟实现网页实时监控,希望对大家有所帮助
推荐阅读