Com o lançamento do .NET Core em 2014, se tornou possível desenvolver aplicações usando o framework em outros sistemas operacionais, inclusive o Linux.
Com a previsão de lançamento da versão 3, ainda em preview, muitas melhorias e integrações estão por vir.
.NET Core
O .NET Core é uma plataforma de desenvolvimento de código aberto de uso geral mantida pela Microsoft e pela comunidade .NET no GitHub. É uma plataforma interoperável (compatível com Windows, macOS e Linux) que pode ser usada no desenvolvimento de dispositivos, na nuvem e em aplicativos de IoT.
A versão 2.2 é a mais recente. Mas, em estado preview, está sendo lançada o .NET Core 3.x com diversas funcionalidades. Inclusive, um recurso que permite integração de aplicações .NET Core com o systemd – em resumo, o systemd permite funcionalidade semelhante ao Windows Services.
.NET Core e o systemd Linux
Este recurso foi contribuído por Tom Deseyn da Red Hat. Sendo possível criar um aplicativo .NET Core que possa ser executado como um serviço systemd. A integração torna o systemd capaz de saber quando o aplicativo é iniciado, está sendo interrompido. Além disso, configura logs para serem enviados de forma que o journald (o sistema de registro do systemd) compreenda as prioridades do log.
Assim, se você usa os aplicativos .NET Core no Linux, acredito que esse recurso pode aumentar a integração com o sistema. Para mais detalhes e exemplo de execução de uma aplicação .NET Core com systemd, veja a publicação oficial no blog de desenvolvedores da Microsoft.
Mais sobre o systemd
O systemd é um sistema de inicialização carregado através do processo init (o primeiro processo do Linux, depois que o Kernel é iniciado) pelo bootloader do sistema. Além disso, o systemd se tornou, há alguns anos, o novo padrão de inicialização nos principais sistemas Linux.
Muito além do kernel Linux – conheça todos os elementos que formam a estrutura do sistema
Em detrimento do uso do SysVinit (sistema de inicialização substituído pelo systemd), o novo padrão de inicialização prover melhorias importantes sobre ele. Em resumo, o SysVinit, carrega os serviços em séries, carregando os serviços ordenadamente. Além disso, não inicia processos em paralelos; iniciando-os um de cada vez – ficando mais lento para carregar todos os processos do sistema.
Já o systemd, não utiliza mais script para inicialização (como o SysVinit), apesar de ainda poder usá-los e gerencia-los. Ao contrário da falta de paralelalismo, no carregamento dos processos do SysVinit, o systemd consegue carregar processos em paralelo. Assim, consegue carregá-los simultâneos e trabalhar com o kernel para encaminhamento de sinais que farão o serviço ser iniciado. Para mais informações, recomendo a leitura do artigo do PabloHess no Blog da IBM.
Comandos systemctl
O systemctl é ferramenta a nível de usuário que pode gerenciar os serviços controlados pelo sistema de inicialização systemd. Por exemplo, como você pode reiniciar, parar e iniciar um serviço como o SSH. Em vez do uso do ‘service’ ou ‘invoke.rc-d’ – usados no SysVinit – você deve usar o systemctl.
Então, para conhecer e aprender os principais comandos do systemctl, assista o vídeo:
Via | Devblogs Microsoft
Referências
– Sobre o .NET Core
– Install .NET Core SDK on Linux Ubuntu 18.04 – x64