仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 491|回复: 8
打印 上一主题 下一主题

[学习教程] ASP.NET网站制作之用C#开辟Windows服务监控体系利用

[复制链接]
跳转到指定楼层
楼主
发表于 2015-1-16 22:41:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
觉得J2EE好像有很多工具,比如servlet,jboss,tomcat,ejb什么的,可是微软的.NET怎么什么也没有啊?window|监控<P>  择要本文将向你展现怎样用C#开辟一个Windows服务来纪录体系利用情形。

  每个人都想晓得他们天天在甚么工夫启动和封闭本人的体系,和体系天天运转了几工夫。假如用一个DataGrid控件来显现体系启动、封闭及所损耗的工夫将是一个不错的主张。

  在本文中,我供应了一种办法来完成这一方针-利用C#开辟一个Windows服务。实在,每一个人都懂得一点Windows服务。可是,为了先容之目标,我仅尽量少得注释一下Windows服务。然后,我们来会商怎样计划一个如许的使用程序。

  1、甚么是Windows服务?

  实在,Windows服务只是运转于背景的其实不请求我们懂得的一种历程罢了。并且,它们的尽年夜部分其实不请求用户交互。假如我们在"入手下手"菜单的"运转"命令行下输出"services.msc"并回车,那末我们就能够看到在我们以后的体系中运转的服务情形。个中,有一些服务是当体系启动时主动启动的。可是,也有一些服务必需在我们的手工启动下才干运转。

  2、Windows服务的长处

  1.可以主动运转。

  2.不请求用户交互。

  3.在背景运转。

  一样平常情形下,Windows服务被用于泯灭工夫良多的历程中,比方备份数据库,等等。

  如今,我们要计划一个Windows服务来完成纪录你的体系启动和封闭必要的工夫。我利用VisualStudio2003计划了这个使用程序。

  3、计划Windows服务

  第一步:

  起首翻开VisualStudio而且选择VisualC#工程。选择模板范例为Windows服务,并定名为Monitoring,以下图所示:


<P>  第二步:

  按F7键翻开代码窗口。然后,到场对System.IO定名空间的援用,以便把体系准时功效编写到一个文件中。下一步,用Monitoring一词交换一切呈现的Service1一词。以后,转进计划形式(按键shift+F7)。选择SolutionExplorer(按键Ctrl+Alt+L)。点击Service1.cs而且定名它为Monitoring.cs。

  以后,转进代码窗口。在OnStart事务中到场以下代码,以下图所示:


  在OnStart事务中完成的功效

  起首,在c盘上创立一个xml文件,并定名为file1。然后,在这个文件中创建以下代码:

<?xmlversion="1.0"encoding="utf-8"standalone="no"?>
<times>
  然后,封闭它。

  我创立了一个服务,它可以在体系启动时主动启动而且纪录下启动工夫。当体系封闭时,它也封闭。并且,它会纪录下封闭工夫和体系中所消费的工夫。

  起首,我要创立一个StreamWriter来把体系启动工夫写进file1.xml文件中。

  在把代码复制到你的OnStart事务后,恰好在Monitoring机关器的下面创立一个大众变量temp,以下图所示:


  今后,把这部分代码复制到你的代码窗口:

  再把上面代码复制到OnStart事务中,以下图所示:

StreamWriterwriter=File.AppendText("d:file1.xml");
writer.Write("<time>");
writer.WriteLine("<Date>"+(DateTime.Now.ToString("dd-MM-yy"))+"</Date>");
writer.WriteLine("<started>"+(DateTime.Now.ToString("t"))+"</started>");
temp=DateTime.Now;
writer.Close();

  在OnShutdown事务中完成的功效

  当体系要封闭时,我利用一个StreamWriter再次翻开file1.xml-它将记下体系封闭工夫,还将记下在体系启动和封闭之间所消费的工夫跨度。我在OnStart和OnShutdown事务中利用了一个temp变量。在OnStart中,它用于存储启动工夫。然后,它被再次用于OnShutdown事务中来记下体系启动和封闭之间所消费的工夫距离。

  然后,我们必需设置我们的Windows服务以便安装和运转。

  因而,起首转到计划视图中,并选择属性窗口(能够按下F4)。

  把CanStop和CanShutdown设置为true。在安装之前,我们必需要安装一个安装程序。

  右击计划视图窗口,然后选择"AddInstaller"。然后,它将显现ProjectInstaller.cs。在这个文件中,serviceInstaller1和serviceProcessInstaller1都存在。转到serviceProcessInstaller1属性处:

  ・把Account设置为LocalSystem。

  ・然后,转到serviceInstaller1属性处。

  ・把DisplayName和ServiceName设置为Monitoring。

  ・设置启动范例(StartType)为automatic。

  请参考下图:





  然后,转到VS.NET的命令提醒符下。

  在把持台下,转到服务的Debug文件夹下:

  输出"InstallUtilMonitoring.exe"

  假如它显现"CommitPhaseCompletedSuccessfully",则申明服务被乐成安装。

  然后,重启体系以启动服务。在重启以后,翻开file1.xml文件,它纪录了体系的入手下手工夫。假如封闭体系,它将纪录下体系的封闭工夫和利用体系的工夫长度。经由过程这一部分,我们已完成了纪录下体系所损耗的工夫。接上去,我们将创立一个web使用程序以便在一个Grid控件中显现xml数据。

  鄙人一部分中,我将注释怎样抽取这个xml文件数据而且在一个DataGrid控件中显现它。
<P>  4、用C#创立一个Web使用程序

  在这一部分中,我们用C#创立一个web使用程序,并定名为SystemMonitor。

  到场上面定名空间:

usingSystem.IO;
usingSystem.Xml;
usingSystem.Text;
  以后,把DataGrid和Label控件拖动到页面上,以下图所示:


  把以下代码复制到Page_Load事务中:

File.Copy("c:file1.xml","c:        emp1.xml",true);
StreamWriterwriter1=File.AppendText("c:        emp1.xml");
writer1.Write("<shutdown>undefined</shutdown>");
writer1.Write("<timespent>undefined</timespent>");
writer1.Write("</time>");
writer1.WriteLine("</times>");
writer1.Close();
DataSetds=newDataSet();
ds.ReadXml("c:        emp1.xml");
TimeSpant=newTimeSpan();
DataGrid1.DataSource=ds;
DataGrid1.DataBind();
XmlTextReaderreader=newXmlTextReader("c:        emp1.xml");
while(reader.Read())
{
 if(reader.NodeType==XmlNodeType.Element)
 {
  if(reader.Name=="timespent")
  {
   stringtemp11=reader.ReadInnerXml().ToString();
   if(temp11!="undefined")
   {
    temp11=temp11.Replace(":",".");
    temp11=temp11.Replace("","");
    duration+=Convert.ToDouble(temp11);
   }
  }
 }
}
Response.Write("TotalDurationis:");
doubletemp122=Convert.ToDouble(duration);
stringhr=temp122.ToString();
stringhrstr=hr.Substring(0,hr.IndexOf("."));
Response.Write(hrstr.ToString()+"Hours");
stringmins=hr.Substring(hr.IndexOf(".")+1,(hr.Length-hr.IndexOf(".")-1));
Response.Write(""+mins.ToString()+"Minutes");
reader.Close();
File.Delete("c:        emp1.xml");
  最初把上面的声明粘贴到Page_Load事务上部:

privatedoubleduration;
  我注释一下程序在Page_Load事务中做了甚么。

  起首,我把文件file1.xml(它包括体系准时信息)的内容复制光临时文件中。然后,我把一些标志增加到该一时文件中。以后,我把temp的内容读取到一个dataset中,最初把它绑定到一个DataGrid中。今后,我创立逻辑来查找一切消费的工夫。

  我十分但愿每一个人都能了解下面的代码。

  下面页面的输入了局大抵以下图所示:

因为各系统的API不同,代码调用API编写程序就会遇到很多不兼容的地方,比如Java改写后的Serv-U就不能在手机上执行,手机的游戏也不能直接在微机上执行。
灵魂腐蚀 该用户已被删除
沙发
发表于 2015-1-19 21:17:16 | 只看该作者
由于JSP/Servlet都是基于Java的,所以它们也有Java语言的最大优点——平台无关性,也就是所谓的“一次编写,随处运行(WORA–WriteOnce,RunAnywhere)”。除了这个优点,JSP/Servlet的效率以及安全性也是相当惊人的。
小妖女 该用户已被删除
板凳
发表于 2015-1-25 20:51:58 | 只看该作者
逐步缩小出错代码段的范围,最终确定错误代码的位置。
蒙在股里 该用户已被删除
地板
发表于 2015-2-3 23:34:12 | 只看该作者
是目前ASP在UNIX/Linux上的应用可以说几乎为0)。所以平台的局限性和ASP自身的安全性限制了ASP的广泛应用。
小女巫 该用户已被删除
5#
发表于 2015-2-9 07:16:13 | 只看该作者
弱类型造成潜在的出错可能:尽管弱数据类型的编程语言使用起来回方便一些,但相对于它所造成的出错几率是远远得不偿失的。
金色的骷髅 该用户已被删除
6#
发表于 2015-2-27 04:12:21 | 只看该作者
ASP.NET:ASP.net是Microsoft.net的一部分,作为战略产品,不仅仅是ActiveServerPage(ASP)的下一个版本;它还提供了一个统一的Web开发模型,其中包括开发人员生成企业级Web应用程序所需的各种服务。ASP.NET的语法在很大程度上与ASP兼容,同时它还提供一种新的编程模型和结构,可生成伸缩性和稳定性更好的应用程序,并提供更好的安全保护。
若相依 该用户已被删除
7#
发表于 2015-3-8 19:42:57 | 只看该作者
可以看作是VC和Java的混合体吧,尽管MS自己讲C#内核中更多的象VC,但实际上我还是认为它和Java更象一些吧。首先它是面向对象的编程语言,而不是一种脚本,所以它具有面向对象编程语言的一切特性。
飘飘悠悠 该用户已被删除
8#
发表于 2015-3-16 13:19:42 | 只看该作者
可以看作是VC和Java的混合体吧,尽管MS自己讲C#内核中更多的象VC,但实际上我还是认为它和Java更象一些吧。首先它是面向对象的编程语言,而不是一种脚本,所以它具有面向对象编程语言的一切特性。
爱飞 该用户已被删除
9#
发表于 2015-3-22 23:10:14 | 只看该作者
使用普通的文本编辑器编写,如记事本就可以完成。由脚本在服务器上而不是客户端运行,ASP所使用的脚本语言都在服务端上运行,用户端的浏览器不需要提供任何别的支持,这样大提高了用户与服务器之间的交互的速度。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-9-21 18:31

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表