Fusebox 3.0 The Framework, The Methodology, The Community Nat Papovich, Fusium - PowerPoint PPT Presentation

1 / 65
About This Presentation
Title:

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

Description:

SuperBowl ad: massive (1900%?) growth. RoomsToGo.com. Largest ... Need to enable customer communication of the design. Facilitates a client approval process ... – PowerPoint PPT presentation

Number of Views:92
Avg rating:3.0/5.0
Slides: 66
Provided by: natp151
Category:

less

Transcript and Presenter's Notes

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


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 BasicsFree
  • 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 BasicsFile 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 BasicsFile Organization
7
Fusebox BasicsFuseactions
  • 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 BasicsFuseactions
The fuseaction
ltcfswitch expression fusebox.fuseactiongt
ltcfcase valuedoSomethinggt ltcfinclude
templateact_aFuse.cfmgt lt/cfcasegt . ltcfcase
valuedoSomethingElsegt ltcfinclude
templatedsp_anotherFuse.cfmgt lt/cfcasegt lt/cfsw
itchgt
dsp_yetAnotherFuse.cfm
The fuses
9
Fusebox BasicsArchitectural Decisions
  • With experience, you will be able to
  • Lay out circuits
  • Nest circuits
  • Choose persistent variables
  • Create application settings

10
Fusebox BasicsSites 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 BasicsWhen To Use
  • E-commerce sites
  • Easy to implement circuits
  • Intranets
  • Plug-n-play new applications
  • Web Applications
  • Massive size demands strict architecture

12
Fusebox BasicsTerminology
  • Circuits
  • Fuseactions
  • Fuses
  • SES
  • Search Engine Safe URLs
  • http//www.mysite.com/index.cfm/fuseaction/user.lo
    gin/id/14.htm

13
Moving On Fusebox Benefits
14
Fusebox BenefitsSpeed 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 BenefitsEase Of Maintainability
  • Fusedocs
  • Documentation for initial creation AND
    maintenance
  • Simplified, obvious application flow
  • Fuseactions
  • Component independence
  • Fuses
  • Circuits

16
Fusebox BenefitsCommunity-Owned
  • Bug-free
  • Closer to Linux than Microsoft
  • Not bound to a company

17
Fusebox BenefitsReusability
  • Reuse generic components across multiple
    applications
  • Reuse fuses and fuseactions across the same
    application

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

19
Fusebox BenefitsEstablished 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 BenefitsFast 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 BenefitsThe 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
  • ltcfmodulegt does not call application.cfm again
  • Commitment
  • All applications grow
  • Plan ahead now
  • Five files in a .zip

22
Moving On Technical Fusebox
Dont forget that its free!
23
Technical FuseboxAirlines The Old Way
Point-to-point routing
San Diego
Orlando
24
Technical FuseboxAirlines The New Way
Minneapolis
New York
Seattle
Chicago
San Diego
Orlando
In 1960, United opened the first hub, in Chicago.
25
Technical FuseboxThe 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
  • ltcfscriptgting

26
Technical FuseboxThe 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 FuseboxThe Core File
(fbx_fusebox_CFxx.cfm)
  • Developer doesnt 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 FuseboxThe 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 FuseboxThe Core File
(fbx_fusebox_CFxx.cfm)
  • A glimpse at the core
  • But not an actual stare

30
Technical FuseboxOther 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 FuseboxOther core files (fbx_file.cfm)
  • fbx_circuits.cfm
  • Similar to J2EEs JNDI concept
  • Provides mapping to directories via circuit alias

This circuit lives down this directory chain.
32
Technical FuseboxOther 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 FuseboxOther 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 FuseboxOther 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
  • ltcfincludegt ltcfsetgt ltcfifgt ltcflocationgt

35
Technical FuseboxOther 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 FuseboxOther core files (fbx_file.cfm)
  • fbx_savecontent.cfm
  • Custom Tag version of ltcfsavecontentgt for
    pre-CF5.0
  • V2 called cf_bodycontent by Steve Nelson

37
Technical FuseboxFuse 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 FuseboxFuse 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 FuseboxFuse Prefixes
  • qry_
  • Query template
  • No display
  • All database interaction
  • Update, insert, delete, select, etc
  • ltcfquerygt ltcfstoredprocgt
  • V2 only for selects
  • Aim for reusability
  • qry_ValidateUser.cfm, qry_CreateNewsItem.cfm,
    qry_GetUserPreferences.cfm

40
Technical FuseboxFuse Prefixes
  • url_
  • Optional file to contain ltcflocationgt logic
  • Makes for cleaner fbx_switch.cfm
  • If not used, ltcflocationgts occur in the qry_ or
    act_ files
  • No display
  • url_Login.cfm, url_DeletedNewsItem.cfm,
    url_VerityIndexed.cfm

41
Technical FuseboxFuse 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 FuseboxExit 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, ltcflocationgts
  • Extracts fuses from the application
  • Fuses act as black box unaware of the big
    picture
  • Always in the form circuit.fuseaction

43
Technical FuseboxFusedocs
  • 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 lt!--- ---gt at the top

44
Technical FuseboxFusedocs, cont.
  • Programming Definition Language (PDL)
  • XML based
  • DTD available from fusebox.org
  • Dont 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 FuseboxTest 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
FLiPBuilding 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
FLiPInitial Requirements Gathering
  • No system for this do as normal
  • Sales meeting to get rough ideas down

49
FLiPWireframing
  • 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
  • Fusiums Rebar

50
FLiPPrototyping
  • HTML mockups
  • 100 identical to the finished application
  • Resist the urge to code

51
FLiPDevNotes
  • 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
FLiPPrototype Lockdown
  • Site is complete in HTML
  • Example credit card processing
  • Approval
  • Failure message 1
  • Failure message 2
  • Bad credit card number

53
FLiPArchitecting
  • Using mind mapping software
  • Identify each circuit
  • Identify each fuseaction
  • Identify each fuse
  • Determine exit points
  • Generate skeleton code
  • Fuseminder.cfm

54
FLiPFusedocing
  • 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
FLiPCoding
  • Distribution of effort
  • Solve the Mythical Man Month?
  • SecretAgents.com
  • Coding is now a trivial matter
  • Distribution of database required for qry_ fuses

56
FLiPAssembly
  • 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
FLiPTesting
  • No Fusebox-specific system for this
  • Use wireframe and prototype as guide

58
Moving OnFusebox Community
59
Fusebox CommunityBest 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 CommunityCommunity 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 CommunityEmail Lists
  • fusebox_at_topica.com
  • Beginners welcome
  • Heavily patrolled by active members
  • FLiP_at_topica.com
  • FLiP methodology only
  • steer-fb_at_topica.com
  • For Fusebox future

62
Fusebox CommunityFusebox.org
  • Whitepapers
  • Latest core files
  • Example applications

63
Fusebox CommunityOther 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 CommunityBooks And Articles
  • Papovich and Peters, 2002
  • Fusebox Pulse newsletter (fusium.com)
  • Hal Helms writes monthly articles in CFDJ

65
Fusebox CommunityFusebox Conference
  • In conjunction with Macromedia DevCon, October in
    Orlando
  • 20 speakers
  • Jeremy Allaire keynoted last year
Write a Comment
User Comments (0)
About PowerShow.com