監控寶是國內出產的一個非 常優秀的伺服器監控服務,它支援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