Presentation is loading. Please wait.

Presentation is loading. Please wait.

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

Similar presentations


Presentation on theme: "Fusebox 3.0 The Framework, The Methodology, The Community Nat Papovich, Fusium."— Presentation transcript:

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


Download ppt "Fusebox 3.0 The Framework, The Methodology, The Community Nat Papovich, Fusium."

Similar presentations


Ads by Google