
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:

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.
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:

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, . , . .
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!