[FDD 2016] Mateusz Stasch - Architektura, która pomaga!

68
Architektura, która pomaga! Mateusz Stasch

Transcript of [FDD 2016] Mateusz Stasch - Architektura, która pomaga!

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"){

// ...}

...

.Where(agr => agr.Owner == user.Id && agr.Editors.Contains(user.Id))

...

SPA DB

Command

Events

Queries

A

P

I

S

S

S

S

WSPSPA DB

Command

Events

Queries

A

P

I

CQS

T

Resource

W

S

P

Resource

W

S

P

ResourceAllowed

Operations

Resource Resource

W

S

PAllowed

Operations

"AllowedOperations":{

"CanEdit": false,"CanApprove": true,"CanReject": true,"CanUploadContract": false,...

WSPSPA DB

Command

Events

Queries

A

P

I

T

S

Security

Hypermedia

Po co to komu?

Nie myśleć…

Nie myśleć…… o tym co nie jest esencjonalną wartością biznesową

To jest UX dla programistów

Żółw

„ ”

Pytania?

Dzięki!Mateusz Stasch