ตัวอย่างสถาปัตยกรรม ASP .NET
รูปแบบการออกแบบที่ขับเคลื่อนด้วยโดเมน DDD
01 - การนำเสนอ
เลเยอร์ส่วนต่อประสานกับผู้ใช้
API พื้นฐาน:
- คอนโทรลเลอร์ "Sample" ใช้สำหรับ DI และตัวอย่างของคลาส CacheManager
- ตัวควบคุม "SampleAlt" ใช้เพื่อสาธิตการใช้ "บริการ" > "พื้นที่เก็บข้อมูล" > "UoW" > "EF"
02 - Domain
ชั้นการจัดการข้อมูล
ใช้แนวคิด "โมดูล" : อินเทอร์เฟซบริการกับการนำไปใช้งาน (โมดูล: รวม/บริการ [DDD])
DTO : ออบเจ็กต์การถ่ายโอนข้อมูล (ตัวอย่าง: MyApp.Domain.DTO.SampleDataDTO)
The Specification Pattern (soon).
"Select Builder" : ขอบคุณ LINQ ที่คุณสามารถสร้างนิพจน์ที่กำหนดเองเพื่อส่งคืน DTO โดยตรง (ตัวอย่าง: MyApp.Domain.SampleModule.Aggregates.SampleDataSelectBuilder)
03 - ข้อมูล
ชั้นการเข้าถึงข้อมูล
- ใช้ EntityFramework (EF) กับ DbSet/Annotations เพื่อลิงก์ SQL/Table ไปยังคลาส/อ็อบเจ็กต์ (ตัวอย่าง: MyApp.Domain.SampleModule.Aggregates.SampleData)
- รูปแบบหน่วยการทำงาน (UnitOfWork / UoW) เพิ่มธุรกรรมสำหรับการแก้ไขปัญหาการทำงานพร้อมกัน (MyApp.Data.UnitOfWorkContext)
- รูปแบบพื้นที่เก็บข้อมูลเพิ่มเลเยอร์ระหว่าง DbSet (ส่งคืน IQueryable) ด้วย UoW และข้อมูลที่ใช้ในเลเยอร์ "โดเมน" การจัดการที่สืบค้นได้นั้นสมเหตุสมผล พื้นที่เก็บข้อมูลส่งคืนการแจกแจงหรือเอนทิตี (MyApp.Data.Core.Repository && MyApp.Domain.Core.IRepository)
04 - โครงสร้างพื้นฐาน
เลเยอร์การจัดการแอป
- CrossCutting : สามารถใช้เลเยอร์กับเลเยอร์อื่นๆ ทั้งหมดได้
- การผกผันของการควบคุม
- การฉีดพึ่งพา (DI) และ LifeTimeManager