
Ini adalah kelanjutan dari teks tentang arsitektur sistem antar perusahaan. Penalaran itu bagus, tapi apa gunanya tanpa penerapan praktis. Saya akan menunjukkan kerangka saya dalam tindakan.
Semuanya dimulai ketika saya berbicara tentang masalah mendesain aplikasi di .NET dan mengeluh tentang kehidupan yang sulit di perusahaan yang berdarah. Kemudian saya menjelaskan solusi yang saya buat dan terapkan sendiri - Reinforced.Tecture. Itu adalah teori, penalaran konseptual, visioner, dan rengekan lagi. Kali ini sekitar tahun 2020, dan HKT belum terkirim ke C #.
Hari ini saya akan mendemonstrasikan pendekatan saya dalam tindakan menggunakan proyek sederhana sebagai contoh dan menunjukkan manfaat yang diberikannya: dari mengurangi jumlah kode hingga otomatisasi pengujian dan pendekatan asli untuk dokumentasi. Seperti yang disarankan Torvalds lama: "Mengobrol tidak ada gunanya, tunjukkan kodenya."
Jadi, kita perlu melakukan sesuatu yang sederhana, tetapi bekerja di Tecture. Karena kita berbicara tentang perusahaan, saya akan memilih contoh yang secara samar menyerupai bisnis nyata.
Kita butuh:
- Esensi sederhana. Produk dan pesanan langsung muncul di pikiran. Jadilah produk;
- EF DbContext dan database lokal;
- Mainan logika bisnis;
- Sebuah proyek web sederhana. Semua peringkat berdasarkan peringkat, ASP.NET Core, WebAPI. Kami akan memasukkan logika ke dalamnya.
Latihan
Struktur proyeknya adalah sebagai berikut:

Saya menghubungkan EF.Core ke assembly Data, meletakkan DbContext dan kode lem untuk migrasi di sana. Karena saya ingin meninggalkan logika pada .NET Standard dan tidak menyeret EF bersama saya.
DAL-, . — . , Tecture. .
Kami akan melihat perilaku Tecture menggunakan contoh bekerja dengan produk. Inilah intinya, dan logika yang mengelilinginya akan sederhana dan sangat bodoh:

DbContext- , - . — . EF , . . EF — ORM-. EF-.

MS SQL Express. — . EF.Core - — MySQL PostgreSQL. , , Tecture, . . .
, . Reinforced.Tecture Reinforced.Tecture.Aspects.Orm.

. , O/RM:

, Id. , . :

. Tecture end-user . web-. , Startup.cs, ConfigureServices. DI-, ASP.NET MVC. , AcmeDbContext:

Tecture EF. web-. 2 : O/RM DirectSQL. DirectSQL , . , - . , - , dll- . . — — :

Tecture . . . AcmeDbContext, LazyDisposable ( Lazy Disposable, ) . , EF . fluent-:

. " " . , , Tecture, , . separation of concerns: , , — — . , — , .
. , . , . , , , . — . , separation of concerns .
, : , , . glue-. , — , .
Tecture , . .
, ITecture . .
-, Id. , . DTO. , , :

, ITecture , , From<>. , Id DTO-:

, , . Id DTO- . C# . , DTO- :


:


IQueryable, All<>, . . — , . — AutoMapper, expression-. — . , . , . , . , .
, - . . , Tecture . . , :

, . . ORM- — :


, Id . ORM — . — , Id — . ? : Add IAddition<>. , IAddition<Product>. Key . Id. . IPrimaryKey<>. :

. - :

Postman Id .
-, Tecture. , , . — , .
. , .
. . 90% . , , — , .
, — . — . — .
.
. Tecture BeginTrace EndTrace. . :

Explain. Tecture . return :

! . , - . , , , — , , , . , , :

.Describe.
: - . , , , . — , .
, , . , . , . , .
Tecture : . . -, . , - , . , . , , . Knowledge management!
IDescriptive, , , . "User entity" "User Vasiliy Pupkin". , . , .
, - . Explain — , , . , : , .
.
. . web- : Reinforced.Tecture.Testing. — Roslyn. , . :

2 . GenerateData GenerateValidation. , :

: , C#-. , Tecture fake- . , , , -, Mockaroo. - — . , ?
. Reinforced.Tecture.Testing. , 4 :

: -, - ( + ). . !
, . - -. , .
, ...
Unit-
, . QA : ", , !". , , , unit-.
CI/CD — . , , , . . . , Tecture . : - , . — . .
— , , - . , , , . — — , .
. . .
— , GenerateData GenerateValidation. NuGet . , .
, :


, :

, unit- 5 . , .
, ( ). - unit-. , , , - .
.
-
. , . , .
, Tecture. , . , — , . .
— , DirectSql, . , . .
Paketnya sudah dipublikasikan, sumbernya ada , saya berhubungan di twitter, telegram dan di github. Jika Anda tiba-tiba ingin bergabung dengan barisan pengadopsi awal dan mengambil Tecture untuk proyek hewan peliharaan Anda - tulis surat kepada saya, saya akan mencoba membantu.
Terima kasih khusus fillpackart, arttom.dlldan komunitas We Are Doomed mereka atas dukungan dan pengeditan informasional. Tonton podcast mereka , itu luar biasa. Bahkan ada pembebasan bersamaku .
Semoga berhasil!