Browse Source

Add `Bootstrap-Modules.md`

pull/12291/head
maliming 4 years ago
parent
commit
58227186f8
No known key found for this signature in database GPG Key ID: 96224957E51C89E
  1. 128
      docs/en/Bootstrap-Modules.md
  2. 22
      docs/en/Getting-Started-AspNetCore-Application.md
  3. 4
      docs/en/docs-nav.json

128
docs/en/Bootstrap-Modules.md

@ -0,0 +1,128 @@
# Bootstrap Modules
ABP framework can be bootstrapped in various applications. like ASP NET Core or Console, WPF, etc.
Modules can be started sync or async, Corresponds to various event methods in the module. We recommend using **async**, Especially if you want to make async calls in the module's methods.
The `PreConfigureServices`, `ConfigureServices`, `PostConfigureServices`, `OnPreApplicationInitialization`, `OnApplicationInitialization`, `OnPostApplicationInitialization` methods of module have the Async version.
> Async methods automatically call sync methods by default.
If you use async methods in your module, please keep the same sync methods for compatibility.
````csharp
public async override Task OnApplicationInitializationAsync(ApplicationInitializationContext context)
{
await AsyncMethod();
}
public override void OnApplicationInitialization(ApplicationInitializationContext context)
{
AsyncHelper.RunSync(() => OnApplicationInitializationAsync(context));
}
````
## ASP NET Core
Bootstrap ABP by using [WebApplication](https://docs.microsoft.com/en-us/dotnet/api/microsoft.aspnetcore.builder.webapplication?view=aspnetcore-6.0)
````csharp
var builder = WebApplication.CreateBuilder(args);
builder.Host.AddAppSettingsSecretsJson()
.UseAutofac();
await builder.Services.AddApplicationAsync<MyProjectNameWebModule>();
var app = builder.Build();
await app.InitializeApplicationAsync();
await app.RunAsync();
````
## Console
Bootstrap ABP in Console App.
````csharp
var abpApplication = await AbpApplicationFactory.CreateAsync<MyProjectNameModule>(options =>
{
options.UseAutofac();
});
await _abpApplication.InitializeAsync();
var helloWorldService = _abpApplication.ServiceProvider.GetRequiredService<HelloWorldService>();
await helloWorldService.SayHelloAsync();
````
Bootstrap ABP by using [HostedService](https://docs.microsoft.com/en-us/aspnet/core/fundamentals/host/hosted-services?view=aspnetcore-6.0&tabs=visual-studio#ihostedservice-interface)
````csharp
public class MyHostedService : IHostedService
{
private IAbpApplicationWithInternalServiceProvider _abpApplication;
private readonly IConfiguration _configuration;
private readonly IHostEnvironment _hostEnvironment;
public MyHostedService(IConfiguration configuration, IHostEnvironment hostEnvironment)
{
_configuration = configuration;
_hostEnvironment = hostEnvironment;
}
public async Task StartAsync(CancellationToken cancellationToken)
{
_abpApplication = await AbpApplicationFactory.CreateAsync<MyProjectNameModule>(options =>
{
options.Services.ReplaceConfiguration(_configuration);
options.Services.AddSingleton(_hostEnvironment);
options.UseAutofac();
options.Services.AddLogging(loggingBuilder => loggingBuilder.AddSerilog());
});
await _abpApplication.InitializeAsync();
var helloWorldService = _abpApplication.ServiceProvider.GetRequiredService<HelloWorldService>();
await helloWorldService.SayHelloAsync();
}
public async Task StopAsync(CancellationToken cancellationToken)
{
await _abpApplication.ShutdownAsync();
}
}
````
## WPF
Bootstrap ABP on [OnStartup](https://docs.microsoft.com/en-us/dotnet/api/system.windows.application.onstartup?view=windowsdesktop-6.0) method.
````csharp
public partial class App : Application
{
private IAbpApplicationWithInternalServiceProvider _abpApplication;
protected async override void OnStartup(StartupEventArgs e)
{
_abpApplication = await AbpApplicationFactory.CreateAsync<MyProjectNameModule>(options =>
{
options.UseAutofac();
options.Services.AddLogging(loggingBuilder => loggingBuilder.AddSerilog(dispose: true));
});
await _abpApplication.InitializeAsync();
_abpApplication.Services.GetRequiredService<MainWindow>()?.Show();
}
protected async override void OnExit(ExitEventArgs e)
{
await _abpApplication.ShutdownAsync();
}
}
````

22
docs/en/Getting-Started-AspNetCore-Application.md

@ -77,20 +77,17 @@ using BasicAspNetCoreApplication;
var builder = WebApplication.CreateBuilder(args);
builder.Services.ReplaceConfiguration(builder.Configuration);
builder.Services.AddApplication<AppModule>();
await builder.Services.AddApplicationAsync<AppModule>();
var app = builder.Build();
app.InitializeApplication();
app.Run();
await app.InitializeApplicationAsync();
await app.RunAsync();
````
``builder.Services.AddApplication<AppModule>();`` adds all services defined in all modules starting from the ``AppModule``.
``builder.Services.AddApplicationAsync<AppModule>();`` adds all services defined in all modules starting from the ``AppModule``.
``app.InitializeApplication()`` initializes and starts the application.
``app.InitializeApplicationAsync()`` initializes and starts the application.
## Run the Application!
@ -128,15 +125,12 @@ var builder = WebApplication.CreateBuilder(args);
builder.Host.UseAutofac(); //Add this line
builder.Services.ReplaceConfiguration(builder.Configuration);
builder.Services.AddApplication<AppModule>();
await builder.Services.AddApplicationAsync<AppModule>();
var app = builder.Build();
app.InitializeApplication();
app.Run();
await app.InitializeApplicationAsync();
await app.RunAsync();
````

4
docs/en/docs-nav.json

@ -426,6 +426,10 @@
"text": "Basics",
"path": "Module-Development-Basics.md"
},
{
"text": "Bootstrap",
"path": "Bootstrap-Modules.md"
},
{
"text": "Plug-In Modules",
"path": "PlugIn-Modules.md"

Loading…
Cancel
Save