App

A plataforma Devprime disponibiliza uma estratégia de arquitetura de software moderna, e o projeto App é o projeto de início da aplicação, permitindo a conectividade com outros componentes da arquitetura.

Explorando o Devprime App

O projeto Devprime App disponibiliza alguns arquivos principais, como o App.cs, App.csproj, appsettings.json e GlobalUsings.cs, conforme apresentado na imagem.

Esses arquivos são responsáveis pelas definições de inicialização da aplicação, configuração da inversão de dependência, configurações iniciais do app.net, Swagger, segurança e, principalmente, pelos parâmetros de cada adapter, que são tratados em detalhes na seção de Configurações da documentação.

Devprime architecture software diagram

Explorando o arquivo App.cs

O arquivo App.cs contém as implementações fundamentais para a inicialização da aplicação e segue um critério de ordem padrão de processamento do ASP.NET. Um ponto importante nesse contexto é a criação do Builder e do Run, assim como as injeções de dependência que conectam todo o projeto de arquitetura da aplicação.

o nome da applicação ou microsserviço é definido nesse momento na linha 23 DpApp(builder).Run("my-microsservices,(app)) e foi definindo automáticamente quando se criou o novo microsserviço utilizando o comando dp new do Devprime CLI.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
// Application Builder
var builder = WebApplication.CreateBuilder(args);

// Adding records for dependency injection. 
// This block is modified  when you run the
// dp init command to include new classes.

builder.Services.AddScoped<IPaymentRepository, PaymentRepository>();
builder.Services.AddScoped<IPaymentService, PaymentService>();
builder.Services.AddScoped<IPaymentState, PaymentState>();
builder.Services.AddMvc(o =>
{
    o.EnableEndpointRouting = false;
});

//Registering Devprime Adapters
builder.Services.AddScoped<IExtensions, Extensions>();
builder.Services.AddScoped<IEventStream, EventStream>();
builder.Services.AddScoped<IEventHandler,
Application.EventHandlers.EventHandler>();

// Application Run
await new DpApp(builder).Run("my-microsservices", (app) =>
{

    //The first stage of middleware registration
    app.UseRouting(); //Routes
    app.UseAuthentication(); //Security
    DpApp.UseDevPrimeSwagger(app); //Swagger
    app.UseAuthorization();//Security
    app.MapControllerRoute(name: "default", pattern:
    "{controller=Home}/{action=Index}/{id?}");//Routes

}, (builder) =>
{
    //The second stage of middleware registration
    DpApp.AddDevPrime(builder.Services);//Accelerators
    DpApp.AddDevPrimeSwagger(builder.Services);//Swagger
    DpApp.AddDevPrimeSecurity(builder.Services);//Security
});

Explorando o arquivo App.csproj

O arquivo App.csproj traz as dependências para os outros projetos “Adapters” e “Core” que fazem parte da arquitetura do software, bem como para o componente devprime.stack.app da Devprime Stack, que possui comportamentos inteligentes que atendem ao contexto do “App”.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<Project Sdk="Microsoft.NET.Sdk.Web">
	<PropertyGroup>
		<TargetFramework>net7.0</TargetFramework>
		<Version>1.0.0.0</Version>
	</PropertyGroup>
	<ItemGroup>
		<ProjectReference Include=
        "..\Adapters\Services\DevPrime.Services.csproj" />
		<ProjectReference Include=
        "..\Adapters\State\DevPrime.State.csproj" />
		<ProjectReference Include=
        "..\Adapters\Extensions\DevPrime.Extensions.csproj" />
		<ProjectReference Include=
        "..\Adapters\Stream\DevPrime.Stream.csproj" />
		<ProjectReference Include=
        "..\Adapters\Web\DevPrime.Web.csproj" />
		<ProjectReference Include=
        "..\Adapters\Observability\DevPrime.Observability.csproj" />
		<ProjectReference Include=
        "..\Adapters\AppCenter\DevPrime.AppCenter.csproj" />
		<ProjectReference Include=
        "..\Adapters\HealthCheck\DevPrime.HealthCheck.csproj" />
		<ProjectReference Include=
        "..\Core\Application\Application.csproj" />
		<ProjectReference Include=
        "..\Core\Domain\Domain.csproj" />
	</ItemGroup>
	<ItemGroup>
    <PackageReference Include=
    "devprime.stack.app" Version="7.0.50" />
	</ItemGroup>
</Project>

Essa é uma implementação padrão, e não há necessidade de modificar a estrutura, a menos que você queira ajustar os seguintes itens:

Tópico Descrição
TargetFramework Versão do .NET e presente em todos os projetos
Version Atualize o ID da versão pelo DevOps
PackageReference Referência ao contexto do Devprime Stack

O comando dp stack, fornecido pelo Devprime CLI, deve ser utilizado pela pessoa desenvolvedora para atualizar automaticamente a referência do Devprime em todos os projetos.

Explorando o projeto Devprime GlobalUsings.cs

A estratégia do C# para organizar de forma global os namespaces utilizados no projeto e permite que você atualize manualmente ou usando o comando dp init do Devprime CLI, se necessário.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
global using DevPrime.Stream;
global using DevPrime.Stack.Foundation.Stream;
global using DevPrime.Stack.Foundation;
global using DevPrime.Stack.App.Load;
global using Microsoft.AspNetCore.Builder;
global using Microsoft.Extensions.DependencyInjection;
global using DevPrime.Extensions;
global using Application.Interfaces.Adapters.Extensions;
global using Application.Interfaces.Adapters.State;
global using Application.Interfaces.Services;
global using Application.Services.Payment;
global using DevPrime.State.Repositories.Payment;
global using DevPrime.State.States;

Explorando o arquivo appsettings.json

A plataforma Devprime disponibiliza a possibilidade de customização por meio do arquivo de configuração, que, no ambiente de desenvolvimento, está no projeto Devprime APP e inclui itens como: APP, Web, Stream, Observability, Security, State, Services e Custom.

Acompanhe um exemplo resumido do arquivo appsettings.json. Você pode explorar de forma detalhada na seção de configurações e obter mais detalhes sobre os parâmetros de customização.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
{
  "DevPrime_App": {},
  "DevPrime_Web": {},
  "DevPrime_Stream": {},
  "DevPrime_Observability": {},
  "DevPrime_Security": {},
  "DevPrime_Services": {},
  "DevPrime_State": {},
  "DevPrime_Custom": {}
}
Configurações Detalhes
APP Parâmetros principais da aplicação
Web Parâmetros do Adapter Web
Stream Parâmetros do Adapter Stream
Observability Parâmetros do Adapter Observability
Security Parâmetros do Adapter Security
State Parâmetros do Adapter State
Services Parâmetros do Adapter Services
Custom Parâmetros personalizados para a aplicação

Explore outras tecnologias relacionadas

Última modificação October 26, 2023 (795e8af6)