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
A_resource_oriented_framework_using_the_DI___AO...
Search
Akihito Koriyama
August 02, 2013
0
20
A_resource_oriented_framework_using_the_DI___AOP___REST_Triangle.pdf
Akihito Koriyama
August 02, 2013
Tweet
Share
More Decks by Akihito Koriyama
See All by Akihito Koriyama
AI Centric
koriym
0
250
app-state-diagram
koriym
0
38
OOP, Double Dispatch and Visitor Pattern
koriym
2
120
BEAR.Sunday 2014-2024
koriym
0
57
イベント駆動コンテンツ (a.k.a Webアプリケーションの効率を再定義するBEAR.Sundayの分散キャッシングフレームワーク)
koriym
4
7.4k
Unconf: RWA読書会
koriym
0
540
REST 6+4の制約
koriym
2
2.7k
RESTful Web API 読書会 #1
koriym
3
280
RESTの力 / The Power of REST
koriym
10
7.6k
Featured
See All Featured
The Pragmatic Product Professional
lauravandoore
32
6.4k
BBQ
matthewcrist
87
9.5k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
129
19k
Automating Front-end Workflow
addyosmani
1368
200k
Bash Introduction
62gerente
611
210k
A Philosophy of Restraint
colly
203
16k
Fashionably flexible responsive web design (full day workshop)
malarkey
406
66k
Making Projects Easy
brettharned
116
6k
[RailsConf 2023] Rails as a piece of cake
palkan
53
5.3k
Into the Great Unknown - MozCon
thekraken
35
1.6k
Six Lessons from altMBA
skipperchong
27
3.6k
Rails Girls Zürich Keynote
gr2m
94
13k
Transcript
A resource oriented framework using the DI / AOP /
REST Triangle Version 0.1 (27 July
[email protected]
meetup #2)
Authors • Akihito Koriyama • Richard McIntyre
What’s BEAR.Sunday ? (1) • DI / AOP / REST
centered framework DI AOP REST
DI • Dependency inversion principle (DIP) • Object instantiation /
usage separation
DIP • Code should depend on things that are at
the same or higher level of abstraction • High level policy should not depend on low level details
Object instantiation / usage separation • Don’t mix (compile /
runtime ) • One time object construction DPNQJMF SVOUJNF
Application object graph by context • Application is single big
one valuable • Change structure, not behavior $app Object i/f i/f Object i/f i/f Object Router Response JSON XM L
Application class
ʁ #FUUFS DPNQJMF SVOUJNF
Ray.Di • Annotation based DI framework • Binding DSL •
True DI
AOP • Cross cutting concern as framework function • Multi
layered architecture Cache Log Auth
Aspects • log / cache / validation ... are aspects.
• Core concern is your domain model, not aspects.
Binding by context • Annotate, then bind interpretation • @Api
is intention. “JSON” is implement.
ऍΛղऍ ͜͜ͰʮΫϥεʹ@Dbͱऍ͕͋Δʯˍ ʮ”on”Ͱ࢝·͍ͬͯΔʯϝιουʹDBΛ ηοτ͢ΔDBΠϯδΣΫλʔΛଋറ ͍ͯ͠ ·͢ɻ DBΠϯδΣΫλʔϝιουʹΑͬ ͯmaster/slaveΛબ͠DBΦϒδΣΫτΛ ೖ͠·͢ɻ ར༻ଆɺඃར༻ଆͱʹDBऔಘ
ͷؔ৺͕͞Ε͍ͯ·͢ɻ ଋറ
Binding by condition • @Log all DELETE method • @Auth
all /admin/ path resources
Layering by context • MVC, Is 3 enough ?
Layering by context • Configurable layering over fixed callback Model
Cache Form Transaction Auth Validation
Runtime injection by aspect • Parameter provider inject parameter. •
method / parameter lookup • test friendly
Ray.Aop • AOP alliance standard • Injectable interceptor • Google
Guice
REST • Everything is a resource / API • use
URI, not class name
API driven development • API is hub • test friendly
DB API Mobile Web API Cloud Mock URI API
Resource graph • Resource is layered
http://blog.8thlight.com/uncle-bob/2012/08/13/the-clean-architecture.html
Layered Resource UI Mobile Web Page Resource App script App
Resource Entity
Lazy request • ϏϡʔτϦΨʔͷϦιʔεϦΫΤετ
What’s BEAR.Sunday ? (2) • Resource oriented framework • no
control-object paradigm • information has name
What’s BEAR.Sunday ? (3) • Connecting framework • DI -
object to object • AOP -business logic to app logic • REST - information to information
Performance • Super fast • cache compiled object • cache
all objects • http friendly architecture
Hard functionality / Soft functionality • DI for application function
• AOP for runtime function
Scale • “model proxy” pattern • runtime injection makes db
scale easy
What’s BEAR.Sunday ?
“Zen” Framework less is more.
Arigato Photo socket http://www.flickr.com/photos/sydeen/5199310841/ three cat http://www.flickr.com/photos/ferran-jorda/2188887967 mvc http://symfony.com/legacy/doc/jobeet/1_2/en/04?orm=Propel