
Dies ist eine Fortsetzung des Textes über die Architektur von Interprise-Systemen. Das Denken ist gut, aber was bringt es ohne praktische Anwendung? Ich werde meinen Rahmen in Aktion zeigen.
Alles begann, als ich über die Probleme beim Entwerfen von Anwendungen in .NET sprach und über das schwierige Leben in einem blutigen Unternehmen jammerte. Dann beschrieb ich die Lösung, die ich mir ausgedacht und implementiert hatte - Reinforced.Tecture. Es war Theorie, konzeptionelles Denken, visionär und wieder jammernd. Diesmal ist es ungefähr 2020 und HKT wurde nicht an C # geliefert.
Heute werde ich meinen Ansatz in Aktion anhand eines einfachen Projekts als Beispiel demonstrieren und die Vorteile aufzeigen, die sich daraus ergeben: von der Reduzierung der Codemenge über das Testen der Automatisierung bis hin zu einem originellen Ansatz für die Dokumentation. Wie der alte Torvalds geraten hat: "Chatten ist wertlos, zeig mir den Code."
Wir müssen also etwas Einfaches tun, aber in Tecture arbeiten. Da es sich um ein Unternehmen handelt, werde ich ein Beispiel auswählen, das vage einem echten Unternehmen ähnelt.
Wir brauchen:
- Einfache Essenz. Produkte und Bestellungen fallen mir sofort ein. Lass es Produkte geben;
- EF DbContext und lokale Datenbank;
- Spielzeuggeschäftslogik;
- Ein einfaches Webprojekt. Alle Rang für Rang, ASP.NET Core, WebAPI. Wir werden die Logik hineinstecken.
Ausbildung
Die Projektstruktur sieht wie folgt aus:

Ich habe EF.Core mit der Assembly verbunden Dataund dort den DbContext und den Klebercode für Migrationen abgelegt. Weil ich die Logik auf .NET Standard belassen und EF nicht mit mir ziehen möchte.
DAL-, . — . , Tecture. .
Wir werden das Verhalten von Tecture anhand eines Beispiels für die Arbeit mit Produkten untersuchen. Hier ist seine Essenz, und die Logik um ihn herum wird einfach und sehr dumm sein:

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, . , . .
Die Pakete wurden veröffentlicht, die Quellen sind da , ich bin auf Twitter, Telegramm und Github in Kontakt. Wenn Sie sich plötzlich den Reihen der Early Adopters anschließen und Tecture für Ihr Haustierprojekt nehmen möchten - schreiben Sie mir, ich werde versuchen zu helfen.
Besonderen Dank fillpackart, arttomund ihre We Are Doomed-Community für informative Unterstützung und Bearbeitung. Sehen Sie sich ihren Podcast an , es ist großartig. Es gibt sogar eine Veröffentlichung bei mir .
Viel Glück!