天天看點

監控寶Windows Phone 7用戶端

    監控寶是國内出産的一個非常優秀的伺服器監控服務,它支援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來擷取伺服器的狀态資訊。

監控寶Windows Phone 7用戶端

對于使用該API,我們隻需要注意兩個關鍵點就行了。

1。 就是伺服器資料的擷取,我們将采用WebClient對象來進行異步資料的擷取。對于WebClient對象的試用,在Windows Phone 7平台上我們隻能使用異步加載的方式,同樣WebService在Windows Phone 7平台上也隻能異步加載。我們還需要注意,在這裡我們通路監控寶的API還需要使用基本身份驗證。相關代碼片段如下:

基本身份認證:

Code Snippet

  1. wc = new WebClient();
  2. string username = GetUserName();
  3. string password = GetPassword();
  4. string usernamePassword = username + ":" + password;
  5. wc.Credentials = new NetworkCredential(username, password);
  6. wc.Headers["Authorization"] = "Basic " + Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes(usernamePassword));

對于異步加載擷取的資料,我們通過XML to Linq直接綁定到界面的清單中:

Code Snippet

  1. void wcRefreshAll_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
  2. {
  3.     if (e.Error != null)
  4.     {
  5.         MessageBox.Show(e.Error.Message, "Error", MessageBoxButton.OK);
  6.         return;
  7.     }
  8.     XElement xmlAllStatus = XElement.Parse(e.Result);
  9.     Console.Write(xmlAllStatus.Value);
  10.     StatusList.ItemsSource = from task in xmlAllStatus.Elements("task")
  11.                              select new TaskStatus
  12.                              {
  13.                                  ID=task.Element("task_id").Value,
  14.                                  Name = task.Element("task_name").Value,
  15.                                  Summary=task.Element("task_summary").Value,
  16.                                  Type=task.Element("task_type").Value,
  17.                                  CreateTime=task.Element("task_create_time").Value,
  18.                                  Frequency=task.Element("frequency").Value,
  19.                                  LastResponseTime=task.Element("last_resp_time").Value,
  20.                                  LastResponseResult=task.Element("last_resp_result").Value,
  21.                                  LastResponseStatus=task.Element("last_resp_status").Value,
  22.                                  CheckTime=task.Element("last_check_time").Value,
  23.                                  Tag = task.Element("task_id").Value + "," + task.Element("task_name").Value
  24.                              };
  25. }

2。 當然,除了檢視目前的系統狀态之外,它還能檢視狀态曲線,以便你了解伺服器的響應變化。目前Windows Phone 7的SDK中還沒有折線圖控件,這裡我使用了别人根據Silverlight Toolkit移植過來的控件。當然,如果你願意還有一些其他控件可以使用:

監控寶Windows Phone 7用戶端

對源代碼感興趣的朋友,請前往論壇中下載下傳:http://bbs.wpmind.com/thread-267-1-1.html

繼續閱讀