Saya sangat malu dengan kode keterkejutan saya sehingga saya membuat sepeda sendiri. Aku tidak terlalu malu padanya

gambar



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:



gambar



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.



Ngomong-ngomong, menarik

DAL-, . — . , Tecture. .



Kami akan melihat perilaku Tecture menggunakan contoh bekerja dengan produk. Inilah intinya, dan logika yang mengelilinginya akan sederhana dan sangat bodoh:



gambar



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



AcmeDbContext

image



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



, . Reinforced.Tecture Reinforced.Tecture.Aspects.Orm.



gambar



. , O/RM:



gambar



, Id. , . :



gambar





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



gambar



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



gambar



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



gambar



. " " . , , Tecture, , . separation of concerns: , , — — . , — , .



. , . , . , , , . — . , separation of concerns .



, : , , . glue-. , — , .



Tecture , . .



, ITecture . .





-, Id. , . DTO. , , :



gambar



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



gambar



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



gambar



gambar



:



gambar



gambar



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





, - . . , Tecture . . , :



gambar



, . . ORM- — :



gambar



gambar



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



gambar



. - :



gambar



Postman Id .



-, Tecture. , , . — , .






. , .



. . 90% . , , — , .



, — . — . — .



.





. Tecture BeginTrace EndTrace. . :



gambar



Explain. Tecture . return :



gambar



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



gambar



.Describe.



: - . , , , . — , .



, , . , . , . , .



Tecture : . . -, . , - , . , . , , . Knowledge management!



IDescriptive, , , . "User entity" "User Vasiliy Pupkin". , . , .



, - . Explain — , , . , : , .



.





. . web- : Reinforced.Tecture.Testing. — Roslyn. , . :



gambar



2 . GenerateData GenerateValidation. , :



gambar



: , C#-. , Tecture fake- . , , , -, Mockaroo. - — . , ?



. Reinforced.Tecture.Testing. , 4 :



gambar



: -, - ( + ). . !



, . - -. , .



, ...



Unit-



, . QA : ", , !". , , , unit-.



CI/CD — . , , , . . . , Tecture . : - , . — . .



— , , - . , , , . — — , .



. . .



— , GenerateData GenerateValidation. NuGet . , .



, :



gambar



gambar



, :



gambar



, 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!




All Articles