-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmodule-system.html
102 lines (87 loc) · 5.92 KB
/
module-system.html
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
<title>Entities</title>
<link type="text/css" rel="stylesheet" href="bootstrap.min.css" />
</head>
<body>
<ul>
<li><a href="#DocIntroModules">Introduction aux modules</a></li>
<li><a href="#DocModuleLifecycleEvents">Cycle de vie des évènements</a><ul>
<li><a href="#DocModulePreInit">Préinitialisation</a></li>
<li><a href="#DocModuleInit">Initialisation</a></li>
<li><a href="#DocModulePostInit">Post-Initialisation</a></li>
<li><a href="#DocModuleShutdown">Fermeture</a></li>
</ul>
</li>
<li><a href="#DocModuleDepend">Dépendances inter modules</a></li>
<li><a href="#DocCustomModule">Méthodes personnalisées des modules</a></li>
</ul>
<h3 id="DocIntroModules">Introduction aux modules</h3>
<p>ASP.NET Boilerplate fournit une infrastructure pour concevoir des modules et pour les assembler afin de de créer une application. Un module peut dépendre d'un autre module. Généralement, un assembly est considéré comme un module. Un module est une classe qui hérite de <strong>AbpModule</strong>.
Imaginons que nous développons un module de type "blog" qui pourrait être utilisé dans différentes applications. La définition la plus simple de ce module pourrait être tel que présenté ci-dessous:</p>
<pre lang="cs">public class MyBlogApplicationModule : AbpModule
{
public override void Initialize()
{
IocManager.RegisterAssemblyByConvention(Assembly.GetExecutingAssembly());
}
}</pre>
<p>ASP.NET Boilerplate parcourt toutes les librairies et trouve toutes les classes qui hérite de la classe AbpModule. Si vous créez une application avec plus d'un assembly, il est conseillé de creer une définition de module pour chaque assembly.</p>
<h3 id="DocModuleLifecycleEvents">Cycle de vie des évènements</h3>
<p>ASP.NET Boilerplate fait appel à certaines méthodes spécifiques contenues dans les modules au démarrage de l'application et à sa fermeture. Vous pouvez surcharger ces méthodes pour effectuer certaines tâches spécifiques.</p>
<p>ASP.NET Boilerplate déclenche ces méthodes selon l'ordre des dépendances. Si un module A dépend d'un module B, le module B est initialisé en premier. L'ordre précis de déclenchement des méthodes est le suivant: Pre-Initialisation-B, Pre-Initialisation-A, Initialisation-B, Initialisation-A, Post-Initialisation-B and Post-Initialisation-A. Cela s'applique à tous les graphes de dépendances. La méthode de fermeture suit la même séquence mais dans le sens contraire.</p>
<h4 id="DocModulePreInit">Pre-Initialisation</h4>
<p>Cette méthode est appelé en premier lorsque l'application démarre. Vous pouvez écrire du code spécifique à cet endroit pour qu'il s'exécute avant le chargement des règles d'Injection de Dépendance. Par exemple, si vous voulez créer une classe de paramétrage intial, vous pourriez la définir ici. (en utilisant la méthode IocManager.AddConventionalRegisterer method). Vous pouvez donc vous abonner à des évènements du conteneur d'Injection de Dépendance.</p>
<h4 id="DocModuleInit">Initialisation</h4>
<p>C'est la meilleure place pour définir les règles de l'<a href="/Pages/Documents/Dependency-Injection">Injection de Dépendance</a>. Le moyen généralement utilisé et l'appel à la méthode IocManager.RegisterAssemblyByConvention. Si vous voulez définir un paramétrage particulier au niveau des dépendances, reportez vous à la documentation correspondante.</p>
<h4 id="DocModulePostInit">Post-Initialisation</h4>
<p>Cette méthode est appelée plus tard pendant la phase de démarrage de l'application. L'appel à une dépendance est sans danger à ce stade.</p>
<h4 id="DocModuleShutdown">Fermeture</h4>
<p>Cette méthode est appelée lorsque l'application se ferme.</p>
<h3 id="DocModuleDepend">Dépendances des modules</h3>
<p>Un module peut dépendre d'un autre. ASP.NET Boilerplate tente de résoudre automatiquement ces dépendances. Il est tout de même conseillé de les déclarer explicitement en utilisant l'attribut DependsOn comme indiqué ci-dessous:</p>
<pre lang="cs">[DependsOn(typeof(MyBlogCoreModule))]
public class MyBlogApplicationModule : AbpModule
{
public override void Initialize()
{
IocManager.RegisterAssemblyByConvention(Assembly.GetExecutingAssembly());
}
}</pre>
<p>Par ce biais, nous déclarons à ASP.NET Boilerplate que MyBlogApplicationModule est dépendant de MyBlogCoreModule et que le module principale (core) doit être initialisé avant le module applicatif.</p>
<h3 id="DocCustomModule">Méthodes personnalisées des modules</h3>
<p>Vos modules peuvent aussi comporter des méthodes personnalisées qui seront utilisées par les modules dépendants. Imaginons que MyModule2 dépend de MyModule1 et veut appeler la méthode de MyModule1 lors de l'évènement PreInitialize.</p>
<pre lang="cs">public class MyModule1 : AbpModule
{
public override void Initialize()
{
IocManager.RegisterAssemblyByConvention(Assembly.GetExecutingAssembly());
}
public void MyModuleMethod1()
{
//this is a custom method of this module
}
}
[DependsOn(typeof(MyModule1))]
public class MyModule2 : AbpModule
{
private readonly MyModule1 _myModule1;
public MyModule2(MyModule1 myModule1)
{
_myModule1 = myModule1;
}
public override void PreInitialize()
{
_myModule1.MyModuleMethod1(); //Call MyModule1's method
}
public override void Initialize()
{
IocManager.RegisterAssemblyByConvention(Assembly.GetExecutingAssembly());
}
}</pre>
<p>Ici, nous avons injecté, par constructeur, MyModule1 à MyModule2, donc MyModule2 peut appeller la méthode personnalisée de
MyModule1's.</p>
</body>
</html>