ColdFusion framework comparison


Published on

Published in: Technology
1 Like
  • Be the first to comment

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide

ColdFusion framework comparison

  1. 1. ColdFusion Framework Comparison Vikas Patel iSummation Technologies
  2. 2. What we’ll cover <ul><li>Types of frameworks </li></ul><ul><li>Structure of frameworks </li></ul><ul><li>Common things and differences </li></ul>
  3. 3. Traditional Applications <ul><li>Validation / data processing in the same page </li></ul><ul><li>Logic to select next page </li></ul><ul><li><cfif isDefined(&quot;form.submit&quot;)> </li></ul><ul><li>... process data ... </li></ul><ul><li>... redirect or continue to show errors ... </li></ul><ul><li></cfif> </li></ul><ul><li><cfform ..> </li></ul><ul><li>... </li></ul><ul><li></cfform> </li></ul>
  4. 4. Model-View-Controller <ul><li>View = display code </li></ul><ul><li>Controller = logic to select next page, form validation, interaction with Model </li></ul><ul><li>Model = all the business logic - validation, data processing etc </li></ul>
  5. 5. Types of frameworks <ul><li>MVC - application frameworks </li></ul><ul><ul><li>cfWheels, ColdBox, Fusebox, Mach-II, Model-Glue, onTap etc </li></ul></ul><ul><li>ORM - persistence frameworks </li></ul><ul><ul><li>DataFaucet, Reactor, Transfer etc </li></ul></ul><ul><li>IoC / DI - management of services (CFCs) </li></ul><ul><ul><li>ColdSpring, Lightwire, Spring (Java) </li></ul></ul><ul><li>Miscellaneous </li></ul><ul><ul><li>Validation frameworks </li></ul></ul><ul><ul><li>Event handling frameworks </li></ul></ul><ul><ul><li>etc </li></ul></ul>
  6. 6. ColdSpring
  7. 7. ColdSpring <ul><li>UserService.cfc </li></ul><ul><li>UserGateway.cfc </li></ul><ul><li>ConfigBean.cfc </li></ul>
  8. 8. ColdSpring
  9. 9. Commonalities <ul><li>What do ColdBox, Mach-II and Model-Glue have in common? </li></ul><ul><li>index.cfm - entry point for Controller </li></ul><ul><li>event-based - focused on &quot;handlers“ </li></ul><ul><li>event &quot;object“ </li></ul><ul><ul><li>Contains URL and form data </li></ul></ul><ul><ul><li>Provides a data bus for Controller / View </li></ul></ul>
  10. 10. Commonalities <ul><li>Views are &quot;regular&quot; CFML pages </li></ul><ul><li>Controllers are CFCs </li></ul><ul><li>Model is a collection of CFCs too </li></ul>
  11. 11. Configuration vs Convention <ul><li>Event handlers are specified in XML files </li></ul><ul><ul><li>Mach-II, Model-Glue - like Fusebox XML </li></ul></ul><ul><li>Event handlers are located by convention </li></ul><ul><ul><li>ColdBox - like Fusebox no-XML </li></ul></ul>
  12. 12. How are they different?
  13. 13. ColdBox
  14. 17. ColdBox <ul><li>Event names look like entity.action </li></ul><ul><ul><li>Map to handler entity.cfc, method action (event) - like Fusebox no-XML </li></ul></ul><ul><li>Core configuration is via XML file </li></ul><ul><ul><li>Just basic properties - no &quot;logic“ </li></ul></ul><ul><li>Layouts </li></ul><ul><ul><li>Default layout for whole app </li></ul></ul><ul><ul><li>Default layout for specific views/folders </li></ul></ul><ul><ul><li>Can override programmatically </li></ul></ul>
  15. 18. ColdBox <ul><li>Interceptors - called automatically during the application / request lifecycle </li></ul><ul><ul><li>SES URLs, security, tracing, cache advice… </li></ul></ul><ul><ul><li>e.g., environment interceptor can override configuration for dev, QA, prod </li></ul></ul>
  16. 19. ColdBox <ul><li>Plugins - add custom functionality </li></ul><ul><ul><li>Create plugins/Stuff.cfc </li></ul></ul><ul><ul><li>In view or handler, getMyPlugin(&quot;Stuff&quot;) </li></ul></ul><ul><ul><li>Automatically cached </li></ul></ul><ul><ul><li>Lots built-in: i18n, logger, RSS, web services, timer etc </li></ul></ul>
  17. 20. Mode-Glue
  18. 21. Model-Glue <ul><li>Event handlers in XML </li></ul><ul><ul><li>Publish messages for subscribed listeners </li></ul></ul><ul><ul><li>Specify conditional result / event mapping </li></ul></ul><ul><ul><li>Specify views to render </li></ul></ul>
  19. 22. Model-Glue <ul><li>Controller CFCs (methods are listeners) </li></ul><ul><ul><li>Conditional logic sets &quot;results&quot; to control the flow of events (like filters in Mach-II) </li></ul></ul><ul><ul><li>A few automatic events during each request (like plugins in Mach-II or interceptors in ColdBox) </li></ul></ul>
  20. 23. Model-Glue <ul><li>Scaffolding (MG2) / code generation (MG3) </li></ul><ul><ul><li>Builds XML, controllers and views for you to speed up development </li></ul></ul><ul><li>Event types (new in MG3) </li></ul><ul><ul><li>Reduces boilerplate layout / result mapping in event handler XML </li></ul></ul>
  21. 24. Model-Glue <ul><li>Integrated ColdSpring </li></ul><ul><ul><li>Autowiring of model into controllers </li></ul></ul><ul><ul><li>Model-Glue itself is wired together with ColdSpring! </li></ul></ul><ul><li>View formats (new in MG3) </li></ul><ul><ul><li>Select different views in single event handler to render HTML or AJAX </li></ul></ul>
  22. 25. Mach-II
  23. 26. Mach-II <ul><li>Event handlers in XML </li></ul><ul><ul><li>Call methods on listener CFCs </li></ul></ul><ul><ul><li>Specify views to render </li></ul></ul><ul><ul><li>Can publish message for subscribed listeners </li></ul></ul><ul><ul><li>Can map event names </li></ul></ul><ul><ul><li>Both decouple listeners from XML </li></ul></ul>
  24. 27. Mach-II <ul><li>Plugins - a bit like interceptors in ColdBox </li></ul><ul><ul><li>Automatically called during each request </li></ul></ul><ul><li>Filters - conditional logic for event handlers </li></ul><ul><ul><li>Can change flow of events </li></ul></ul><ul><li>Built-in caching, logging </li></ul><ul><li>Environment support </li></ul><ul><li>HTML helper </li></ul>
  25. 28. Wrap up.. <ul><li>At a high level, ColdBox, Mach-II and Model-Glue perform similar functions </li></ul><ul><li>ColdBox has convention-based approach </li></ul><ul><li>Model-Glue is lightweight and simple </li></ul><ul><li>Mach-II is very OO and built for extension </li></ul>
  26. 29. Wrap up..
  27. 30. Q & A