在WindowsAzure上部署WindowsService程序并启动

 

在WindowsAzure上部署WindowsService程序并启动

 

    当你已经在WindowsAzure上部署了一个WebRole后,发现随着使用量的增多,在数据库中会存在很多的无效数据,于是,会打算定期删除数据库中的无效数据。此时,就需要在Azure的虚拟机上部署一个自己的小程序来实现此动作,当然,实现此删除数据的小程序多种多样,部署方式也多样,此文仅仅是虚拟此需求来提出一种在WindowsAzure上部署自己的WindowService的方法。

 

1、 在一个WebRole的应用中,添加WindowsService程序。

在WindowsAzure上部署WindowsService程序并启动_第1张图片

如上图,添加一个MyApp的文件夹,把已经编译好的AgentService.exe的WindowsService程序复制到该文件夹中,同时,再添加一个installsvc.cmd文件来安装该WindowsService程序。

installsvc.cmd文件内容如下:

%WinDir%\Microsoft.NET\Framework\v4.0.30319\Installutil.exe MyApp\AgentService.exe

NET START AgentService

 

2、 设置MyApp文件夹中的文件的“复制到输出目录”为“常复制”。

3、 启动该WindowsService程序。

在.csdef文件中添加添加一个Task,用它来调用安装服务的脚本。

<?xml version="1.0" encoding="utf-8"?>
<ServiceDefinition name="WindowsAzureProject1" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition">
  <WebRole name="MvcWebRole1" vmsize="Small">
    <Sites>
      <Site name="Web">
        <Bindings>
          <Binding name="Endpoint1" endpointName="Endpoint1" />
        </Bindings>
      </Site>
    </Sites>
    <Endpoints>
      <InputEndpoint name="Endpoint1" protocol="http" port="80" />
    </Endpoints>
    <Imports>
      <Import moduleName="Diagnostics" />
    </Imports>
    <Startup>
      <Task commandLine="MyApp\installsvc.cmd" executionContext="elevated" taskType="background" />
    </Startup>
  </WebRole>
</ServiceDefinition>


 

现在就可以把该WebRole上传至WindowsAzure上,同时在该Role的实例虚拟机上也注册和启动了我们的WindowsService程序。

 

另外,在Azure Role节点中添加如下的节点,可以提高Role的执行权限,用于解决一些因为权限不足的问题。

  <WebRole name="MvcWebRole1" vmsize="Small">
    <Runtime executionContext="elevated"></Runtime>
  </WebRole>


 

参考文章:

http://blogs.msdn.com/b/luispanzano/archive/2011/03/19/instalar-un-servicio-windows-en-azure.aspx

 

 

你可能感兴趣的:(数据库,虚拟机,import,encoding,binding,Diagnostics)