69 lines
2.0 KiB
Markdown
69 lines
2.0 KiB
Markdown
# hn-dotnet : un clone d'Hacker News en dotnet !
|
|
|
|
## Démarche
|
|
|
|
On crée un fichier solution avec `dotnet new sln`.
|
|
|
|
Commençons par le commencement, les building blocks, des classes pour nous faciliter la vie !
|
|
|
|
```console
|
|
$ mkdir BuildingBlocks
|
|
$ cd BuildingBlocks
|
|
$ dotnet new classlib && dotnet new gitignore
|
|
```
|
|
|
|
Ensuite viens le domaine :
|
|
|
|
```console
|
|
$ mkdir Domain
|
|
$ cd Domain
|
|
$ dotnet new classlib && dotnet new gitignore
|
|
```
|
|
|
|
On crée ensuite les différentes classes nécessaires au fonctionnement de l'application...
|
|
|
|
Ensuite viens la couche applicative avec nos **commands** et nos **queries** pour un couplage faible.
|
|
|
|
```console
|
|
$ mkdir Application
|
|
$ cd Application
|
|
$ dotnet new classlib && dotnet new gitignore
|
|
```
|
|
|
|
On ajoute aussi le package MediatR avec `dotnet add package MediatR` et la référence au domaine avec `dotnet add reference ../Domain`.
|
|
|
|
Création du répertoire et de la première appli razor pour exposer le domaine.
|
|
|
|
```console
|
|
$ mkdir Apps
|
|
$ cd Apps
|
|
$ dotnet new mvc -o Website
|
|
$ cd Website
|
|
$ dotnet new gitignore
|
|
```
|
|
|
|
On peut aussi installer les outils de scaffolding avec `dotnet tool install -g dotnet-aspnet-codegenerator`...
|
|
|
|
On ajoute les extensions MediatR pour pouvoir facilement enregistrer les services dans le conteneur IoC d'ASP.Net Core avec `dotnet add package MediatR.Extensions.Microsoft.DependencyInjection`.
|
|
|
|
Pour la couche d'infrastructure, il nous faut implémenter notre `ILinkRepository` avec EF Core dans un nouveau projet `Infrastructure`.
|
|
|
|
```console
|
|
$ dotnet new classlib -o Infrastructure
|
|
$ cd Infrastructure
|
|
$ dotnet new gitignore
|
|
$ dotnet add package Microsoft.EntityFrameworkCore.Sqlite
|
|
$ dotnet add package Microsoft.EntityFrameworkCore.Design
|
|
```
|
|
|
|
On installe les outils Entity framework `dotnet tool install --global dotnet-ef`.
|
|
|
|
Pour plus tard, pour la génération de doc :
|
|
|
|
project.csproj
|
|
|
|
<PropertyGroup>
|
|
<GenerateDocumentationFile>true</GenerateDocumentationFile>
|
|
<DocumentationFile>bin\YourApi.XML</DocumentationFile>
|
|
</PropertyGroup>
|