Mach-II Primer Ben Edwards An Introduction to Mach-II: An event-based, implicit invocation web-application framework
Mach-II Primer Mach-II Introduction Mach-II is a framework for writing object- oriented web-applications Key Mach-II concepts: Object orientation Model-View-Controller (MVC) Implicit Invocation
Mach-II Primer Mach-II Introduction In a web-application, Mach-II facilitates communication between the web interface and business objects: Web Interface (.cfm files, Flash movies) Mach-II Business Model (CFCs, WebServices)
Mach-II Primer Mach-II: MVC Mach-II implements the Model-View- Controller (MVC) design pattern The goal of MVC is to keep business logic and presentation logic independent of each other MVC components are grouped in the following categories: Model: business logic, data access View: user’s perspective (HTML and CFM files) Controller: mediation between model and view
Mach-II Primer Mach-II: MVC Mach-II acts as an application’s controller, directing interaction between model and view components: Web Interface (.cfm files, Flash movies) Mach-II Business Model (CFCs, WebServices) VCM
Mach-II Primer Mach-II: An OO Framework Mach-II is an object-oriented (OO) framework Mach-II for ColdFusion is built entirely in CFCs Mach-II development includes using framework components (CFCs) that will be extended and specialized
Mach-II Primer Mach-II: Object-Oriented With Mach-II developers write components that extend core framework objects (CFCs) Mach-II components: Encapsulated, self-contained Cohesive, have singularity in purpose Follow CFC coding best-practices
Mach-II Primer Mach-II: Implicit Invocation Mach-II uses an implicit invocation architecture Implicit invocation is a software architecture for writing highly flexible, maintainable applications In an implicit invocation system, business objects communicate with other objects via events Listeners are business objects that respond to events
Mach-II Primer Mach-II: Implicit Invocation Events are used to communicate between layers: Web Interface (.cfm files, Flash movies) Mach-II Business Model (CFCs, WebServices) Event
Mach-II Primer Mach-II: Implicit Invocation Implicit invocation components: Events – encapsulate information needed to perform an action Listeners – business components that are notified when events occur; can also announce events Event-handlers – define how to handle an event when announced
Mach-II Primer Mach-II: Responsibilities Mach-II framework main responsibilities: Encapsulate requests into events Handle all events processed for a request Notify listeners of events Mach-II developer main responsibilities: Define events the framework can respond to Define event-handlers to handle events when they occur Define listeners to perform business logic
Mach-II Primer Mach-II: Events Events encapsulate the information needed to perform an action in a Mach-II application Events can be announced by external requests to the framework (e.g. URL or form submission) or by components of the Mach-II framework An event is an encapsulation of a requested action and any data associated with that request URL data form data etc.
Mach-II Primer Mach-II: Events Events contain: name – the name of the event args – the information in the event used by listeners Event definitions should be documented during design Example events (name: args): registerUser: firstName, lastName, Address addToCart: shoppingCart, product, quantity newUserRegistered: newUser
Mach-II Primer Mach-II: Event-handlers Event-handlers are created by the framework to respond to events Developers define event-handlers in an XML configuration file Example event-handler XML:
Mach-II Primer Mach-II: Listeners Listeners components are notified when certain events occur to perform business logic Listeners are implemented as objects (CFCs) New functionality can be introduced simply by adding and registering new listeners (or new methods in existing listeners) Because listeners know nothing about each other (loose coupling), changes to existing business logic entails less risk of introducing bugs into the application
Mach-II Primer Mach-II: Event Lifecycle OK Mach- II Login formis submitted to Login Event userName: joe password: machii creates a mach-ii.xml reads AuthenticationListener invokes is passed to LoginSuccess Event LoginFailure Event announces specifies Username: Password:
Mach-II Primer Mach-II: Request Handling When Mach-II receives a web-request it will translate it into an event object Consider the following request: ../index.cfm?event=registerUser&firstName=Bo b&lastName=Smith The result is an event named registerUser with two arguments: firstName (Bob) and lastName (Smith)
Mach-II Primer Mach-II: Event Handling Mach-II can handle multiple events per request Events are handled on at a time, in a queue (first in, first out) sequence When an event is announced, it is placed at the bottom of the queue
Mach-II Primer Mach-II: Code A typical Mach-II project will consist of: An XML configuration file (mach-ii.xml) ColdFusion components for performing business logic ColdFusion pages for user interaction
Mach-II Primer Mach-II: Other Components We’ve already covered events, event- handlers, and listeners. Other Mach-II components include: Plugins – used in the Mach-II framework for customizing application wide functionality Event-filters – reusable framework objects that can manipulate events and how they are processed
Mach-II Primer Mach-II: Primer Review Mach-II is an object-oriented framework, so much of the coding will be in CFCs that extend Mach-II components We’ll be writing Mach-II code as: CFCs (for business logic) CFM templates (for presentation logic) XML files (for configuration/controller logic)
Mach-II Primer Mach-II: Process A high-level overview of a Mach-II development process: 1.Develop prototype pages and page flow 2.Identify events that will drive the application 3.Identify objects needed to perform business logic (object model) 4.Identify listeners and other Mach-II components
Mach-II Primer Mach-II: Resources The Mach-II website, contains: Documentation Mach-II Configuration Guide Mach-II Request, Event, and Error Handling Articles Mach-II How To Series Introduction to Implicit Invocation Consulting and Training Forums and Mailing Lists