This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Architektura,która pomaga!
Mateusz Stasch
Mateusz Stasch
@mattstasch
http://mattstasch.net
PROJEKT IT
Źródło: CNN
UI Backend DB
SPABackend DB
Mobile
BackendSPA
Mobile
BackendEF
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
WSP DB
Command
Events
Queries
A
P
I
CQS
T
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
MobileAgreementResource
AgreementResource
Mobile
Diff
Skutki
Mobile Create Approve
Zmiana
Domena
Domena
DomenaCommand
DomenaCommand
Event
Event
DomenaCommand
Event
Event
API
T
Event
C : ApproveAgreement E : AgreementApproved
EH : AgreementNotificationHandler
EH : SupersedeAgreementHandler
EH : AgreementMailHandler
Skutki
class AgreementAuditLog: IHandle<AgreementPublished>
{// ...
public void Handle(AgreementPublished @event){
// ...}
}
class AgreementAuditLog: IHandle<AgreementPublished>
{// ...
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"){