1. Pourquoi les pages Web sont-elles utilisées pour une surveillance en temps réel?
LZ a récemment acheté une maison à Wuxi. Bien qu'elle travaille à Shanghai, les prix des logements à Shanghai sont trop élevés et insupportables, elle a donc choisi Wuxi, ce qui est acceptable, comme un endroit pour s'installer. Les amis qui ont acheté une maison peuvent connaître le processus d'achat d'une maison. Une étape très importante dans l'achat d'une maison est qu'elle nécessite un dépôt de logements commerciaux. Pour le dire simplement, lorsque vous achetez une maison, vous pouvez vérifier l'état d'inscription de votre maison sur le site Web du gouvernement de classement des logements commerciaux. Si le développeur s'est déjà inscrit et vend toujours cette maison, ce doit être une vente d'une chambre. Et un point très important est que ce n'est qu'en préparant l'affaire que nous pouvons passer au prochain prêt bancaire. À mesure que l'intérêt bancaire augmente et supérieur, plus l'enregistrement est plus tôt, plus le prêt est, mieux c'est. Par conséquent, il est particulièrement important de connaître l'état de dépôt de votre achat de maison le plus rapidement possible.
Bien sûr, vous pouvez également consulter votre statut de dépôt sur le site Web tous les jours. De toute évidence, ce n'est pas la façon dont un programmeur est, et ce n'est pas comme ça qu'un programmeur .NET est. L'approche du programmeur consiste à informer honnêtement le programme sur le téléphone mobile une fois l'inscription terminée. Soit dit en passant, je voudrais me plaindre que le site Web de dépôt est vraiment lent.
2. Choisissez Windows Service, Form (WinForm), Web ou Console Program?
Bien sûr, le plus approprié est certainement le service Windows, WinForm et le Web sont certainement OK. Le programme de console n'est pas nécessairement le plus approprié, mais le développement est certainement le plus rapide. Après une considération complète, il s'agissait d'un très petit projet de surveillance et cela n'a pris qu'un ou deux mois, ou un ou deux jours, donc ce n'était pas si compliqué. De plus, le service Windows a dû être installé sur le serveur. La chose la plus importante est que la console est la plus rapide à développer et la plus facile à déployer, donc j'ai finalement choisi le programme de console.
3. Analyser les exigences
1. La situation d'enregistrement doit être vérifiée toutes les quelques minutes, donc System.Timers.Timer est nécessaire. Bien sûr, s'il s'agit d'un projet très robuste ou complet, il est recommandé d'utiliser Quartz.net. Bien sûr, vous pouvez choisir Topshelf, Hangfire, Fluentscheduler, etc.
2. Parce que vous devez vérifier l'état d'enregistrement du site Web, obtenez le HTML de la page Web d'enregistrement, puis déterminez si le HTML contient le mot "à vendre". Sinon, cela signifie que l'enregistrement a été déposé. System.net.webClient est requis. Il y a plus de sites Web de recherche sous .NET. Les plus élémentaires sont HttpWebRequest, HttpClient ou Restharp, qui sont tous de bons choix.
3. Parce que la notification en temps réel est requise, la notification SMS d'Alibaba Cloud a été sélectionnée. Étant donné que d'autres projets sont utilisés, nous pouvons copier directement le code pour l'utiliser. Bien sûr, il existe également de nombreuses notifications, telles que les e-mails, les applications, etc. Bien sûr, nous n'avons pas besoin d'être aussi compliqués.
4. Module de code
Le code direct, la logique et le code sont simples.
Class Program {static System.Timers.Timer Timer = NULL; statique 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 (expéditeur d'objet, System.timers.ElapSedEventArgs e) {webClient client = new WebClient {Encoding = System.Text.Encoding.getEncoding ("utf-8")}; var html = client.downloadString ("http://www.xxxx.com/xxxx.html"); Console.writeline (datetime.now.tostring ("yyyy-mm-dd hh: mm: ss") + "..." + "non signé."); if (html.indexof ("For Sale") == -1) {if (timer! = null) timer.stop (); // Envoi 5 messages texte pour (int i = 0; i <5; i ++) {// Envoyer smsMessage.Send ("152 **** 7178", "SMS_92310001", nouveau {name = "Emrys", status = "CONGRATULATION, FRANTIFATIONS, la Chambre a été signée à vendre!"}); Thread.Sleep (5 * 1000); }}}}