监控宝是国内出产的一个非 常优秀的服务器监控服务,它支持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还需要使用基本身份验证。相关代码片段如下:
基本身份认证:
- 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直接绑定到界面的列表中:
- 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