نموذج لبنية ASP .NET
تصميم يحركه المجال DDD
01 - العرض
طبقة واجهة المستخدم
واجهة برمجة التطبيقات الأساسية:
- يتم استخدام "نموذج" وحدة التحكم لـ DI وعينة من فئة CacheManager.
- يتم استخدام وحدة التحكم "SampleAlt" لتوضيح استخدام "الخدمات" > "المستودع" > "UoW" > "EF"
02 - المجال
طبقة إدارة البيانات
استخدم مفهوم "الوحدة النمطية": واجهات الخدمات مع تنفيذها (الوحدة النمطية: المجاميع/الخدمات [DDD])
DTO: كائن نقل البيانات (العينة: MyApp.Domain.DTO.SampleDataDTO).
نمط المواصفات (قريبا).
"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.