Mach II at Macromedia Sean Corfield Director, Architecture An introduction to Mach II and its use on macromedia.com.

Slides:



Advertisements
Similar presentations
Uncoupling Java Applications O’Reilly Conference on Java Brett McLaughlin.
Advertisements

A component- and message-based architectural style for GUI software
Apache Struts Technology
May 2, May 2, 2015May 2, 2015May 2, 2015 Azusa, CA Sheldon X. Liang Ph. D. Software Engineering in CS at APU Azusa Pacific University, Azusa, CA.
 Copyright Wipro Technologies JSP Ver 1.0 Page 1 Talent Transformation Java Server Pages.
The Web Warrior Guide to Web Design Technologies
Web Applications Development Using Coldbox Platform Eddie Johnston.
Objects First With Java A Practical Introduction Using BlueJ Designing object-oriented programs How to write code in a way that is easily understandable,
Designing the system Conceptual design and technical design
Fast Track to ColdFusion 9. Getting Started with ColdFusion Understanding Dynamic Web Pages ColdFusion Benchmark Introducing the ColdFusion Language Introducing.
CSE 219 COMPUTER SCIENCE III PROPERTIES OF HIGH QUALITY SOFTWARE.
Microsoft SharePoint 2013 SharePoint 2013 as a Developer Platform
Application Architectures Vijayan Sugumaran Department of DIS Oakland University.
Apache Struts Technology A MVC Framework for Java Web Applications.
Web Application Architecture: multi-tier (2-tier, 3-tier) & mvc
Struts 2.0 an Overview ( )
UNIT-V The MVC architecture and Struts Framework.
DSpace XML UI Project Texas A&M University Digital Initiatives, Research and Technology Scott Phillips, Cody Green, Alexey Maslov, Adam Mikeal, Brian Surratt,
Spring Roo CS476 Aleksey Bukin Peter Lew. What is Roo? Productivity tool Allows for easy creation of Enterprise Java applications Runs alongside existing.
Introduction to the Enterprise Library. Sounds familiar? Writing a component to encapsulate data access Building a component that allows you to log errors.
Aurora: A Conceptual Model for Web-content Adaptation to Support the Universal Accessibility of Web-based Services Anita W. Huang, Neel Sundaresan Presented.
Flash Remoting Chafic Kazoun Senior Flash Developer - B-Line Express Work: Play:
Frameworks: Mach II or Fusebox 4? Sean A Corfield Director of Architecture Macromedia, Inc.
Enterprise Integration with ColdFusion Sean A Corfield Director of Architecture Macromedia, Inc.
SWE 316: Software Design and Architecture – Dr. Khalid Aljasser Objectives Lecture 11 : Frameworks SWE 316: Software Design and Architecture  To understand.
Todd Snyder Development Team Lead Infragistics Experience Design Group.
1 Chapter 5 Practice: A Generic View Software Engineering: A Practitioner’s Approach, 6th edition by Roger S. Pressman.
London April 2005 London April 2005 Creating Eyeblaster Ads The Rich Media Platform The Rich Media Platform Eyeblaster.
SOFTWARE DESIGN AND ARCHITECTURE LECTURE 07. Review Architectural Representation – Using UML – Using ADL.
JSF Introduction Copyright © Liferay, Inc. All Rights Reserved. No material may be reproduced electronically or in print without written permission.
Introduction to Model-Glue Rachel Lehman Perpetual Intermediate Designer-Developer Introduction to Model-Glue.
©2003 The Fusebox Corporation Fusebox MX Hal Helms.
1 Chapter 5 Software Engineering Practice. 2 What is “Practice”? Practice is a broad array of concepts, principles, methods, and tools that you must consider.
These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are provided with permission by.
Coming up: Software Engineering: A Practitioner’s Approach, 6/e Chapter 5 Practice: A Generic View copyright © 1996, 2001, 2005 R.S. Pressman & Associates,
WEB BASED DATA TRANSFORMATION USING XML, JAVA Group members: Darius Balarashti & Matt Smith.
Systems Analysis and Design in a Changing World, 3rd Edition
1 Geospatial and Business Intelligence Jean-Sébastien Turcotte Executive VP San Francisco - April 2007 Streamlining web mapping applications.
Chapter 7 Software Engineering Introduction to CS 1 st Semester, 2015 Sanghyun Park.
FW/1 - Framework One An introduction to the ColdFusion framework created by Sean Corfield. Presented by Ben Ellefson.
Model View Controller MVC Web Software Architecture.
1 Software Engineering: A Practitioner’s Approach, 6/e Chapter 5 Practice: A Generic View Software Engineering: A Practitioner’s Approach, 6/e Chapter.
Apache Struts. J2EE Web Application using MVC design pattern Why MVC? Separate components = easier maintenance – Model component holds object data – View.
Caching for Performance Jeff Tapper Tapper.net Consulting.
Java EE Patterns Dan Bugariu.  What is Java EE ?  What is a Pattern ?
Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. Spring MVC Essentials Getting started.
© FPT SOFTWARE – TRAINING MATERIAL – Internal use 04e-BM/NS/HDCV/FSOFT v2/3 JSP Application Models.
Preface IIntroduction Objectives I-2 Course Overview I-3 1Oracle Application Development Framework Objectives 1-2 J2EE Platform 1-3 Benefits of the J2EE.
Date : 3/04/2010 Web Technology Solutions Class: PHP Web Application Frameworks.
Portals: Architecture & Best Practices Greg Hinkle February 2005.
CAS 3 Introduction and Overview. CAS2 is simple to understand 6 servlets and fewer than 10 JSPs 6 servlets and fewer than 10 JSPs auth package – where.
Mach-II Primer Ben Edwards An Introduction to Mach-II: An event-based, implicit invocation web-application framework.
Java Programming: Advanced Topics 1 Building Web Applications Chapter 13.
APACHE STRUTS ASHISH SINGH TOMAR ast2124. OUTLINE Introduction The Model-View-Controller Design Pattern Struts’ implementation of the MVC Pattern Additional.
Mach-II Intro Macromedia MAX 2003 Stephen Rittler CounterMarch Systems.
Ganga/Dirac Data Management meeting October 2003 Gennady Kuznetsov Production Manager Tools and Ganga (New Architecture)
Apache Struts Technology A MVC Framework for Java Web Applications.
Preface IIntroduction Course Objectives I-2 Course Content I-3 1Introduction to Oracle Reports Developer Objectives 1-2 Business Intelligence 1-3 Enterprise.
Enterprise Library 3.0 Memi Lavi Solution Architect Microsoft Consulting Services Guy Burstein Senior Consultant Advantech – Microsoft Division.
Presented by Alexey Vedishchev Developing Web-applications with Grails framework American University of Nigeria, 2016 Intro To MVC Architecture.
Thomas Burleson. Using MVC with Flex & Coldfusion Projects June 27, 2007 See how Coldfusion MVC is similar to Flex MVC…
Web Technology Solutions
Introduction to .NET Florin Olariu
Unit 6-Chapter 2 Struts.
Design and Maintenance of Web Applications in J2EE
JavaServer Faces: The Fundamentals
ColdSpring Powered Fusebox In Action
What is a CMS. CMS is content management system CMS is a software that stores content.
Developing and testing enterprise Java applications
Leveraging ColdSpring To Make Better Applications
Presentation transcript:

Mach II at Macromedia Sean Corfield Director, Architecture An introduction to Mach II and its use on macromedia.com

2 Overview An introduction to Mach II What Macromedia is doing with Mach II Lessons Learned - Good & Bad

3 Introduction What is Mach II? Definitions & Buzzwords An overview of how it works Why use Mach II? Pros & Cons Alternatives

4 What is Mach II? /i "Mach-II is a web-application framework focused on easing software development and maintenance." mach-ii.com (official Mach II website) It's code that we can use as a foundation for our applications

5 What is Mach II? /ii Object-Oriented Strict Model View Controller structure Event-Based Implicit Invocation Architecture

6 What is Mach II? /iii

7 What is Mach II? /iv Events Generated by user (links, forms) Generated by application code Example User tries to login (event=login) Login success (event=login_ok) Login failure (event=login_bad)

8 What is Mach II? /v Event Handlers Specified in XML (mach-ii.xml) Can notify "listener" CFCs Can render views (HTML) Can announce new events Can use filters to process data and affect the flow of control

9 What is Mach II? /vi A simple event handler:

10 What is Mach II? /vii Model - ColdFusion Components Business Domain Objects "listeners" (for handling events) View - CFML pages Also layout templates, "pods" etc Controller - Mach II XML configuration file Core framework files

11 What is Mach II? /viii

12 What is Mach II? /ix Extensibility Filters CFCs that process data, announce events, change flow of control Invoked explicitly by event handlers Plugins CFCs that process data, announce events, change flow of control Invoked implicitly at key points in the event lifecycle

13 Why use Mach II? /i "It helps ColdFusion developers build maintainable applications by allowing them to focus separately on the independent parts of their applications: the business model, the presentation layer, the connecting logic - the flow of the application." corfield.org (unofficial Mach II website)

14 Why use Mach II? /ii Good frameworks provide a "head start" Based on sound engineering principles MVC design pattern Implicit Invocation Architecture Standardization Common structure for applications It supports "best practices" Good OO design / heavy use of CFCs Loose coupling / high cohesion

15 Why use Mach II? /iii But... Frameworks Require you use their style / idiom Constrain how you develop applications Mach II requires you use CFCs / OO / MVC / CFMX6.1

16 Why use Mach II? /iv Alternatives? Struts (built for Java) Fusebox (procedural, explicit) onTap (procedural, implicit)

17 Macromedia & Mach II Why did we choose Mach II? How are we contributing to Mach II? What applications use Mach II?

18 Why we chose Mach II The macromedia.com team had Heavy use of ColdFusion Components Informal MVC approach in some apps But we wanted more standards and more structure in our applications

19 Contributing to Mach II Macromedia was an early adopter Discovered bugs (& provided fixes) Submitted enhancements (based on real- world usage scenarios) Load testing & stability improvements Published Mach II Development Guide

20 Applications using Mach II /i We started small Active Content Resources administrator 6 filters, 14 event handlers, 2 listeners, 7 views Breeze Leads application 4 filters, 13 event handlers, 2 listeners, 6 views Some internal content management applications This proved the framework for us without taking much of a risk

21 Applications using Mach II /ii Product Showcase [link]link 6 filters, 81 event handlers, 16 listeners, 1 plugin, 42 views European Online Stores (HTML version) [link]link 7 filters, 78 event handlers, 1 listener, 1 plugin, 45 views 14 Mach II applications in production or in development…

22 Lessons Learned Benefits of using Mach II Downsides to using Mach II Freedom within the framework Load testing & thread safety

23 Benefits of using Mach II /i Able to leverage existing CFCs Built an HTML version of Flash / CFC store in a short space of time Implicit Invocation Reduced coupling & dependencies Easier to change application flow Strict MVC Separation of presentation and logic Declarative controller (XML)

24 Benefits of using Mach II /ii What our engineers say Mach II provides a head start on coding Common code structure and very modular nature of code make it easier to maintain than ad hoc applications Plugins and filters make it easy to extend functionality

25 Benefits of using Mach II /iii What our engineers say Good MVC implementation allowing application to be built views-first or business-model-first as needed XML controller makes incremental development & testing easier Overall, a big win - Mach II is well-liked "two enthusiastic thumbs up!"

26 Downsides to using Mach II What our engineers say Lack of documentation Debugging / Tool support Some community tools are now appearing Poor white space management Improved in Thread safety is big, big issue

27 Freedom within the framework /i There's more than one way to do things Filters vs Plugins Layouts, Pods Form handling Request scope vs Event object Listener style

28 Freedom within the framework /ii We used filters for Security / login authentication Persistence Form handling Localization Caching Omniture click-stream tracking

29 Freedom within the framework /iii We used plugins for Application initialization / parameters Localization Tracing / debugging / performance analysis Note: two approaches to localization!

30 Freedom within the framework /iv Layouts & Pods Portal / Grid Layouts Lots of small views, rendered to contentKey variables (pods) Use layout template views to assemble page Usually announce event to assemble page CompositeView design pattern

31 Freedom within the framework /v Form handling Beaner filter Code was written before command was added! Validation filter No custom form handling: All basic bean-based code

32 Freedom within the framework /vi Request scope vs Event object We mostly follow the (original) Mach II Development Guide recommendations Mostly use a few request scope variables as the API to views Use a few event arguments where it is clearer and more maintainable to do so This is no longer considered best practice for Mach II!

33 Freedom within the framework /vii We have yet to choose one listener style Some applications use a single listener as a facade for the business model Some applications use one or two simple "manager" listeners Some applications use a lot of small, single-function listeners

34 Load testing & thread safety /i Mach II is thread safe Earlier versions of the framework were not! Load testing highlighted random errors All CFCs are stored in application scope Need to use 'var' scope for all local declarations in all functions!

35 Load testing & thread safety /ii You must also 'var' declare implicitly created variables (from cfquery, cffile etc) Example:

36 Summary Mach II… …is a good fit for the way we develop applications: OO, MVC …is based on a solid software architecture: Implicit Invocation …provides a common structure for our applications that reduces coupling, increases cohesion, eases maintenance

37 Resources The official Mach II website The unofficial Mach II website Mach II Development Guide public/machiidevguide/

38 Mach II at Macromedia Questions & Answers? Sean A Corfield