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
24
0
Share
A_resource_oriented_framework_using_the_DI___AOP___REST_Triangle.pdf
Akihito Koriyama
August 02, 2013
More Decks by Akihito Koriyama
See All by Akihito Koriyama
存在論的プログラミング: 時間と存在を記述する
koriym
5
750
BEAR.Sunday Framework Masterclass
koriym
0
49
Be Framework: 生命システムとしての存在理解
koriym
0
130
新世界の理解
koriym
0
210
AI Centric
koriym
0
510
app-state-diagram
koriym
0
140
OOP, Double Dispatch and Visitor Pattern
koriym
3
190
BEAR.Sunday 2014-2024
koriym
0
92
イベント駆動コンテンツ (a.k.a Webアプリケーションの効率を再定義するBEAR.Sundayの分散キャッシングフレームワーク)
koriym
5
9.5k
Featured
See All Featured
Believing is Seeing
oripsolob
1
100
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
150
Done Done
chrislema
186
16k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
55
3.3k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
250
The Cult of Friendly URLs
andyhume
79
6.8k
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
68
38k
Deep Space Network (abreviated)
tonyrice
0
99
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
2
3.8k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
30k
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