Eu tinha tanta vergonha do meu código de interpretação que fiz minha própria bicicleta. Eu tenho menos vergonha dele

imagem



Esta é uma continuação do texto sobre a arquitetura de sistemas de interpretação. O raciocínio é bom, mas de que adianta sem aplicação prática. Vou mostrar minha estrutura em ação.



Tudo começou quando falei sobre os problemas de projetar aplicativos em .NET e reclamei sobre a vida difícil em uma empresa sangrenta. Em seguida, descrevi a solução que encontrei e implementei - Reinforced.Tecture. Era teoria, raciocínio conceitual, visionário e lamentável novamente. Desta vez, é por volta de 2020, mas o HKT não foi entregue ao C #.



Hoje irei demonstrar minha abordagem em ação usando um projeto simples como exemplo e mostrar os benefícios que ele traz: da redução da quantidade de código à automação de testes e uma abordagem original para documentação. Como o velho Torvalds aconselhou: "Conversar não vale a pena, mostre-me o código."



Então, precisamos fazer algo simples, mas funcionando em Tecture. Já que estamos falando de uma empresa, vou escolher um exemplo que se assemelha vagamente a uma empresa real.



NĂłs precisamos:



  • EssĂŞncia simples. Produtos e pedidos vĂŞm imediatamente Ă  mente. Que haja produtos;
  • EF DbContext e banco de dados local;
  • LĂłgica de negĂłcios de brinquedos;
  • Um projeto web simples. Todos classificados por classificação, ASP.NET Core, WebAPI. Vamos colocar a lĂłgica nisso.


Treinamento



A estrutura do projeto será a seguinte:



imagem



Eu conectei EF.Core ao assembly Data, coloquei o DbContext e o código cola para migrações lá. Porque eu quero deixar a lógica no .NET Standard e não arrastar EF comigo.



A propĂłsito, interessante

DAL-, . — . , Tecture. .



Veremos o comportamento do Tecture usando um exemplo de trabalho com produtos. Aqui está sua essência, e a lógica em torno disso será simples e muito estúpida:



imagem



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



AcmeDbContext

image



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



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



imagem



. , O/RM:



imagem



, Id. , . :



imagem





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



imagem



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



imagem



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



imagem



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



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



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



Tecture , . .



, ITecture . .





-, Id. , . DTO. , , :



imagem



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



imagem



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



imagem



imagem



:



imagem



imagem



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





, - . . , Tecture . . , :



imagem



, . . ORM- — :



imagem



imagem



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



imagem



. - :



imagem



Postman Id .



-, Tecture. , , . — , .






. , .



. . 90% . , , — , .



, — . — . — .



.





. Tecture BeginTrace EndTrace. . :



imagem



Explain. Tecture . return :



imagem



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



imagem



.Describe.



: - . , , , . — , .



, , . , . , . , .



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



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



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



.





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



imagem



2 . GenerateData GenerateValidation. , :



imagem



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



. Reinforced.Tecture.Testing. , 4 :



imagem



: -, - ( + ). . !



, . - -. , .



, ...



Unit-



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



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



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



. . .



— , GenerateData GenerateValidation. NuGet . , .



, :



imagem



imagem



, :



imagem



, unit- 5 . , .



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



.



-



. , . , .



, Tecture. , . , — , . .



— , DirectSql, . , . .



Os pacotes já foram publicados, as fontes estão aí , estou em contato no twitter, telegrama e no github. Se você de repente quiser se juntar ao grupo de primeiros usuários e fazer o Tecture como seu projeto favorito, escreva para mim, tentarei ajudar.



Agradecimentos especiais fillpackart, Arttome sua comunidade We Are Doomed para suporte informativo e edição. Assista ao podcast deles , é incrível. Existe até uma liberação comigo .



Boa sorte!




All Articles