#10-Ar | Stop Giving Everything an ID — 3 Rules for a Better .NET Architecture

هل كل شيء في نظامك يحتاج إلى ID؟
ليس بالضرورة.

في هذه الحلقة من سلسلة BuildFlow ننتقل من كتابة الكود إلى التفكير في القرار المعماري وراء الكود.

سنكتشف لماذا لا ينبغي أن تحصل كل المفاهيم في الـ Domain على Identity، وكيف يمكن لـ Value Objects أن تمثل المفاهيم التي تعيش بقيمها بدلًا من هويتها.

وسنناقش أيضًا مشكلة مهمة في تصميم الأنظمة الكبيرة:

:small_blue_diamond: كيف نمثل Auditing بدون أن نفرض Base Class جديدة على الـ Entities؟
:small_blue_diamond: لماذا نستخدم Interfaces كـ Contracts بدلًا من Base Classes؟
:small_blue_diamond: لماذا نحتاج إلى UTC وGuid في عقد الـ Auditing؟
:small_blue_diamond: كيف يمكن لـ Infrastructure أن يتعرف تلقائيًا على هذه الـ Contracts ويطبقها؟
:small_blue_diamond: لماذا نستخدم Soft Delete بدل الحذف النهائي؟
:small_blue_diamond: وكيف يساعد EF Core Global Query Filter في تطبيق قاعدة Soft Delete تلقائيًا؟

ثم نصل إلى الجزء الأهم:

:brain: ما القواعد الهندسية التي يمكننا استخلاصها؟
Model values as Value Objects
Represent cross-cutting concerns as Contracts
Let Infrastructure automate them

______________________________________________________

:globe_with_meridians: BuildFlow-V3 — العرض الحي (Live Demo)
سجّل مستأجرك الخاص وتابع دورة حياة مستندات المشروع كاملةً: مسودة (Draft) ← قيد المراجعة (Under Review) ← معتمد (Approved) ← مؤرشف (Archived) (نظام SaaS متعدد المستأجرين مبني بـ .NET 8).
الرابط: https://build-flow-v3-orpin.vercel.app

:laptop: BuildFlow-V3 — الكود المصدري (.NET 8)
الهيكلية الوحدوية (Modular Monolith)، التصميم القائم على النطاق (DDD)، نمط CQRS، تعدد المستأجرين (Multi-tenancy)، التخزين المؤقت باستخدام Redis، تتبع الأداء OpenTelemetry، مع 90 اختبار وحدوي (Unit Tests) وتكامل مستمر (CI) كامل.
مستودع جيت هاب: GitHub - luaay/BuildFlow-V3: Engineering Document Workflow SaaS — Modular Monolith, DDD, Clean Architecture, CQRS (.NET 8) · GitHub
واجهة توثيق API الحية (Swagger): GitHub - luaay/BuildFlow-V3: Engineering Document Workflow SaaS — Modular Monolith, DDD, Clean Architecture, CQRS (.NET 8) · GitHub

:open_file_folder: مستودع الشرح التعليمي خطوة بخطوة
الكود المصدري الكامل المرتبط خطوة بخطوة مع سلسلة فيديو يوتيوب.
الرابط: GitHub - luaay/BuildFlow-Tutorial · GitHub

:movie_camera: سلسلة الفيديوهات الكاملة:
:saudi_arabia: السلسلة بالعربية: https://www.youtube.com/watch?v=BtDY8nP7s-s&list=PLvQd5bL8gZSsOxYZfdleDcERevGIcvYbm

:united_kingdom: السلسلة بالإنجليزية: https://www.youtube.com/watch?v=FO4FBGiJ4L8&list=PLvQd5bL8gZSvASa69AODKURjOwHcvTjKz
_______________________________________

هذه الحلقة ليست مجرد إضافة بعض الـ Classes إلى SharedKernel، بل هي عن فصل المسؤوليات واتخاذ قرارات معمارية تجعل النظام أكثر وضوحًا وقابلية للتوسع والصيانة.

وفي نهاية الحلقة، نناقش أيضًا مجموعة من أسئلة مقابلات العمل حول Value Objects وHashing وInterfaces، وكيفية شرح القرار الهندسي، وليس مجرد حفظ المصطلحات.

:rocket: في الحلقة القادمة:
سنأخذ هذه الـ Contracts من مستوى التصميم إلى مستوى التنفيذ، ونرى كيف يمكن لـ Infrastructure وEF Core تحويل هذه القرارات المعمارية إلى سلوك حقيقي داخل النظام.

:hammer_and_wrench: التقنيات والمفاهيم

ASP.NET Core • .NET 8 • C# • DDD • Clean Architecture • Modular Monolith • SharedKernel • Value Objects • Auditing • Soft Delete • EF Core

:television: سلسلة BuildFlow

إذا كنت تريد فهم لماذا نبني النظام بهذه الطريقة وليس فقط كيف نكتب الكود، فتابع سلسلة BuildFlow من البداية.

:+1: إذا وجدت الحلقة مفيدة، لا تنسَ الإعجاب بالفيديو والاشتراك في القناة ومشاركة الحلقة مع مطور قد يستفيد منها.

BuildFlow — Building Software by Engineering Decisions.

إعجاب واحد (1)

شكرا استاذ احمد على الدعم