> For the complete documentation index, see [llms.txt](https://docs.skail.dev/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.skail.dev/quickstart/readme/c-.net.md).

# C# .NET

{% hint style="success" icon="medapps" %}
**Quer acelerar seu primeiro deploy?**

[Clique aqui](https://skailhq.com/) para rodar esse tutorial acompanhado por um arquiteto skail gratuitamente!
{% endhint %}

## O que vamos fazer

* Criar sua conta no skail<br>
* Rodar um Hello World no skail<br>
* Ver exatamente o que aconteceu no monitor do skail<br>

**Tempo estimado:** 5-10 minutos

## Antes de mais nada: Pré-requisitos

* [ ] NET 8.0+ instalado ([orientações oficiais](https://dotnet.microsoft.com/en-us/download) da Microsoft)<br>
* [ ] Visual Studio ou VS Code<br>
* [ ] **Conta na plataforma skail**\
  \ <i class="fa-hand-peace">:hand-peace:</i> Por enquanto, a criação de conta é realizada exclusivamente pelo nosso time de parcerias. \
  Solicite uma demo e conta de teste enviando um email em <parcerias@skailhq.com>

## Mão na massa

Antes de iniciar, [acesse sua conta do skail.](https://app.skailhq.com/)

{% stepper %}
{% step %}

### Crie um projeto&#x20;

Um projeto é onde você organiza suas aplicações (workloads) dentro do skail.

[Clique em novo projeto](https://app.skailhq.com/projects) e escolha um nome que identifique facilmente o conjunto de funções/códigos que você vai rodar no skail.

No nosso exemplo usaremos **HelloWorld:**

<figure><img src="/files/jXMb6HKMNqKQTkYYScAF" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}

### Crie um ambiente (environment)

Antes de rodar sua aplicação, você precisa criar um environment (ambiente). Ele define onde seu código vai rodar (por exemplo: dev, staging ou produção).

No menu Environment, clique em Novo Environment.

<figure><img src="/files/60LC4TwwVG1iiWNbZwkp" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}

### Crie uma aplicação (workload)

Um workload é a sua aplicação (ou parte dela) rodando dentro do skail. É ele que executa suas funções e seu código em geral.

Deixe as opções padrão e apenas escolha um nome para sua aplicação. Usaremos "**PrimeiroAppV1**" no nosso exemplo.

<figure><img src="/files/nKlhPOwFvFifCFRZo1sS" alt=""><figcaption></figcaption></figure>

{% endstep %}

{% step %}

### Instale o template do skail e crie um projeto .NET

Baixe o template [aqui](https://github.com/skailhq/.github/tree/main/Templates/DotNet)

Execute o comando abaixo para instalar o template:<br>

```bash
dotnet new install SkailHQ.ApplicationTemplate.CSharp.1.0.0.nupkg
```

Após instalar o template excute o comando abaixo na pasta em que se deseja criar o projeto o projeto baseado no template do skail:

```bash
dotnet new skail -n HelloWorld 
```

{% endstep %}

{% step %}

### Crie o código do seu HelloWorld

```csharp
public class HelloWorld
{
    [SkailFunction]
    public async SkailTask HelloWorld() 
    {
        return;
    }
}
```

{% endstep %}

{% step %}

### Configure as variáveis de ambiente base do skail

Antes de executar a aplicação, configure as variáveis de ambiente usadas pelo skail Runtime para identificar o ambiente, o workload e a chave de autenticação.

<pre class="language-dotenv"><code class="lang-dotenv"><strong>SKAIL_SIDECAR=https://&#x3C;sidecar-do-ambiente-skail>
</strong>SKAIL_WORKLOAD=&#x3C;workload-slug>:&#x3C;workload-version>
SKAIL_NAMESPACE=&#x3C;namespace-do-ambiente-skail>
SKAIL_KEY=&#x3C;skail-api-key>
</code></pre>

* SKAIL\_SIDECAR: URL do gateway do ambiente skail.
* SKAIL\_WORKLOAD: identificação do workload publicado, no formato \<nome>:\<versão>.
* SKAIL\_NAMESPACE: namespace do ambiente skail associado ao workload.
* SKAIL\_KEY: chave de autenticação usada pelo runtime para se comunicar com o skail. Trate SKAIL\_KEY como segredo e evite versionar chaves reais em arquivos de exemplo.<br>

Esses valores são fornecidos pelo time skail ou pela configuração do workload.&#x20;

{% endstep %}

{% step %}

### Chame sua aplicação skail

Depois de publicar o workload, vamos executar a função do seu app usando o endpoint de `trigger` do skail.

O formato da URL é:

```http
POST /trigger/{workload_nome}/{workload_versao}/{workload_funcao}/{id_unico}
```

Onde:

* workload\_nome: nome do workload
* workload\_versap: versão do workload que se deseja executar
* workload\_funcao: nome da função marcada com \[SkailFunction]
* id\_externo: identificador único da execução

**Exemplo com cURL:**

```bash
curl -X POST "https://SEU_SKAIL_BASE_URL/trigger/helloworld/v0.0.1/HelloWorld/00000000-0000-0000-0000-000000000000"
-H "Accept: application/json"
-H "Content-Type: application/json"
-H "skail-key: SUA_SKAIL_KEY"
-H "Skail-namespace: SEU_NAMESPACE"
-d '[]'
```

{% endstep %}

{% step %}

### Veja exatamente o que aconteceu em produção

Vamos abrir o monitor do skail para ver exatamente como sua execução se comportou em produção, sem precisar configurar ou implementar nada além do nosso código.
{% endstep %}
{% endstepper %}
