Thanks to all for your good points!

Sorry for the delay answering but I needed to review the docs first, now 
I'll try to be brave and summarise here Graph vs Component features and/or 
properties ...

1. *graph* and *component* solve "dependency injection" 
2. *component* solves "state management" (Lifecyle protocol and SystemMap 
record)
3. *component* comes with "reloaded workflow"
4. *graph* lets you "analyze, change and compose" your functional 
computation
5. *component* forces you to use defrecord

Ok, so I'm convinced now that component is great for state management!
... but, *how can you "analyze, change and compose" the internals 
(functional computation) of your defrecords???*
I mean that component lib is really great for composing your system (and 
repl development including mocking components!) but forces you to use 
closed component that others projects can't *easily* extend [1] or change,
so for example, which would be the good pattern to follow if you need 
monitoring/logging your system in *component (*having that defrecord 
limitation)? 

what do you think if you *write your components using graph*?
So we keep 
+ system composable using component
+ component composable using graph
=> example code here 
<https://github.com/milesian/system-examples/blob/318f58383a7a4917c08147c3d0023e5bd5d93af8/src/milesian/graph_example.clj>

 
Thanks again!
Juan


[1] This was my own newbie attempt to extend defrecords 
tangrammer/defrecord-wrapper 
<https://github.com/tangrammer/defrecord-wrapper> , and milesian/aop 
<https://github.com/milesian/aop> the component integration one


El miércoles, 4 de febrero de 2015, 13:46:33 (UTC+1), Juan A. Ruz 
@tangrammer escribió:
>
> Hi guys!
>
> Can anyone give some insight on the features or downsides of choosing 
> component vs graph libs?
>
> Or maybe explain the advantages of using defrecords instead of plain fns?
>
> thanks in advance! 
> Juan
>
>  

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to