Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Architektura, która pomaga!
Search
Matt Stasch
November 25, 2016
Programming
0
570
Architektura, która pomaga!
My presentation from FutureDevDay 2016
Matt Stasch
November 25, 2016
Tweet
Share
More Decks by Matt Stasch
See All by Matt Stasch
Monads in .NET
mat3u
0
430
HATEOAS dla ludzi!
mat3u
0
490
Domain Events - czyli jak radzić sobie z rzeczywistością!
mat3u
1
890
Rx 101
mat3u
0
830
F# 101
mat3u
0
770
Prosta architektura dla nieprostego systemu
mat3u
1
800
Other Decks in Programming
See All in Programming
Laravel Boost 超入門
fire_arlo
3
210
私の後悔をAWS DMSで解決した話
hiramax
4
210
旅行プランAIエージェント開発の裏側
ippo012
2
900
Swift Updates - Learn Languages 2025
koher
2
470
testingを眺める
matumoto
1
140
250830 IaCの選定~AWS SAMのLambdaをECSに乗り換えたときの備忘録~
east_takumi
0
390
Ruby Parser progress report 2025
yui_knk
1
440
AIコーディングAgentとの向き合い方
eycjur
0
270
時間軸から考えるTerraformを使う理由と留意点
fufuhu
16
4.8k
AIと私たちの学習の変化を考える - Claude Codeの学習モードを例に
azukiazusa1
10
4k
Ruby×iOSアプリ開発 ~共に歩んだエコシステムの物語~
temoki
0
270
AWS発のAIエディタKiroを使ってみた
iriikeita
1
180
Featured
See All Featured
Six Lessons from altMBA
skipperchong
28
4k
jQuery: Nuts, Bolts and Bling
dougneiner
64
7.9k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.4k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
33
2.4k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
46
7.6k
Scaling GitHub
holman
463
140k
The Art of Programming - Codeland 2020
erikaheidi
56
13k
Context Engineering - Making Every Token Count
addyosmani
2
41
Measuring & Analyzing Core Web Vitals
bluesmoon
9
580
A better future with KSS
kneath
239
17k
GraphQLの誤解/rethinking-graphql
sonatard
72
11k
The Pragmatic Product Professional
lauravandoore
36
6.9k
Transcript
Architektura, która pomaga! Mateusz Stasch
Mateusz Stasch @mattstasch http://mattstasch.net
PROJEKT IT
None
Źródło: CNN
UI Backend DB
SPA Backend DB Mobile
Backend SPA Mobile
Backend EF SPA Mobile
Backend DB SPA Mobile
DB A P I RESTish SPA Mobile
DB Command A P I SPA Mobile
DB Command Events A P I SPA Mobile
DB Command Events Queries A P I CQS SPA Mobile
CQRS
DB Zmiana WSP Skutki Odczyt A P I SPA Mobile
DB Zmiana WSP Skutki Odczyt A P I SPA Mobile
DB Zmiana WSP Skutki Odczyt A P I SPA Mobile
DB Zmiana WSP Skutki Odczyt A P I SPA Mobile
Zmiana
Mobile
Mobile Agreement Resource Agreement Resource
Mobile Diff Skutki
Mobile Create Approve
Zmiana
Domena
Domena
Domena Command
Domena Command Event Event
Domena Command Event Event API T Event
C : ApproveAgreement E : AgreementApproved EH : AgreementNotificationHandler EH
: SupersedeAgreementHandler EH : AgreementMailHandler
Skutki
class AgreementAuditLog : IHandle<AgreementApproved> { // ... public void Handle(AgreementPublished
@event) { // ... } }
class AgreementAuditLog : IHandle<AgreementApproved> { // ... public void Handle(AgreementPublished
@event) { // ... } }
class AgreementMailHandler : IHandle<AgreementApproved> { // ... public void Handle(AgreementApproved
@event) { MailService.Send(); } }
Manager Facade DB API Service
AgreementApproved
AgreementCreated AgreementConditionsChanged AgreementApproved AgreementSuperseded AgreementArchived
AgreementCreated AgreementConditionsChanged AgreementApproved AgreementSuperseded AgreementArchived mstasch jkowalski jkowalski system mstasch
2016/01/05 12:34:34 2016/01/05 14:35:28 2016/01/07 10:04:10 2016/06/01 14:12:34 2017/01/01 00:00:50
Manager Facade DB API Service
Odczyt
Mobile
Mobile
Mobile Cache
Mobile Cache
Architektura daje klocki na właściwym poziomie abstrakcji
Źródło: Widmann SRL
Źródło: Wikimedia
Źródło: Wikimedia
SPA DB Command WSP Events Queries A P I CQS
if (user.Roles.Any(RolesHelper.IsAdministrator) && agreement.status == AgrementStatus.Active) { // ... }
if (user.roles.some(roleHelper.isAdministrator) && agreement.status === "Active") { // ... } ... .Where(agr => agr.Owner == user.Id && agr.Editors.Contains(user.Id)) ...
SPA DB Command Events Queries A P I S S
S S
WSP SPA DB Command Events Queries A P I CQS
T
Resource W S P
Resource W S P Resource Allowed Operations
Resource Resource W S P Allowed Operations "AllowedOperations": { "CanEdit":
false, "CanApprove": true, "CanReject": true, "CanUploadContract": false, ...
WSP SPA DB Command Events Queries A P I T
S
Security
Hypermedia
Po co to komu?
Nie myśleć…
None
Nie myśleć… … o tym co nie jest esencjonalną wartością
biznesową
To jest UX dla programistów Żółw „ ”
Pytania?
Dzięki! Mateusz Stasch