1.リアルタイム監視にWebページが使用されるのはなぜですか?
LZは最近Wuxiで家を買いました。彼女は上海で働いていますが、上海の住宅価格は高すぎて耐えられないので、落ち着く場所として受け入れられるWuxiを選びました。家を買った友人は、家を買うプロセスを知っているかもしれません。家を買うための非常に重要なステップの1つは、商業住宅の提出が必要であることです。簡単に言えば、家を購入するときは、政府の商業住宅ファイリングウェブサイトで家の登録状況を確認できます。開発者がすでに登録しており、まだこの家を販売している場合、1ベッドルームの販売である必要があります。そして、非常に重要な点は、ケースの準備によってのみ、次の銀行ローンに進むことができるということです。銀行の利子がますます高くなるにつれて、登録が早ければ早いほど、ローンが良くなるほど、それは良くなります。したがって、あなたの家の購入の提出状況をできるだけ早く知ることが特に重要です。
もちろん、毎日ウェブサイトでファイリングステータスを確認することもできます。明らかに、これはプログラマーのようなものではなく、.NETプログラマーのようなものでもありません。プログラマーのアプローチは、登録が完了したら、プログラムに携帯電話に正直に通知することです。ちなみに、ファイリングのウェブサイトが本当に遅いと不満を言ってみたいと思います。
2。Windowsサービス、フォーム(Winform)、Webまたはコンソールプログラムを選択しますか?
もちろん、最も適切なのは間違いなくWindowsサービス、Winform、Webは間違いなく大丈夫です。コンソールプログラムは必ずしも最も適切ではありませんが、開発は間違いなく最速です。包括的な検討の後、それは非常に小さな監視プロジェクトであり、1か月または2か月しかかかりませんでしたので、それほど複雑ではありませんでした。さらに、Windowsサービスもサーバーにインストールする必要があります。最も重要なことは、コンソールが開発が最速であり、展開が最も簡単であることです。そのため、最終的にコンソールプログラムを選択しました。
3。要件を分析します
1.ファイリングの状況は数分ごとにチェックする必要があるため、System.timers.timerが必要です。もちろん、それが非常に堅牢または完全なプロジェクトである場合は、Quartz.netを使用することをお勧めします。もちろん、Topshelf、Hangfire、Fluentschedulerなどを選択できます。
2.ウェブサイトの登録ステータスを確認する必要があるため、登録WebページのHTMLを取得し、HTMLに「販売用」という単語が含まれているかどうかを判断する必要があります。そうでない場合、登録が提出されたことを意味します。 system.net.webclientが必要です。 .NETの下には、より多くの検索Webサイトがあります。最も基本的なものは、httpwebrequest、httpclient、またはrestsharpです。これらはすべて良い選択です。
3.リアルタイム通知が必要なため、Alibaba CloudのSMS通知が選択されました。他のプロジェクトが使用されるため、コードを直接コピーして使用できます。もちろん、電子メール、アプリなど、多くの通知もあります。もちろん、それほど複雑である必要はありません。
4。コードモジュール
直接コード、ロジック、コードは簡単です。
クラスプログラム{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/xxxx.html"); console.writeline(datetime.now.tostring( "yyyy-mm-dd hh:mm:ss") + "..." + "not Signed"); if(html.indexof( "for Sale")== -1){if(Timer!= null)Timer.Stop(); //(int i = 0; i <5; i ++){// smsmessage.send( "152 **** 7178"、 "sms_92310001"、new {name = "emrys"、new {name = "emrys ="おめでとう、おめでとう、家が販売のために署名されました! "); thread.sleep(5 * 1000); }}}}