Download presentation
Presentation is loading. Please wait.
Published byRalph Moody Modified over 10 years ago
1
Fusebox 3.0 The Framework, The Methodology, The Community Nat 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
Fusebox Basics: Fuseactions …. dsp_anotherFuse.cfmact_aFuse.cfm The fuseaction The fuses dsp_yetAnotherFuse.cfm
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
Fusebox Benefits: The Anti-Benefits 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 – does not call application.cfm again Commitment –All applications grow –Plan ahead now –Five files in a.zip
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 In ~1960, United opened the first hub, in Chicago. Orlando New York Minneapolis Seattle San Diego
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 – 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
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 Technical Fusebox: The Core File (fbx_fusebox_CFxx.cfm)
28
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 Technical Fusebox: The Core File (fbx_fusebox_CFxx.cfm)
29
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:
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 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 –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 logic –Makes for cleaner fbx_switch.cfm –If not used, 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, 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
51
FLiP: DevNotes Need to enable customer communication of the design Facilitates a client approval process Threaded discussion about each page –“Can I get this in cornflower blue?”
52
FLiP: Prototype Lockdown Site is complete in HTML –Example credit card processing: Approval Failure message 1 Failure message 2 Bad credit card number
53
FLiP : Architecting Using mind mapping software: –Identify each circuit –Identify each fuseaction –Identify each fuse –Determine exit points –Generate skeleton code Fuseminder.cfm
54
FLiP: Fusedoc’ing Copy prototype html page into display fuses Write black-box fusedocs Create test harness for each fuse to validate –Act as a test routine –Use harness.cfm –QuerySims Coder should not need to know anything else about the application
55
FLiP: Coding Distribution of effort –Solve the Mythical Man Month? SecretAgents.com Coding is now a trivial matter Distribution of database required for qry_ fuses
56
FLiP: Assembly Architect gathers completed fuses Ensure fuse meets requirements of Fusedoc Drop into correct directories Verify exit points No need to open up completed fuses
57
FLiP: Testing No Fusebox-specific system for this Use wireframe and prototype as guide
58
Moving On… Fusebox Community
59
Fusebox Community: Best Practices Security model –V2: app_secure.cfm –Hal Helms: cf_secure QuerySims cf_reuseForm –Use one.cfm file for insert and edit form cf_returnFuseaction
60
Fusebox Community: Community Support Since the beginning, Fusebox is open to change and improvements Developer-created Custom Tags Contributed example applications Synthis.com - Adalon code generation
61
Fusebox Community: Email Lists fusebox@topica.com –Beginners welcome –Heavily patrolled by active members FLiP@topica.com –FLiP methodology only steer-fb@topica.com –For Fusebox future
62
Fusebox Community: Fusebox.org Whitepapers Latest core files Example applications
63
Fusebox Community: Other Sites www.halhelms.com –QuerySim, tutorials, etc www.fusium.com –Rebar wireframe editor, FEX core files, developer tools, example applications www.secretagents.com –Online tutorials, fusecoders www.bombusbee.com –PHP Fusebox
64
Fusebox Community: Books And Articles Papovich and Peters, 2002 Fusebox Pulse newsletter (fusium.com) Hal Helms writes monthly articles in CFDJ
65
Fusebox Community: Fusebox Conference In conjunction with Macromedia DevCon, October in Orlando ~20 speakers Jeremy Allaire keynoted last year
Similar presentations
© 2025 SlidePlayer.com Inc.
All rights reserved.