Browse Source

Revise the Module-Development-Basics.md document.

pull/12291/head
Halil İbrahim Kalkan 5 years ago
parent
commit
554960d596
  1. 41
      docs/en/Module-Development-Basics.md

41
docs/en/Module-Development-Basics.md

@ -59,13 +59,15 @@ public class BlogModule : AbpModule
} }
```` ````
> `ConfigureServices` method has an asynchronous version too: `ConfigureServicesAsync`. If you want to make asynchronous calls (use the `await` keyword) inside this method, override the asynchronous version instead of the synchronous one. If you override both asynchronous and synchronous versions, only the asynchronous version will be executed.
See the [Configuration](Configuration.md) document for more about the configuration system. See the [Configuration](Configuration.md) document for more about the configuration system.
#### Pre & Post Configure Services #### Pre & Post Configure Services
``AbpModule`` class also defines ``PreConfigureServices`` and ``PostConfigureServices`` methods to override and write your code just before and just after ``ConfigureServices``. Notice that the code you have written into these methods will be executed before/after the ``ConfigureServices`` methods of all other modules. ``AbpModule`` class also defines ``PreConfigureServices`` and ``PostConfigureServices`` methods to override and write your code just before and just after ``ConfigureServices``. Notice that the code you have written into these methods will be executed before/after the ``ConfigureServices`` methods of all other modules.
> These methods have Async versions too, and if you want to make asynchronous calls inside these methods, override the asynchronous versions instead of the synchronous ones. > These methods have asynchronous versions too. If you want to make asynchronous calls inside these methods, override the asynchronous versions instead of the synchronous ones.
### Application Initialization ### Application Initialization
@ -73,37 +75,48 @@ Once all the services of all modules are configured, the application starts by i
#### OnApplicationInitialization Method #### OnApplicationInitialization Method
You can override ``OnApplicationInitialization`` method to execute code while application is being started. Example: You can override ``OnApplicationInitialization`` method to execute code while application is being started.
> These methods have Async versions too, and if you want to make asynchronous calls inside these methods, override the asynchronous versions instead of the synchronous ones. **Example:**
````C# ````C#
public class BlogModule : AbpModule public class BlogModule : AbpModule
{ {
// Asynchronous methods call synchronous methods by default, You only need to implement one of them. public override void OnApplicationInitialization(
ApplicationInitializationContext context)
public override Task OnApplicationInitializationAsync(ApplicationInitializationContext context)
{ {
var myService = context.ServiceProvider.GetService<MyService>(); var myService = context.ServiceProvider.GetService<MyService>();
await myService.DoSomethingAsync(); myService.DoSomething();
} }
}
````
public override void OnApplicationInitialization(ApplicationInitializationContext context) `OnApplicationInitialization` method has an asynchronous version too. If you want to make asynchronous calls (use the `await` keyword) inside this method, override the asynchronous version instead of the synchronous one.
**Example:**
````csharp
public class BlogModule : AbpModule
{
public override Task OnApplicationInitializationAsync(
ApplicationInitializationContext context)
{ {
var myService = context.ServiceProvider.GetService<MyService>(); var myService = context.ServiceProvider.GetService<MyService>();
myService.DoSomething(); await myService.DoSomethingAsync();
} }
} }
```` ````
``OnApplicationInitialization`` is generally used by the startup module to construct the middleware pipeline for ASP.NET Core applications. Example: > If you override both asynchronous and synchronous versions, only the asynchronous version will be executed.
``OnApplicationInitialization`` is generally used by the startup module to construct the middleware pipeline for ASP.NET Core applications.
**Example:**
````C# ````C#
[DependsOn(typeof(AbpAspNetCoreMvcModule))] [DependsOn(typeof(AbpAspNetCoreMvcModule))]
public class AppModule : AbpModule public class AppModule : AbpModule
{ {
//...
public override void OnApplicationInitialization(ApplicationInitializationContext context) public override void OnApplicationInitialization(ApplicationInitializationContext context)
{ {
var app = context.GetApplicationBuilder(); var app = context.GetApplicationBuilder();
@ -125,10 +138,14 @@ You can also perform startup logic if your module requires it
``AbpModule`` class also defines ``OnPreApplicationInitialization`` and ``OnPostApplicationInitialization`` methods to override and write your code just before and just after ``OnApplicationInitialization``. Notice that the code you have written into these methods will be executed before/after the ``OnApplicationInitialization`` methods of all other modules. ``AbpModule`` class also defines ``OnPreApplicationInitialization`` and ``OnPostApplicationInitialization`` methods to override and write your code just before and just after ``OnApplicationInitialization``. Notice that the code you have written into these methods will be executed before/after the ``OnApplicationInitialization`` methods of all other modules.
> These methods have asynchronous versions too, and if you want to make asynchronous calls inside these methods, override the asynchronous versions instead of the synchronous ones.
### Application Shutdown ### Application Shutdown
Lastly, you can override ``OnApplicationShutdown`` method if you want to execute some code while application is being shutdown. Lastly, you can override ``OnApplicationShutdown`` method if you want to execute some code while application is being shutdown.
> This methods has asynchronous version too. If you want to make asynchronous calls inside this method, override the asynchronous version instead of the synchronous one.
## Module Dependencies ## Module Dependencies
In a modular application, it's not unusual for one module to depend upon another module(s). An Abp module must declare ``[DependsOn]`` attribute if it does have a dependency upon another module, as shown below: In a modular application, it's not unusual for one module to depend upon another module(s). An Abp module must declare ``[DependsOn]`` attribute if it does have a dependency upon another module, as shown below:

Loading…
Cancel
Save