1 / 65

Fusebox 3.0 The Framework, The Methodology, The Community Nat Papovich, Fusium

Fusebox 3.0 The Framework, The Methodology, The Community Nat Papovich, Fusium. Complexity. Amoebas at the start Were not complex; They tore themselves apart And started sex. - Arthur Guiterman. Agenda. Basics Benefits Technical Methodology Community We have a lot to cover!.

Download Presentation

Fusebox 3.0 The Framework, The Methodology, The Community Nat Papovich, Fusium

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Fusebox 3.0The Framework, The Methodology, The CommunityNat Papovich, Fusium

  2. Complexity Amoebas at the start Were not complex; They tore themselves apart And started sex.- Arthur Guiterman

  3. Agenda • Basics • Benefits • Technical • Methodology • Community We have a lot to cover!

  4. Fusebox Basics:Free • Fusebox will never be a for-purchase system. • Just like the rest of ColdFusion, extras cost. • Custom Tags • Example Applications • Online Training • Extensive Articles

  5. Fusebox Basics:File Organization • Fuses • Fusebox for files or templates – not Custom Tags • Naming conventions (covered in Technical) • Each fuse performs a discrete task * • Small file size makes debugging easier • Circuits • Mini-applications * • Directory-based • Aggregate similar functionality • Variables available across multiple files

  6. Fusebox Basics:File Organization

  7. Fusebox Basics:Fuseactions • Control the flow of the application • Traditional model of a controller file • MVC: Model-View-Controller in J2EE • main.c ? • A default fuseaction is set

  8. dsp_anotherFuse.cfm act_aFuse.cfm Fusebox Basics:Fuseactions The fuseaction <cfswitch expression =“#fusebox.fuseaction#”> <cfcase value=“doSomething”> <cfinclude template=“act_aFuse.cfm”> </cfcase> …. <cfcase value=“doSomethingElse”> <cfinclude template=“dsp_anotherFuse.cfm”> </cfcase> </cfswitch> dsp_yetAnotherFuse.cfm The fuses

  9. Fusebox Basics:Architectural Decisions • With experience, you will be able to: • Lay out circuits • Nest circuits • Choose persistent variables • Create application settings

  10. Fusebox Basics:Sites Using Fusebox • AutoByTel.com • SuperBowl ad: massive (1900%?) growth • RoomsToGo.com • Largest furniture retailer online • Cluster of 10+ servers • eBags.com • First Fusebox implementation: 1997 • Largest bag retailer online

  11. Fusebox Basics:When To Use • E-commerce sites • Easy to implement circuits • Intranets • Plug-n-play new applications • Web Applications • Massive size demands strict architecture

  12. Fusebox Basics:Terminology • Circuits • Fuseactions • Fuses • SES • Search Engine Safe URLs http://www.mysite.com/index.cfm/fuseaction/user.login/id/14.htm

  13. Moving On… Fusebox Benefits

  14. Fusebox Benefits:Speed Of Development • Lower costs • First to market is the survivor Russ Johnson and one co-worker built www.csx.com full content management system in 2 weeks from scratch, having never written a Fusebox application before.

  15. Fusebox Benefits:Ease Of Maintainability • Fusedocs • Documentation for initial creation AND maintenance • Simplified, obvious application flow • Fuseactions • Component independence • Fuses • Circuits

  16. Fusebox Benefits:Community-Owned • Bug-free • Closer to Linux than Microsoft • Not bound to a company

  17. Fusebox Benefits:Reusability • Reuse generic components across multiple applications • Reuse fuses and fuseactions across the same application

  18. Fusebox Benefits:Extensible • Does not preclude Custom Tag use • Non-encrypted framework • But!! Changes to core introduce compatibility issues

  19. Fusebox Benefits:Established Framework • Focus on the business requirements • Focus on how to make the customer happy • Do not focus on how to keep it all together • Do not focus on technical issues

  20. Fusebox Benefits:Fast Learning Curve • Intermediate developers can pick up Fusebox in a day • By learning Fusebox alongside ColdFusion, beginning developers can learn right from the start

  21. Debugging myth Tracking down variables Separation of display from action Fewer lines per template Overhead Milliseconds penalty for great gain Scales to millions of hits per day Poorly architected code does not scale No application.cfm use <cfmodule> does not call application.cfm again Commitment All applications grow Plan ahead now Five files in a .zip Fusebox Benefits:The Anti-Benefits

  22. Moving On… Technical Fusebox Don’t forget that it’s free!

  23. Technical Fusebox:Airlines: The Old Way Point-to-point routing San Diego Orlando

  24. Technical Fusebox:Airlines: The New Way Minneapolis New York Seattle Chicago San Diego Orlando In ~1960, United opened the first hub, in Chicago.

  25. Technical Fusebox:The Core File (fbx_fusebox_CFxx.cfm) • Specific to each version of ColdFusion • ColdFusion 3.x not supported • UNIX, Linux versions available • Different versions mean faster execution • Available for other languages • PHP, JSP • Very Fast • <cfscript>ing

  26. Technical Fusebox:The Core File (fbx_fusebox_CFxx.cfm) • No Custom Tags • Fast • V2: formURL2attributes.cfm now in-line • Copies all form and URL scoped variables to attributes scope • Stable and frozen • Upgrades by the Standards Committee

  27. Technical Fusebox:The Core File (fbx_fusebox_CFxx.cfm) • Developer doesn’t need to understand • But it is well-commented and easy to follow • Latest core file always available from Fusebox.org • Web service underway to check for updates to core and download latest

  28. Technical Fusebox:The Core File (fbx_fusebox_CFxx.cfm) • API (“fusebox” structure) • fusebox.isCustomTag: is this request coming from cfmodule? • fusebox. isTargetCircuit: is this the target circuit for the request or is it just a nested circuit? • fusebox. suppressLayout: should this request not contain the “wrapper”? • fusebox. suppressErrors: yes during development, no during production • …many more

  29. Technical Fusebox:The Core File (fbx_fusebox_CFxx.cfm) • A glimpse at the core But not an actual stare

  30. Technical Fusebox:Other core files (fbx_file.cfm) • Default web server document • Usually index.cfm • Handles any pre-processing • Includes the core file - fbx_fusebox_CF50.cfm

  31. Technical Fusebox:Other core files (fbx_file.cfm) • fbx_circuits.cfm • Similar to J2EE’s JNDI concept • Provides mapping to directories via circuit alias “This circuit lives down this directory chain.”

  32. Technical Fusebox:Other core files (fbx_file.cfm) • Root-level fbx_settings.cfm • Serves similar purpose as application.cfm • V2: app_globals.cfm deprecated by this file

  33. Technical Fusebox:Other core files (fbx_file.cfm) • Children fbx_settings.cfm • If acting as a standalone circuit, this file must include the functionality of the root fbx_settings. • All fbx_settings.cfm files in the directory chain down to the target circuit get included in the call. • Circuits tend not to nest more than ~4 deep

  34. Technical Fusebox:Other core files (fbx_file.cfm) • fbx_switch.cfm • Only the target circuit fbx_switch is run (not like in V2) • Classic switch/case statement, switch on #fuseaction# • Aim for less than 15 fuseactions per fbx_switch.cfm • Try to have only simple CFML in the cases: <cfinclude> <cfset> <cfif> <cflocation>

  35. Technical Fusebox:Other core files (fbx_file.cfm) • fbx_layouts.cfm • Does not do the actual displaying – only chooses which display file to use • Allow Dreamweaver or other HTML smarties to do their job outside the Fusebox framework • Nesting layouts allows multiple fuseactions in different circuits to be displayed on one page

  36. Technical Fusebox:Other core files (fbx_file.cfm) • fbx_savecontent.cfm • Custom Tag version of <cfsavecontent> for pre-CF5.0 • V2: called cf_bodycontent by Steve Nelson

  37. Technical Fusebox:Fuse Prefixes • dsp_ • Display template • Display only • Forms • Content • As little CFML as possible • Often has an accompanying act_ file • dsp_login.cfm, dsp_NewsHeadlines.cfm, dsp_SearchResults.cfm

  38. Technical Fusebox:Fuse Prefixes • act_ • Action template • No display • Contains anything not database or display • Form error checking and processing, back-end services, scheduled tasks, cfmail, verity, etc • V2: inserts, updates, deletes • act_ValidateOnDomain.cfm, act_PullNewsFromMoreover.cfm, act_VeritySearch.cfm

  39. Technical Fusebox:Fuse Prefixes • qry_ • Query template • No display • All database interaction • Update, insert, delete, select, etc • <cfquery> <cfstoredproc> • V2: only for selects • Aim for reusability • qry_ValidateUser.cfm, qry_CreateNewsItem.cfm, qry_GetUserPreferences.cfm

  40. Technical Fusebox:Fuse Prefixes • url_ • Optional file to contain <cflocation> logic • Makes for cleaner fbx_switch.cfm • If not used, <cflocation>s occur in the qry_ or act_ files • No display • url_Login.cfm, url_DeletedNewsItem.cfm, url_VerityIndexed.cfm

  41. Technical Fusebox:Fuse Prefixes • app_ • Application template • No display • V2: Deprecated in favor of fbx_settings.cfm and act_files. • app_server.cfm • Server-specific like machine name, etc • app_secure.cfm • V2: Formerly app_locals.cfm and app_globals.cfm

  42. Technical Fusebox:Exit Fuseactions (XFAs) • No hard-coded exit points • Maximum reuse of code • In structure “xfa.” • Set XFAs to match exit points in fuses like links, form actions, <cflocation>s • Extracts fuses from the application • Fuses act as “black box” unaware of the big picture • Always in the form “circuit.fuseaction”

  43. Technical Fusebox:Fusedocs • Defines all ins and outs for a fuse • Paradigm shift for some • Write code from the documentation • Do not write the documentation from the code • Just like blueprints for a house • Accompanies every fuse • In comments <!--- ---> at the top

  44. Technical Fusebox:Fusedocs, cont. • Programming Definition Language (PDL) • XML based • DTD available from fusebox.org • Don’t be scared of XML • VTML tag helpers available • With CF Studio integrated help • Due to XML structure, allows tools to read Fusedocs and validate code or even write code for you

  45. Technical Fusebox:Test Harnesses • Automatically created from completed Fusedocs using XML parsing and Fusedoc reading tools • Unit test each fuse • Similar to Extreme Programming? • One harness for each fuse to allow simple testing

  46. Moving On… Fusebox Methodology: FLiP

  47. FLiP:Building A House • If the architect quits • If the contractor screws up • If all the carpenters get fired • If you need an addition • Home building has a long history • Application development does not

  48. FLiP:Initial Requirements Gathering • No system for this – do as normal • Sales meeting to get rough ideas down

  49. FLiP:Wireframing • First serious requirements gathering • A client knows what they want after they see it • Show them a web site without spending any time creating it • Extremely fast • Gets client buy-in early • Resist the urge to code • Fusium’s Rebar

  50. FLiP:Prototyping • HTML mockups • 100% identical to the finished application • Resist the urge to code

More Related