410 likes | 502 Views
Don’t Be Q-less Expanding Fusebox Functionality with FuseQ. John Quarto-vonTivadar FutureNow, Inc. www.futurenowinc.com john@techspedition.com. FuseQ to the ResQ. FuseQ treats fuseactions like a queue A page request can be made up of one * or more* fuseactions
E N D
Don’t Be Q-lessExpanding Fusebox Functionality with FuseQ John Quarto-vonTivadar FutureNow, Inc. www.futurenowinc.com john@techspedition.com
FuseQ to the ResQ • FuseQ treats fuseactions like a queue • A page request can be made up of one *or more* fuseactions • Analogy: In line at the Bank… if no one’s in front of you, you get to be the next one handled by the Teller; if not, you wait your turn. Every once in a while you’ll let a little old lady skip ahead of you. • FuseQ treats the fuseaction as a list … handled in successive order • Before leaving the core file, are there any Fuseactions left in the FuseQ?
Benefits of FuseQ • Fuseactions are more atomic since the page request is not limited to a single FA • No need for <cfmodule> to access code in other circuits • no memory thread cost • no passing thru of needed variables • no kludges in scoping out-bound variables • no successive recursion calls • No core file changes are required to handle all of: layout fuses, error/exception handling, Model-View-Controller, etc. These all flow naturally from FuseQ’s implementation
Features of FuseQ • Layouts: circuit-wide layouts are handled at the circuit layer (fbx_layouts) and fuse- or fuseaction-specific layouts are handled at the fuse layer • Layout fuses can be applied from any circuit (similar to qry file feature) • Because of zero core file dependencies, you can use “traditional” CF error and exception handling at the app, circuit, FA, and Fuse level. Nothing FB-specific!
Call Fusebox core file Call Circuits.cfm Call home circuit’s FBX_Settings Fusebox 3 Execution Path Call target circuit’s FBX_Switch Call appropriate fuses Call FBX_Layouts Call layout files Display output
World.hello Call Fusebox core file Call Circuits.cfm Call home circuit’s FBX_Settings Call target circuit’s FBX_Switch Call appropriate fuses Call FBX_Layouts Call layout files Display output
World.hello Call Fusebox core file Call Circuits.cfm Call home circuit’s FBX_Settings Call target circuit’s FBX_Switch Call appropriate fuses Call FBX_Layouts Call layout files Display output
World.hello Call Fusebox core file Call Circuits.cfm Call home circuit’s FBX_Settings Call target circuit’s FBX_Switch Call appropriate fuses Call FBX_Layouts Call layout files Display output
World.hello Call Fusebox core file Call Circuits.cfm Call home circuit’s FBX_Settings Call target circuit’s FBX_Switch Call appropriate fuses Call FBX_Layouts Call layout files Display output
World.hello Call Fusebox core file Call Circuits.cfm Call home circuit’s FBX_Settings Call target circuit’s FBX_Switch Call appropriate fuses Call FBX_Layouts Call layout files Display output
World.hello Call Fusebox core file Call Circuits.cfm Call home circuit’s FBX_Settings Call target circuit’s FBX_Switch Call appropriate fuses Call FBX_Layouts Call layout files Display output
World.hello Call Fusebox core file Call Circuits.cfm Call home circuit’s FBX_Settings Call target circuit’s FBX_Switch Call appropriate fuses Call FBX_Layouts Call layout files Display output
World.hello Call Fusebox core file Call Circuits.cfm Call home circuit’s FBX_Settings Call target circuit’s FBX_Switch Call appropriate fuses Call FBX_Layouts Call layout files Display output
Call Fusebox core file Techspedition Fusebox 3-compliant Execution Path
Call Fusebox core file Call Circuits.cfm
Call Fusebox core file Call Circuits.cfm Call home circuit’s FBX_Settings
Call Fusebox core file Call Circuits.cfm Call home circuit’s FBX_Settings Call target circuit’s FBX_Switch
Call Fusebox core file Call Circuits.cfm Call home circuit’s FBX_Settings Call target circuit’s FBX_Switch Call appropriate fuses
Call Fusebox core file Call Circuits.cfm Call home circuit’s FBX_Settings Call target circuit’s FBX_Switch Call FBX_Layouts Call appropriate fuses
Call Fusebox core file Call Circuits.cfm Call home circuit’s FBX_Settings Call layout files Call target circuit’s FBX_Switch Call FBX_Layouts Call appropriate fuses
Call Fusebox core file Call Circuits.cfm Display output Call home circuit’s FBX_Settings Call layout files Call target circuit’s FBX_Switch Call FBX_Layouts Call appropriate fuses
If FuseQ not empty then loop again Call Fusebox core file Call Circuits.cfm Display output Call home circuit’s FBX_Settings Call layout files Call target circuit’s FBX_Switch Call FBX_Layouts Call appropriate fuses
World.hello Company.getStock User.getInfo
World.hello Company.getStock User.getInfo
World.hello User.getInfo Company.getStock User.getInfo
World.hello User.getInfo Company.getStock User.getInfo
World.hello Company.getStock User.getInfo
World.hello Company.getStock User.getInfo
World.hello Company.getStock User.getInfo
World.hello Company.getStock User.getInfo
World.hello Company.getStock User.getInfo
Will I be stuck behind the Q-ball? • Techspedition core file is a full private implementation of the Fusebox 3 spec • Contains FuseQ and a number of other needed improvements excluded from the official FB3 implementation • Your Fusebox 3-compliant apps will work out of the box whether you use FuseQ or not • Topology: C C++ All legacy C code worked without a single change • And it’s free, damn it!
That’s Q-ute, but let’s see code! • general use • Layout Fuses • Error/Exception Handling • Short Q&A and lunch • Model-View-Controller (Hal) • Other Techspedition core file API features
A little knowledge goes a long way. Magellan traveled around the world just to end up where he started. With our books, he could have really gone somewhere.
CodeRutters: “Discovering Fusebox 3” • by Hal Helms and John Quarto-vonTivadar • pre-order now on the web site for $19.99 • www.techspedition.com
Finding Your Inner FuseQon a techspedition into knowledge • Core files at www.techspedition.com • Series of articles explaining FuseQ • Other regular columns and guest authors speak about the development cycle, coding, cross-training your brain • “Exploring the FuseQ” book in development • Open call for authors – we’re anxious to publish your book