在專案開發中經常會用到監控功能,下面透過本篇文章給大家介紹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分鐘實現網頁實時監控,希望對大家有所幫助