我的回收站

技术文章、随笔、文摘及其它
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

监控宝Windows Phone 7客户端

Posted on 2010-06-01 14:19  被遗弃的小指  阅读(2009)  评论(6编辑  收藏  举报

监控宝是国内出产的一个非 常优秀的服务器监控服务,它支持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来 获取服务器的状态信息。

Jiankongbao 1

对于使用该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移植过来的控件。当然,如果你愿意还有一些其他控件可以使用:

Jiankongbao 2

对源代码感兴趣的朋友,请前往论坛中下载:http://bbs.wpmind.com/thread-267-1-1.html