J'avais tellement honte de mon code d'interprise que j'ai fait mon propre vélo. J'ai moins honte de lui

image



Ceci est une continuation du texte sur l'architecture des systÚmes interprise. Le raisonnement est bon, mais à quoi ça sert sans application pratique. Je vais montrer mon cadre en action.



Tout a commencĂ© lorsque j'ai parlĂ© des problĂšmes de conception d'applications en .NET et que je me suis plaint de la vie difficile dans une entreprise sanglante. Ensuite, j'ai dĂ©crit la solution que j'ai trouvĂ©e et mise en Ɠuvre moi-mĂȘme - Reinforced.Tecture. C'Ă©tait encore de la thĂ©orie, du raisonnement conceptuel, visionnaire et pleurnichard. Cette fois, il s'agit de 2020, mais HKT n'a pas Ă©tĂ© livrĂ© en C #.



Aujourd'hui, je vais démontrer mon approche en action en utilisant un projet simple comme exemple et montrer les avantages qu'il apporte: de la réduction de la quantité de code à l'automatisation des tests et une approche originale de la documentation. Comme le disait le vieux Torvalds: "Le chat ne vaut rien, montre-moi le code."



Donc, nous devons faire quelque chose de simple, mais en travaillant Ă  Tecture. Puisque nous parlons d'une entreprise, je choisirai un exemple qui ressemble vaguement Ă  une vraie entreprise.



Nous avons besoin:



  • Essence simple. Les produits et les commandes viennent immĂ©diatement Ă  l'esprit. Qu'il y ait des produits;
  • EF DbContext et base de donnĂ©es locale;
  • Logique commerciale du jouet;
  • Un projet web simple. Tous classĂ©s par rang, ASP.NET Core, WebAPI. Nous allons y mettre la logique.


EntraĂźnement



La structure du projet sera la suivante:



image



J'ai connecté EF.Core à l'assembly Data, y mettre DbContext et coller le code pour les migrations. Parce que je veux laisser la logique sur .NET Standard et ne pas faire glisser EF avec moi.



Au fait, intéressant

DAL-, . — . , Tecture. .



Nous examinerons le comportement de Tecture en utilisant un exemple de travail avec des produits. Voici son essence, et la logique qui l'entoure sera simple et trĂšs stupide:



image



DbContext- , - . — . EF , . . EF — ORM-. EF-.



AcmeDbContext

image



MS SQL Express. — . EF.Core - — MySQL PostgreSQL. , , Tecture, . . .



, . Reinforced.Tecture Reinforced.Tecture.Aspects.Orm.



image



. , O/RM:



image



, Id. , . :



image





. Tecture end-user . web-. , Startup.cs, ConfigureServices. DI-, ASP.NET MVC. , AcmeDbContext:



image



Tecture EF. web-. 2 : O/RM DirectSQL. DirectSQL , . , - . , - , dll- . . — — :



image



Tecture . . . AcmeDbContext, LazyDisposable ( Lazy Disposable, ) . , EF . fluent-:



image



. " " . , , Tecture, , . separation of concerns: , , — — . , — , .



. , . , . , , , . — . , separation of concerns .



, : , , . glue-. , — , .



Tecture , . .



, ITecture . .





-, Id. , . DTO. , , :



image



, ITecture , , From<>. , Id DTO-:



image



, , . Id DTO- . C# . , DTO- :



image



image



:



image



image



IQueryable, All<>, . . — , . — AutoMapper, expression-. — . , . , . , . , .





, - . . , Tecture . . , :



image



, . . ORM- — :



image



image



, Id . ORM — . — , Id — . ? : Add IAddition<>. , IAddition<Product>. Key . Id. . IPrimaryKey<>. :



image



. - :



image



Postman Id .



-, Tecture. , , . — , .






. , .



. . 90% . , , — , .



, — . — . — .



.





. Tecture BeginTrace EndTrace. . :



image



Explain. Tecture . return :



image



! . , - . , , , — , , , . , , :



image



.Describe.



: - . , , , . — , .



, , . , . , . , .



Tecture : . . -, . , - , . , . , , . Knowledge management!



IDescriptive, , , . "User entity" "User Vasiliy Pupkin". , . , .



, - . Explain — , , . , : , .



.





. . web- : Reinforced.Tecture.Testing. — Roslyn. , . :



image



2 . GenerateData GenerateValidation. , :



image



: , C#-. , Tecture fake- . , , , -, Mockaroo. - — . , ?



. Reinforced.Tecture.Testing. , 4 :



image



: -, - ( + ). . !



, . - -. , .



, ...



Unit-



, . QA : ", , !". , , , unit-.



CI/CD — . , , , . . . , Tecture . : - , . — . .



— , , - . , , , . — — , .



. . .



— , GenerateData GenerateValidation. NuGet . , .



, :



image



image



, :



image



, unit- 5 . , .



, ( ). - unit-. , , , - .



.



-



. , . , .



, Tecture. , . , — , . .



— , DirectSql, . , . .



Les paquets ont été publiés, les sources sont là , je suis en contact sur twitter, télégramme et sur github. Si vous voulez soudainement rejoindre les rangs des adopteurs précoces et prendre Tecture pour votre projet animalier - écrivez-moi, je vais essayer de vous aider.



Remerciement spĂ©cial fillpackart, arttomet leur communautĂ© We Are Doomed pour le support informationnel et l'Ă©dition. Regardez leur podcast , c'est gĂ©nial. Il y a mĂȘme un communiquĂ© avec moi .



Bonne chance!




All Articles