Estaba tan avergonzado de mi código de empresa que hice mi propia bicicleta. Estoy menos avergonzado de el

imagen



Esta es una continuación del texto sobre la arquitectura de los sistemas interempresariales. Razonar es bueno, pero cuál es el punto sin una aplicación práctica. Mostraré mi marco en acción.



Todo comenzó cuando hablé sobre los problemas de diseñar aplicaciones en .NET y me quejé de la difícil vida en una maldita empresa. Luego describí la solución que se me ocurrió y la implementé yo mismo: Tectura reforzada. Era teoría, razonamiento conceptual, visionario y quejumbroso de nuevo. Esta vez se trata de 2020, pero HKT no se ha entregado a C #.



Hoy demostraré mi enfoque en acción usando un proyecto simple como ejemplo y mostraré los beneficios que brinda: desde reducir la cantidad de código hasta probar la automatización y un enfoque original de la documentación. Como aconsejaba el viejo Torvalds: "Charlar no vale nada, enséñame el código".



Entonces, necesitamos hacer algo simple pero trabajando en Tecture. Como estamos hablando de una empresa, elegiré un ejemplo que se parezca vagamente a un negocio real.



Nosotros necesitamos:



  • Esencia simple. Los productos y los pedidos vienen a la mente de inmediato. Que haya productos;
  • EF DbContext y base de datos local;
  • Lógica de negocios de juguetes;
  • Un proyecto web sencillo. Todos clasificados por rango, ASP.NET Core, WebAPI. Le pegaremos la lógica.


Formación



La estructura del proyecto será la siguiente:



imagen



Conecté EF.Core al ensamblaje Data, puse DbContext y pegué el código para las migraciones allí. Porque quiero dejar la lógica en .NET Standard y no arrastrar EF conmigo.



Por cierto, interesante

DAL-, . — . , Tecture. .



Veremos el comportamiento de Tecture usando un ejemplo de trabajo con productos. Aquí está su esencia, y la lógica a su alrededor será simple y muy estúpida:



imagen



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



AcmeDbContext

image



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



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



imagen



. , O/RM:



imagen



, Id. , . :



imagen





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



imagen



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



imagen



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



imagen



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



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



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



Tecture , . .



, ITecture . .





-, Id. , . DTO. , , :



imagen



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



imagen



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



imagen



imagen



:



imagen



imagen



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





, - . . , Tecture . . , :



imagen



, . . ORM- — :



imagen



imagen



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



imagen



. - :



imagen



Postman Id .



-, Tecture. , , . — , .






. , .



. . 90% . , , — , .



, — . — . — .



.





. Tecture BeginTrace EndTrace. . :



imagen



Explain. Tecture . return :



imagen



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



imagen



.Describe.



: - . , , , . — , .



, , . , . , . , .



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



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



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



.





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



imagen



2 . GenerateData GenerateValidation. , :



imagen



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



. Reinforced.Tecture.Testing. , 4 :



imagen



: -, - ( + ). . !



, . - -. , .



, ...



Unit-



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



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



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



. . .



— , GenerateData GenerateValidation. NuGet . , .



, :



imagen



imagen



, :



imagen



, unit- 5 . , .



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



.



-



. , . , .



, Tecture. , . , — , . .



— , DirectSql, . , . .



Los paquetes se han publicado, las fuentes están ahí , estoy en contacto en twitter, telegram y en github. Si de repente quieres unirte a las filas de los primeros usuarios y aceptar Tecture como tu proyecto favorito, escríbeme, intentaré ayudarte.



Gracias especiales fillpackart, arttomy su comunidad We Are Doomed para soporte informativo y edición. Mira su podcast , es increíble. Incluso hay una liberación conmigo .



¡Buena suerte!




All Articles