監控寶是國内出産的一個非常優秀的伺服器監控服務,它支援HTTP、Ping、DNS、FTP、SMTP、POP、IMAP、TCP等,還使用SNMP協定監控伺服器性能和容量,支援各種伺服器,包括Linux、Windows、BSD、Mac、 Solaris、AIX等,而且也支援服務層監控,包括Apache、Lighttpd、Nginx、MySQL。WPMind自然也使用了這一服務來時刻監控着網站的服務狀态,以便能夠更好的為廣大讀者服務。
在5月22日的第五屆MobileDev Day上我給大家示範了一個基于Windows Phone 7的監控寶用戶端,您可以使用它在您的Windows Phone 7手機上(當然。。。請耐心等待最少半年,現在隻能使用模拟器)來監控您的伺服器的運作狀态。該程式使用了監控寶所提供的API來擷取伺服器的狀态資訊。
對于使用該API,我們隻需要注意兩個關鍵點就行了。
1。 就是伺服器資料的擷取,我們将采用WebClient對象來進行異步資料的擷取。對于WebClient對象的試用,在Windows Phone 7平台上我們隻能使用異步加載的方式,同樣WebService在Windows Phone 7平台上也隻能異步加載。我們還需要注意,在這裡我們通路監控寶的API還需要使用基本身份驗證。相關代碼片段如下:
基本身份認證:
Code Snippet
- wc = new WebClient();
- string username = GetUserName();
- string password = GetPassword();
- string usernamePassword = username + ":" + password;
- wc.Credentials = new NetworkCredential(username, password);
- wc.Headers["Authorization"] = "Basic " + Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes(usernamePassword));
對于異步加載擷取的資料,我們通過XML to Linq直接綁定到界面的清單中:
Code Snippet
- void wcRefreshAll_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
- {
- if (e.Error != null)
- {
- MessageBox.Show(e.Error.Message, "Error", MessageBoxButton.OK);
- return;
- }
- XElement xmlAllStatus = XElement.Parse(e.Result);
- Console.Write(xmlAllStatus.Value);
- StatusList.ItemsSource = from task in xmlAllStatus.Elements("task")
- select new TaskStatus
- {
- ID=task.Element("task_id").Value,
- Name = task.Element("task_name").Value,
- Summary=task.Element("task_summary").Value,
- Type=task.Element("task_type").Value,
- CreateTime=task.Element("task_create_time").Value,
- Frequency=task.Element("frequency").Value,
- LastResponseTime=task.Element("last_resp_time").Value,
- LastResponseResult=task.Element("last_resp_result").Value,
- LastResponseStatus=task.Element("last_resp_status").Value,
- CheckTime=task.Element("last_check_time").Value,
- Tag = task.Element("task_id").Value + "," + task.Element("task_name").Value
- };
- }
2。 當然,除了檢視目前的系統狀态之外,它還能檢視狀态曲線,以便你了解伺服器的響應變化。目前Windows Phone 7的SDK中還沒有折線圖控件,這裡我使用了别人根據Silverlight Toolkit移植過來的控件。當然,如果你願意還有一些其他控件可以使用:
對源代碼感興趣的朋友,請前往論壇中下載下傳:http://bbs.wpmind.com/thread-267-1-1.html