Clean Architecture in ASP.NET 8 Core Web API — CQRS — Mediator | Visual Studio
- Pertama bukalah Visual Studio kemudian pilihlah “Create a new project”
Pilih Create a new project
Memilih template ASP .NET Core Web API
Memberi nama dari template ini yaitu “CleanArchWithCQRSandMediator.API”
Memilih versi dari .NET, saya memilih versi 8 sesuai dengan kebutuhan saya
Setelah selesai create maka template dari Web API berhasil dibuat
2. Setelah membuat template dari Web API, maka setelahnya saya ingin membuat template class dari Domain
Pertama saya klik kanan pada “Solution ‘CleanArch…’”
Setelahnya saya klik Add → New Project
Kemudian saya memilih template “Class Library”
Saya menamainya “CleanArchWithCQRSandMediator.Domain”
Kemudian disini saya memilih versi .NET 8 sesuai kebutuhan saya
Setelah berhasil dibuat, maka sekarang ada 2 lapis proyek yaitu API & Domain
Kemudian saya menghapus file Class1.cs
Saya juga ingin menambahkan folder baru yaitu “Entity” & “Repository”. Caranya adalah dengan Add → New Folder
Folder berhasil dibuat
3. Setelah membuat template dari Domain, maka setelahnya saya ingin membuat template class dari Application
Pertama saya klik kanan pada “Solution ‘CleanArch…’”
Setelahnya saya klik Add → New Project
Kemudian saya memilih template “Class Library”
Saya menamainya “CleanArchWithCQRSandMediator.Application”
Kemudian disini saya memilih versi .NET 8 sesuai kebutuhan saya
Setelah berhasil dibuat, maka sekarang ada 3 lapis proyek yaitu API, Domain, dan Application
Kemudian saya menghapus file Class1.cs
Saya juga ingin menambahkan beberapa folder baru didalam Application. Caranya adalah dengan Add → New Folder
Folder “Blogs” ini akan saya gunakan untuk logika CRUD
Didalam folder “Blogs” saya membuat 2 folder yaitu “Commands” & “Queries” serta beberapa folder didalamnya
Beginilah tampilan tree dari folder tersebut
Setelah menambahkan “Blogs” saya ingin menambahkan folder baru lagi yaitu “Common”. Folder “Common” ini akan saya gunakan untuk validasi dan pemetaan
Didalam folder “Common” saya membuat beberapa folder yaitu “Behaviours”, “Exceptions”, dan “Mappings”
Beginilah tampilan tree dari folder Common
4. Setelah membuat beberapa folder saya ingin membuat class didalam folder “Application” ini
Saya klik Add → Class
Class ini saya namai “ConfigureServices”
5. Sebelum melanjutkan, saya ingin menginstall paket NuGet di dalam “Domain”
Pertama klik kanan di “Domain” lalu memilih “Manage NuGet packages”
Saya menginstall paket “MediatR”
Jika ada tampilan ini maka pilihlah Apply
Jika berhasil diinstall maka akan ada centang hijau
6. Kemudian didalam “Application” juga saya menginstall beberapa paket NuGet
Pertama klik kanan di “Application” lalu memilih “Manage NuGet packages”
Di sini saya search dulu “automapper.extensions.microsoft.dependency” kemudian menginstallnya
Karena ada tampilan ini maka saya memilih “Apply”
Di sini saya search “fluentvalidation” dulu, lalu menginstallnya
Kemudian karena ada tampilan seperti ini maka saya klik “Apply”
Barulah sekarang kita dapat mengedit file “ConfigureServices.cs”
// ConfigureServices.cs = Application
using Microsoft.Extensions.DependencyInjection;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
namespace CleanArchWithCQRSandMediator.Application
{
public static class ConfigureServices
{
// Metode untuk menambah layanan aplikasi ke IServiceCollection
public static IServiceCollection AddApplicationService(this IServiceCollection services)
{
// Mendaftarkan AutoMapper ke IServiceCollection
// Assembly.GetExecutingAssembly() digunakan untuk mendapatkan informasi tentang
// assembly saat ini, yang berisi kelas-kelas aplikasi ini.
// Ini penting karena kita ingin mendaftarkan profil-profil pemetaan AutoMapper
// yang ada di assembly saat ini ke IServiceCollection.
services.AddAutoMapper(Assembly.GetExecutingAssembly());
// Mendaftarkan MediatR ke IServiceCollection
// Assembly.GetExecutingAssembly() digunakan lagi untuk mendapatkan informasi tentang
// assembly saat ini, yang berisi kelas-kelas aplikasi ini.
// Ini penting karena kita ingin MediatR menemukan pengendalian (handlers)
// dari penggunaan kasus (use cases) yang ada di dalam assembly saat ini.
services.AddMediatR(ctg =>
{
// Mendaftarkan semua layanan dari assembly saat ini ke kontainer dependensi
// Ini memungkinkan MediatR untuk menemukan dan mendaftarkan pengendalian (handlers)
// dari penggunaan kasus (use cases) yang ada di dalam assembly saat ini ke kontainer dependensi.
ctg.RegisterServicesFromAssembly(Assembly.GetExecutingAssembly());
});
// Mengembalikan IServiceCollection yang diperbarui
return services;
}
}
}
7. Setelah menginstall paket dan mengedit file di “Application”, selanjutnya saya ingin membuat folder ini bereferensi ke dalam “Domain” karena “Application” bergantung kepada “Domain”
Pertama saya klik Add → Project Reference
Di sini saya menceklis hanya Domain saja, kemudian klik OK
Subscribe to my newsletter
Read articles from Ervin Boy Jati Asmara directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by