我为自己的企业代码感到羞耻,以至于我自己做了一辆自行车。我不为他感到羞耻

图片



这是有关企业系统体系结构的文章的延续。推理是好的,但是没有实际应用又有什么用呢?我将展示我的框架的实际作用。



当我谈到在.NET设计应用程序的问题,并抱怨血腥的企业的艰难生活时,一切都始于然后,我描述了自己想出并自己实现的解决方案-Reinforced.Tecture。又是理论,概念推理,有远见和抱怨。这次大约是2020年,但HKT尚未交付给C#。



今天,我将以一个简单的项目为例来演示我的方法在实践中的应用,并展示其所带来的好处:从减少代码量到测试自动化以及原始的文档编写方法。正如老托瓦尔兹(Torvalds)所建议的那样:“聊天毫无价值,请告诉我代码。”



因此,我们需要做一些简单的事情,但是要在Tecture中工作。由于我们在谈论的是企业,因此我将选择一个与实际业务有些相似的示例。



我们需要:



  • 简单的本质。产品和订单立即浮现在脑海。要有产品。
  • EF DbContext和本地数据库;
  • 玩具业务逻辑;
  • 一个简单的Web项目。所有按等级,ASP.NET Core,WebAPI排名。我们将坚持其中的逻辑。


训练



项目结构如下:



图片



我将EF.Core连接到该程序集Data,在其中放置了DbContext和粘合代码以进行迁移。因为我想将逻辑保留在.NET Standard上,而不要将EF拖到我身边。



顺便说一句

DAL-, . — . , Tecture. .



我们将通过使用产品的示例来查看讲解行为。这是其本质,围绕它的逻辑将是简单而愚蠢的:



图片



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



AcmeDbContext

image



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



软件包已经发布,资源在那儿,我在Twitter,电报和github上保持联系。如果您突然想加入早期采用者的行列,并为您的宠物项目参加Tecture,请给我写信,我会尽力帮助您。



特别感谢 fillpackart关节及其“我们注定要失败”社区,以提供信息支持和编辑。观看他们的播客,太棒了。甚至有一个释放



祝好运!




All Articles