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
24
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
Be Framework: 生命システムとしての存在理解
koriym
0
63
新世界の理解
koriym
0
170
AI Centric
koriym
0
400
app-state-diagram
koriym
0
110
OOP, Double Dispatch and Visitor Pattern
koriym
2
150
BEAR.Sunday 2014-2024
koriym
0
71
イベント駆動コンテンツ (a.k.a Webアプリケーションの効率を再定義するBEAR.Sundayの分散キャッシングフレームワーク)
koriym
4
8.6k
Unconf: RWA読書会
koriym
0
620
REST 6+4の制約
koriym
2
2.9k
Featured
See All Featured
Thoughts on Productivity
jonyablonski
72
4.9k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
658
61k
Why Our Code Smells
bkeepers
PRO
340
57k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
55
3k
Art, The Web, and Tiny UX
lynnandtonic
303
21k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
10
900
How GitHub (no longer) Works
holman
315
140k
How to Think Like a Performance Engineer
csswizardry
27
2.2k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
285
14k
Testing 201, or: Great Expectations
jmmastey
46
7.7k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.5k
Designing for humans not robots
tammielis
254
26k
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