I have been involved in the development of business applications in .NET for the second decade and every time I see the same problems - crap and clutter. A mess of services, UoW, DTOs, helper classes. In other places, direct access to the database by hand, logic in static classes, kilometer-long IoC configuration footcloths.
When I was a young and high-spirited middle, I wrote like that too. Then he hit the wall with his fist, shouting: "Enough! Next time I'll do it differently." The next time it really started "differently" - with a cool head and a strict approach to architecture - but the output still turned out to be the same substance, better by a couple of millimeters.
However, evolution is a merciless thing: my last system seemed to me more or less close to ideal. The complexity did not grow much, the development speed did not fall for quite a long time, new employees at the very least enter the system. I took these results as a basis, improved them and now I announce to you my new development: Reinforced.Tecture.
Where does the mess come from
, , . , , , , , โฆ , , โ .
-, ?
โ IoC!
, : - โ . ? Connection ( ), - credentials, web.config ( ) , -UoW-. -.
, โ , . ! , , IoC- (-).
? , , IoC-: , -, .
โ unit-!
.
: unit- C#-, "UoW Repository"? (). , , . .
- . ( ), , .. " ? , ".
, - , 10 โ , , ! " ", , , , . . "", QA- ( , end-to-end), .
, 5 โ . . , QA Automation โ โ .
โ !
? - , , , O/RM 3000 . , - โ . โ . โ , (. โobject-relational impedance mismatchโ). O/RM , ( โ ). , . , SQL . .
โ . -, . , , , - , e-mail . - , .
โ !
โ , . , . ? . + , , Unit of Work. , . DTO ( ), , Unit of Work, .
- , 10 , 10 , . , , . .
, , IT , 50 -, โ . - , .
, โ ! , , . IT-, .
โ !
? , . , . , SOLID.
. UML, . , , , โ . , , โ . , โ . .
, ( 99% ) . , , , . - โ 50 . , ! . , , โ . : , .
โ ", " ", " . , , , , . โ , .
โ XXX โ !
, , โ . , โ . XXX โ . , .
" YYY"! , -. , YYY .
, โ , YYY, GGG GGG. " " , redux: "redux โ โฆ !". - " YYY 5 " . .
, YYY , GGG. , , YYY , . ?
YYY . , YYY โ , production- . , , , .
, . . , , , . " " , :
2000 ( VB.NET-C# ), . , .
,
100500 , . . . maintainability, .
, . , . ( - ).
, , DTO-. โ . โ , , . , . , . " ", .
โ . ( ) , .
! โ -! . , Java-, . - C# โ , , , , !
, -, . . , . , , , , .
, , , , . ( ), . DI-. , . โ .
โ , โ . - ( ), - , . , - , .
, , โ . -โฆ โฆ .
. , , .
โ . . , unit- . , . . , โ .
- . , . CI- . โ ! . , . โ .
, , , โ . ?
, meaningful-, , . .
: ? , - , -, , - , โฆ - , QA, , . , . , , , โ QA ", ", , , . - code coverage . โ . !
TDD โ . , . TDD .
...
โ , .
UPD: , .