[Catalyst] how to reuse Catalyst Schema for non-web purposes?
    Simon Wilcox 
    simonw at digitalcraftsmen.net
       
    Wed Apr 22 22:21:20 GMT 2009
    
    
  
On 22/4/09 23:03, kakimoto at tpg.com.au wrote:
> IMO the best place for your business logic is the controller.
Then you're wrong, at least in the eyes of many people.
http://en.wikipedia.org/wiki/Model-view-controller
The Controller is just a layer that converts the input to something that 
can be passed to the Model and then sends the output back to the user 
via a View.
You *can* put all your logic in the controller but typically you will 
end up with two problems:
1. Your app is tightly bound to a web framework and adding some other 
sort of user interaction, or extending the application code elsewhere 
becomes difficult, which is what started this thread isn't it ?
2. It becomes hard to test as you need to have the web framework running 
to run the tests. You should be able to test all of the use cases & 
business interactions outside of the web framework. If you can't, then 
that's a code smell and an indicator that you have too much going on in 
your Controller classes.
The Catalyst Model classes should really be a very thin shim over the 
top of your DBIx::Class Schema objects which is where all the 'heavy 
lifting' of the business process takes place.
Hope that makes sense,
Simon.
    
    
More information about the Catalyst
mailing list