这是有关企业系统体系结构的文章的延续。推理是好的,但是没有实际应用又有什么用呢?我将展示我的框架的实际作用。
当我谈到在.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-.
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, 关节及其“我们注定要失败”社区,以提供信息支持和编辑。观看他们的播客,太棒了。甚至有一个释放我。
祝好运!