Compartilhar via


Introdução aos Aplicativos de Serviço do Windows

Os serviços do Microsoft Windows, anteriormente conhecidos como serviços NT, permitem que você crie aplicativos com executáveis de execução demorada, que são executados em suas próprias sessões do Windows.Esses serviços podem ser iniciados automaticamente quando o computador inicializa, podem ser pausados e reiniciados, e não mostram nenhuma interface para o usuário.Esses recursos tornam os serviços ideais para uso em um servidor, ou sempre que você precisar de uma funcionalidade de execução demorada que não interfira os outros usuários que trabalham no mesmo computador.Você também pode executar serviços em um contexto de segurança de uma conta de usuário específica que seja diferente do usuário com logon feito, ou da conta padrão do computador.Para obter mais informações sobre serviços e sessões do Windows, consulte a seção Sobre Serviços na documentação da plataforma SDK no MSDN Library.

Observação:

O modelo Windows Service e a funcionalidade associada não está disponível na versão padrão do Visual Studio.

Você pode criar serviços facilmente, criando um aplicativo que é instalado como um serviço.Por exemplo, suponha que você queira monitorar dados do contador de desempenho e reagir aos valores limite.Você pode escrever um aplicativo de serviço do Windows que escuta os dados do contador de desempenho, implanta a aplicação, e começa a coleta e análise de dados.

Você cria seu serviço como um projeto Microsoft Visual Studio, definindo dentro dele código que controla os comandos que podem ser enviados para o serviço e quais ações devem ser tomada quando esses comandos são recebidos.Os comandos que podem ser enviados para um serviço incluem o iniciar, pausar, continuar, e parar o serviço; você também pode executar comandos personalizados.

Depois de você criar e compilar o seu aplicativo, você pode instalá-lo executando o utilitário de linha de comando InstallUtil.exe, passando o caminho para o arquivo executável do serviço, ou utilizando os recursos de implantação do Visual Studio.Você poderá usar o Services Control Manager para iniciar, parar, pausar, continuar, e configurar seu serviço.Você também pode realizar muitas das mesmas tarefas no Serviços nó in Gerenciador de servidores ou usando o ServiceController classe.

Aplicativos de serviço vs.Outros aplicativos do Visual Studio

Aplicativos de Serviço funcionam de forma diferente de muitos outros tipos de projeto em vários aspectos:

  • O arquivo executável compilado que um projeto de aplicativo de serviço cria deve ser instalado no servidor antes do projeto poder funcionar de uma maneira significativa.Você não pode depurar ou executar um aplicativo de serviço pressionando F5 ou F11; você não pode executar um serviço de modo imediato, ou navegar pelo seu código.Ao contrário, você deve instalar e iniciar o seu serviço, e então, anexar um depurador para o processo do serviço.Para obter mais informações, consulte Como: depurar Windows serviço Applications.

  • Diferentemente de alguns tipos de projetos, você deve criar componentes de instalação para aplicativos de serviço.Os componentes de instalação instalam e registram o serviço no servidor e criam uma entrada para o serviço com o Services Control Manager do Windows.Para obter mais informações, consulte Como: Adicionar instaladores ao seu aplicativo de serviço.

  • The Main método para seu aplicativo de serviço deve emitir o comando Run para os serviços que o seu projeto contém. The Run método carrega os serviços para o Gerenciador de controle de serviços no servidor apropriado.Se você usar o modelo de projeto Windows Services esse método será escrito para você automaticamente.Observe que carregar um serviço não é a mesma coisa que iniciar o serviço.Consulte "Tempo de Vida do Serviço" abaixo para obter mais informações.

  • Os aplicativos de serviço do Windows são executados em uma estação de janela diferente da estação interativa do usuário com logon feito.Uma estação de janela é um objeto seguro que contém uma área de transferência, um conjunto de átomos globais, e um grupo de objetos da área de trabalho.Pelo fato da estação do serviço do Windows não ser uma estação interativa, caixas de diálogo disparadas em um aplicativo de serviço do Windows não serão vistas e podem fazer com que seu programa pare de responder.Da mesma forma, mensagens de erro devem ser registradas no log de eventos do Windows, ao invés de disparadas na interface do usuário.

    As classes de serviço do Windows suportadas pela .NET Framework não suportam interação com estações interativas, ou seja, o usuário com logon feito.A .NET Framework também não inclui classes que representam estações e áreas de trabalho.Se o seu serviço do Windows deve interagir com outras estações, você precisará acessar a API não gerenciada do Windows.Para obter mais informações, consulte Estações de Janela e Áreas de trabalho na documentação da Plataforma SDK.

    A interação do serviço do Windows com o usuário ou outras estações deve ser projetada cuidadosamente para incluir cenários tais como aqueles em que não há usuário com o logon feito, ou aqueles em que o usuário possui um conjunto inesperado de objetos na sua área de trabalho.Em alguns casos, pode ser mais apropriado escrever um aplicativo do Windows que é executado sob o controle do usuário.

  • Aplicativos de serviço do Windows são executados em seus próprios contextos de segurança e são iniciados antes do usuário realizar o logon no Windows do computador onde eles estão instalados.Você deve planejar cuidadosamente qual conta de usuário terá o serviço sendo executado dentro dela; um serviço sendo executado na conta do sistema tem mais permissões e privilégios que uma conta de usuário.

Tempo de Vida do Serviço

Um serviço passa por diversos estados internos em sua vida.Primeiro, o serviço é instalado no sistema no qual ele será executado.Esse processo executa os instaladores para o projeto de serviço e carrega o serviço no Se rvices Control Manager para aquele computador.O Services Control Manager é o utilitário central fornecido pelo Windows para administrar serviços.

Depois que o serviço é carregado, ele deve ser iniciado.Iniciando o serviço permite que ele comece a funcionar.Você pode iniciar um serviço do Gerenciador de controle de serviços, from Gerenciador de servidores, ou de código, chamando o Start método. The Start método passa o processamento do aplicativo OnStart método e processa qualquer código que você tenha definido ali.

Um serviço em execução poderá existir nesse estado indefinidamente até que ele seja interrompido ou pausado, ou até que o computador desligue.Um serviço pode existir em um dos três estados básico: Running, Paused, ou Stopped. O serviço também pode informar o estado de um comando pendente: ContinuePending, PausePending, StartPending, ou StopPending. Esses status indicam que um comando foi emitido, sistema autônomo um comando para pausar um serviço em execução, mas foi não executado ainda.Você pode consultar o Status para determinar qual estado um serviço está em ou usar o WaitForStatus para executar uma ação quando algum desses estados ocorre.

Você pode pausar, parar, ou continuar um serviço do Services Control Manager, do Server Explorer, ou chamando métodos do código.Cada uma dessas ações pode chamar um procedimento associado no serviço (OnStop, OnPause, ou OnContinue), no qual você pode definir processamentos adicionais a serem executadas quando o serviço de estado é alterado.

Tipos de Serviços

Há dois tipos de serviços que você pode criar no Visual Studio usando o .NET Framework.Os serviços que são o único serviço em um processo são considerados do tipo de Win32OwnProcess. Os serviços que compartilham um processo com outro serviço são considerados do tipo de Win32ShareProcess. Você pode recuperar o tipo de serviço consultando o ServiceType propriedade.

Ocasionalmente, você poderá encontrar outros tipos de serviço se você consultar serviços existentes que não foram criados no Visual Studio.Para obter mais informações sobre elas, consulte o ServiceType.

Serviços e o Componente ServiceController

The ServiceController componente é usado para se conectar a um serviço instalado e manipular o seu estado; usando um ServiceController componente, você pode iniciar e interromper um serviço, pausar e continuar o seu funcionamento e enviar comandos personalizados para um serviço. No entanto, você não precisa usar um ServiceController componente quando você cria um aplicativo de serviço. Na verdade, na maioria dos casos seu ServiceController componente deve existir em um aplicativo separado do aplicativo de serviço do Windows que define seu serviço.

Para obter mais informações sobre o ServiceController componente, consulte Monitorando Windows Services.

Implantando e Instalando Serviços

O Visual Studio dispõe de componentes de instalação que podem instalar recursos associados com seus aplicativos de serviço.Os componentes de instalação registram um serviço individual no sistema para o qual ele está sendo instalado, e permite que o Services Control Manager saiba que o serviço existe.

Depois de você adicionar instaladores para seu aplicativo, o próximo passo é criar um projeto de instalação que irá instalar os arquivos de projeto compilados e rodar os instaladores necessários para instalar seu serviço.Para criar um projeto de instalação completo, você deve adicionar a saída do projeto do serviço para o projeto de instalação e depois adicionar uma ação personalizada para ter seu serviço instalado.Para obter mais informações sobre projetos de instalação, consulte Projetos de instalação. Para obter mais informações sobre ações personalizadas, consulte Demonstra Passo a passo: Criando uma ação Personalizar.

Requisitos

  • Serviços devem ser criados em um Serviço do Windows projeto de aplicativo ou outro projeto .NET estrutura–Enabled que cria um arquivo .exe quando criado e herda a ServiceBase classe.

  • Projetos contendo serviços do Windows devem ter componentes de instalação para o projeto e seus serviços.Isso pode ser facilmente conseguido a partir da janela Properties.Para obter mais informações, consulte Como: Adicionar instaladores ao seu aplicativo de serviço.

Consulte também

Tarefas

Como: Criar Windows Services

Como: Instalar e desinstalar Serviços

Como: Inicie os serviços

Como: depurar Windows serviço Applications

Demonstra Passo a passo: Criando um Aplicativo Windows Service no Designer de Componentes

Como: Adicionar instaladores ao seu aplicativo de serviço

Demonstra Passo a passo: Criando uma ação Personalizar

Conceitos

Arquitetura de Programação de Aplicativos de Serviço

Projetos de instalação

Outros recursos

Aplicativos Windows Service