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.
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)