hn-dotnet/README.md

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>