
هذا هو استمرار للنص حول بنية أنظمة interprise. التفكير جيد ، ولكن ما هو الهدف بدون تطبيق عملي. سأعرض إطار عملي في العمل.
بدأ كل شيء عندما تحدثت عن مشاكل تصميم التطبيقات في .NET وتذمر من الحياة الصعبة في مؤسسة دموية. ثم وصفت الحل الذي توصلت إليه وطبقته بنفسي - Reinforced.Tecture. لقد كانت نظرية ، التفكير المفاهيمي ، البصيرة والأنين مرة أخرى. هذه المرة هي حوالي عام 2020 ، ولكن لم يتم تسليم HKT إلى C #.
سأقوم اليوم بتوضيح منهجي في العمل باستخدام مشروع بسيط كمثال وإظهار الفوائد التي يوفرها: من تقليل كمية الكود إلى اختبار الأتمتة والنهج الأصلي للتوثيق. كما نصح تورفالدس القديم: "الدردشة لا قيمة لها ، أرني الرمز".
لذا ، نحن بحاجة إلى القيام بشيء بسيط ، ولكن العمل في Tecture. نظرًا لأننا نتحدث عن مؤسسة ، فسوف أختار مثالًا يشبه بشكل غامض نشاطًا تجاريًا حقيقيًا.
نحن نحتاج:
- جوهر بسيط. المنتجات والطلبات تتبادر إلى الذهن على الفور. يجب ألا تكون هناك منتجات ؛
- EF DbContext وقاعدة البيانات المحلية ؛
- منطق عمل لعبة؛
- مشروع ويب بسيط. كل مرتبة حسب الرتبة ، ASP.NET Core ، WebAPI. سوف نتمسك بالمنطق فيه.
تدريب
سيكون هيكل المشروع على النحو التالي:

لقد قمت بتوصيل EF.Core بالتجميع Data، ووضع DbContext ورمز الغراء لعمليات الترحيل هناك. لأنني أريد أن أترك المنطق على .NET Standard ولا أسحب EF معي.
DAL-, . — . , Tecture. .
سننظر في سلوك Tecture باستخدام مثال للعمل مع المنتجات. ها هو جوهرها ، والمنطق المحيط بها سيكون بسيطًا وغبيًا جدًا:

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, . , . .
تم نشر الحزم ، المصادر موجودة ، أنا على تواصل على تويتر ، برقية وعلى جيثب. إذا كنت تريد فجأة الانضمام إلى صفوف المتبنين الأوائل وأخذ Tecture لمشروعك المفضل - اكتب إليّ ، وسأحاول مساعدتك.
شكر خاص Fillpackartو ارتومومجتمعهم We Are Doomed للحصول على الدعم المعلوماتي والتحرير. شاهد البودكاست الخاص بهم ، إنه رائع. حتى أن هناك إطلاق سراح معي .
حظا سعيدا!