App
The Devprime platform provides a modern software architecture strategy, and the App project is the initial design of the application, allowing connectivity with other components of the architecture.
Exploring the Devprime App
The Devprime App project provides some core files, such as App.cs, App.csproj, appsettings.json, and GlobalUsings.cs, as shown in the image.
These files are responsible for the application initialization settings, dependency inversion configuration, initial app.net configurations, Swagger, security and, mainly, the parameters of each adapter, which are treated in detail in the Settings section of the documentation.

Exploring the file App.cs
The file App.cs
contains the fundamental implementations for the application initialization and follows a standard ASP.NET processing order criterion. An important point in this context is the creation of the Builder and Run, as well as the dependency injections that connect the entire application architecture project.
the name of the application or microservice is defined at that moment in line 23 DpApp(builder).Run("my-microsservices,(app))
and was automatically defined when the new microservice was created using the command dp new
of the 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
});
|
Exploring the file App.csproj
The file App.csproj
brings the dependencies for the other “Adapters” and “Core” projects that are part of the software architecture, as well as for the component devprime.stack.app
of the Devprime Stack, which has intelligent behaviors that meet the context of the “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>
|
This is a default implementation, and there is no need to modify the structure unless you want to adjust the following items:
Topic |
Description |
TargetFramework |
.NET version and present in all projects |
Version |
Update the release ID via DevOps |
PackageReference |
Devprime Stack Context Reference |
The dp stack
command, provided by the Devprime CLI, should be used by the developer to automatically update the Devprime reference in all projects.
Exploring the Devprime project GlobalUsings.cs
The C# strategy for globally organizing the namespaces used in the project and allows you to update manually or by using the dp init
from the Devprime CLI, if needed.
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;
|
Exploring the file appsettings.json
The Devprime platform provides the possibility of customization through the configuration file, which, in the development environment, is in the Devprime APP project and includes items such as: APP, Web, Stream, Observability, Security, State, Services and Custom.
Follow a summary example from the file appsettings.json
. You can explore in detail in the settings section and get more details about the customization parameters.
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": {}
}
|
Settings |
Details |
APP |
Main Application Parameters |
Web |
Adapter Web Parameters |
Stream |
Adapter Stream Parameters |
Observability |
Adapter Observability Parameters |
Security |
Adapter Security Parameters |
State |
Adapter State Parameters |
Services |
Adapter Services Parameters |
Custom |
Customized parameters for the application |
Explore other related technologies
Last modified November 20, 2024 (61099f59)