会 员 登 录
热 门 文 章
相 关 文 章
- 没有文章
Tags(标签)
整合Web和Windows服务3
生成Windows服务
首先, 在Visual Studio .NET的另一个实例中创建一个新的Windows服务项目,然后将其命名为InvokingASPNetService.cs。通过按以下方式添加Main方法来确保该服务将正确启动:
public static void Main()
{
ServiceBase.Run(new InvokingASPNetService());
}
现在,为下列命名空间添加using语句:
using System.Configuration;
using System.Globalization;
通过右键单击InvokingASPNetService.cs的设计表面并选择“Add Installer”,添加该服务的安装程序。您应当将所创建的serviceInstaller1 的StartType属性更改为Automatic,以便Windows服务在Windows启动时启动。将serviceInstaller1 的 ServiceName 属性设置为InvokingASPNetService,以便在服务管理器中适当地命名它,然后将serviceProcessInstaller1 Account 属性更改为Local Service。
第三步,创建对InvokingASPNetService Web服务的Web引用,然后将其命名为JobRunWebService。将JobRunWebService URL Behavior属性更改为Dynamic,以便让Visual Studio .NET自动用Web引用的URL来扩充app.config。所生成的代理类将在该配置文件中查找Web服务的URL,从而使您无须重新编译即可将 Windows服务引导至不同的终结点。
第四,在Windows服务中创建一个方法,以便在Web服务每次被调用时运行它。该方法如下所示:
private void RunCommands()
{
JobRunWebService.JobRunInterval objJob =
new JobRunWebService.JobRunInterval();
objJob.RunJob();
}
如您所见,您将声明Web服务代理,并且就像创建其他任何.NET对象一样创建它。然后,调用Web服务的RunJob方法,以便在远程Web服务器上运行作业。请注意,每个步骤都与使用本地类没有什么不同,即使您使用的是Web服务。
第五,您需要在Windows服务中调用RunCommands函数。您应当基于您希望在远程服务器上运行作业的频率,按照固定的时间间隔调用该方法。使用System.Timers.Timer对象来确保RunCommands函数按照正确的时间间隔运行。Timer的Elapsed事件将使您可以在每个时间间隔流逝之后触发您指定的任何函数(请注意,时间间隔长度是在Interval属性中指定的)。您将使用被触发的函数来调用RunCommands函数,以便可以自动执行该功能。默认情况下,该timer类只在它首次到期时才会触发事件,因此您需要通过将它的AutoReset属性设置为true来确保它每次都反复地重置它本身。您应当在服务级别对其进行声明,以便该服务的任何函数都可以引用它:
private Timer timer;
接下来,创建相应的函数以初始化timer并设置它的所有相关值:
private void InitializeTimer()
{
if (timer == null)
首先, 在Visual Studio .NET的另一个实例中创建一个新的Windows服务项目,然后将其命名为InvokingASPNetService.cs。通过按以下方式添加Main方法来确保该服务将正确启动:
public static void Main()
{
ServiceBase.Run(new InvokingASPNetService());
}
现在,为下列命名空间添加using语句:
using System.Configuration;
using System.Globalization;
通过右键单击InvokingASPNetService.cs的设计表面并选择“Add Installer”,添加该服务的安装程序。您应当将所创建的serviceInstaller1 的StartType属性更改为Automatic,以便Windows服务在Windows启动时启动。将serviceInstaller1 的 ServiceName 属性设置为InvokingASPNetService,以便在服务管理器中适当地命名它,然后将serviceProcessInstaller1 Account 属性更改为Local Service。
第三步,创建对InvokingASPNetService Web服务的Web引用,然后将其命名为JobRunWebService。将JobRunWebService URL Behavior属性更改为Dynamic,以便让Visual Studio .NET自动用Web引用的URL来扩充app.config。所生成的代理类将在该配置文件中查找Web服务的URL,从而使您无须重新编译即可将 Windows服务引导至不同的终结点。
第四,在Windows服务中创建一个方法,以便在Web服务每次被调用时运行它。该方法如下所示:
private void RunCommands()
{
JobRunWebService.JobRunInterval objJob =
new JobRunWebService.JobRunInterval();
objJob.RunJob();
}
如您所见,您将声明Web服务代理,并且就像创建其他任何.NET对象一样创建它。然后,调用Web服务的RunJob方法,以便在远程Web服务器上运行作业。请注意,每个步骤都与使用本地类没有什么不同,即使您使用的是Web服务。
第五,您需要在Windows服务中调用RunCommands函数。您应当基于您希望在远程服务器上运行作业的频率,按照固定的时间间隔调用该方法。使用System.Timers.Timer对象来确保RunCommands函数按照正确的时间间隔运行。Timer的Elapsed事件将使您可以在每个时间间隔流逝之后触发您指定的任何函数(请注意,时间间隔长度是在Interval属性中指定的)。您将使用被触发的函数来调用RunCommands函数,以便可以自动执行该功能。默认情况下,该timer类只在它首次到期时才会触发事件,因此您需要通过将它的AutoReset属性设置为true来确保它每次都反复地重置它本身。您应当在服务级别对其进行声明,以便该服务的任何函数都可以引用它:
private Timer timer;
接下来,创建相应的函数以初始化timer并设置它的所有相关值:
private void InitializeTimer()
{
if (timer == null)
附件:
没有附件
0
票
顶一下
票
顶一下
0
票
踩一下
票
踩一下
| 文 章 评 论 | ||||||||
| ||||||||



您现在的位置: