首个任务一点感受
初入職場(chǎng),這兩個(gè)星期來(lái),在Boss的指點(diǎn)下,前前后后修改了多次,終于將這個(gè)ServerCheck的小工具掛在服務(wù)器上檢測(cè)了.他要求做出一個(gè)ServerCheck,檢查指定的服務(wù)器能否正常訪(fǎng)問(wèn)下載,每隔一段時(shí)間就循環(huán)地檢查一次,一旦不能訪(fǎng)問(wèn),便通過(guò)Email通知Mail List中的各個(gè)郵箱,如果恢復(fù)正常便再發(fā)送"正確報(bào)告".整個(gè)業(yè)務(wù)邏輯并不復(fù)雜,但對(duì)于我這個(gè)初出茅廬的人來(lái)說(shuō),著實(shí)煎熬了一把.熬完了,總會(huì)留下點(diǎn)什么的.
1.命名規(guī)范再次強(qiáng)調(diào),這個(gè)沒(méi)得說(shuō),必須的!
2.編程的思維需要轉(zhuǎn)變,不能按照計(jì)算機(jī)過(guò)程式的方式,需求什么就去做什么;面向?qū)ο蟛荒苤皇潜砻嫔险f(shuō)說(shuō)的,需要運(yùn)用起來(lái)
3.要花大部分的時(shí)間去thinking,當(dāng)腦海里勾勒出處理的藍(lán)本時(shí),真正做起來(lái)很easy.好多時(shí)候我們思考的出發(fā)點(diǎn)就不正確或是不實(shí)際(Boss說(shuō)"新手常犯的,考慮欠佳"),結(jié)果時(shí)間浪費(fèi)在"補(bǔ)牢"上,卻得不到一個(gè)預(yù)期的效果,更有甚者會(huì)南轅北轍.
4.技術(shù)上欠缺是個(gè)軟肋,"冰凍三尺非一日之寒",不斷地敲,不斷地啃,是一個(gè)過(guò)程
隨筆附上這個(gè)工具的部分源碼,留個(gè)記錄:
?向指定的服務(wù)器進(jìn)行輪詢(xún)?cè)L問(wèn):
try{
//對(duì)網(wǎng)絡(luò)訪(fǎng)問(wèn)設(shè)置一個(gè)超時(shí)器
exitFlag = false;
timeOut.Elapsed += new ElapsedEventHandler(TimeOut_Tick);
timeOut.Interval = 5000;
timeOut.Enabled = true;
timeOut.Start();
//創(chuàng)建一個(gè)HttpWebRequest對(duì)象,不需要實(shí)例化,用HttpWebRequest.Create來(lái)創(chuàng)建
HttpWebRequest webRequest = (HttpWebRequest)HttpWebRequest.Create(dirPath);
//根據(jù)創(chuàng)建的HttpWebRequest來(lái)創(chuàng)建HttpWebResponse對(duì)象
HttpWebResponse webResponse = (HttpWebResponse)webRequest.GetResponse();
//取得返回的Stream
Stream stream = webResponse.GetResponseStream();
//把Stream轉(zhuǎn)換為StreamReader
StreamReader streamReader = new System.IO.StreamReader(stream);
string str1 = null;
int count = 0;
int length = "Palmap Server Availability Test".Length;
while ((exitFlag == false) && (count < length)) //如果時(shí)間到或字符流讀完返回false
{
//StreamReader轉(zhuǎn)換為字符串
if (streamReader.Peek() >= 0)
{
char chrRead = (char)streamReader.Read();
str1 += chrRead.ToString();
count++;
}
Application.DoEvents();
}
timeOut.Stop();
streamReader.Close();
stream.Close();
webResponse.Close();
webRequest.Abort();
//查看一下返回結(jié)果
if (str1 == "Palmap Server Availability Test")
{
return true;
}
return false;
}
catch
{
timeOut.Stop();
return false;
}
?發(fā)送郵件的部分使用到了System.Net.Mail類(lèi)庫(kù),由于要求不是很高,就沒(méi)有考慮其性能了.還望園中高手前輩們予以指點(diǎn)迷津!
/// <summary>/// 發(fā)送郵件
/// </summary>
/// <param name="title">郵件標(biāo)題</param>
/// <param name="content">郵件正文內(nèi)容</param>
/// <returns></returns>
public void SendMail(string title, string content)
{
SmtpClient client = new SmtpClient();
client.DeliveryMethod = SmtpDeliveryMethod.Network;//指定電子郵件發(fā)送方式
client.Host = strHost;//指定SMTP服務(wù)器
client.Credentials = new System.Net.NetworkCredential(strAccount, strPwd);
client.EnableSsl = true;
for (int i = 0; i < mailList.Length; i++)
{
MailMessage msg = new MailMessage(strFrom, mailList[i]);
msg.Subject = title;
msg.Body = content;
msg.BodyEncoding = System.Text.Encoding.UTF8;//正文編碼
msg.IsBodyHtml = false;
msg.Priority = MailPriority.High;
client.Send(msg);
msg.Dispose();
}
}
轉(zhuǎn)載于:https://www.cnblogs.com/facing/archive/2011/03/23/1992625.html
《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專(zhuān)家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
- 上一篇: 月亮+大环
- 下一篇: 找不到媳妇给愁的。。。