1 / 46

Developing Flex Applications with the Swiz Framework

Developing Flex Applications with the Swiz Framework. Chris Scott. www.cfunited.com. About Me. Enterprise Software Consultant Author of the Swiz Framework Co-Author of ColdSpring Contributor to too many OSS projects Developing with Flex, CF and Java for quite a long time. www.cfunited.com.

beatrix
Download Presentation

Developing Flex Applications with the Swiz Framework

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Developing Flex Applications with the Swiz Framework • Chris Scott www.cfunited.com

  2. About Me • Enterprise Software Consultant • Author of the Swiz Framework • Co-Author of ColdSpring • Contributor to too many OSS projects • Developing with Flex, CF and Java for quite a long time www.cfunited.com

  3. What We’ll Cover • What, Why, How • What is Swiz? • Why should you use it? • How does Swiz make your life easier? • Why do I have such a hangover? • Advanced Swiz • New Features www.cfunited.com

  4. Another framework for Flex? www.cfunited.com

  5. What Swiz users are saying... • “Broadchoice evaluated a few frameworks and settled on Swiz as the keystone behind our Workspace product.” • Sean Corfield, CTO Railo US www.cfunited.com

  6. What Swiz users are saying... • “Personally I think it is way better then Cairngorm!” • Kurt Wiersma, some Mach-ii dude www.cfunited.com

  7. What Swiz users are saying... • “Swiz is a lovely, lightweight framework that I'm really enjoying working with.” • Aral Balkan, a popular Flash blogger and CF hater www.cfunited.com

  8. What Swiz users are saying... • “Even bigger thanks for Swiz... Which is one of the most elegant and useful pieces of software that I've ever seen in my 24 years of programming!” • Afik Gal, a guy I do not know at all www.cfunited.com

  9. Why Swiz? • Because those guys told you to? • Not at all!! But Swiz is... • Simple and effective! • Easy to learn! • Designed to help you write less code! • Encourages loose coupling through MVC! • More things that end with !!!... www.cfunited.com

  10. What is Swiz all about? www.cfunited.com

  11. Swiz Overview • Flex Applications Require: • Remote Services • Models / Data • Controllers / Logic • Views www.cfunited.com

  12. Swiz Overview • Components need each other • Wire ourselves • Use Locators • Verbose XML www.cfunited.com

  13. Swiz Overview • Components need each other • Wire ourselves • Use Locators • Verbose XML • IoC • Annotations www.cfunited.com

  14. Swiz Overview • Views communicate with components • Flex Events • MVC Paradigm • DynamicMediatormakes it easy! www.cfunited.com

  15. Swiz Overview • Applications need remote data • Async Tokens • Responders • State around calls • DynamicRespondermakes it easy! www.cfunited.com

  16. Major Swiz Features • IoC • autowires app • DynamicResponder • remote data • DynamicMediator • event handling • and a whole lot more... www.cfunited.com

  17. What Swiz DOESN’T Provide • Excessive JEE patterns • Boilerplate code • Verbose XML / MXML configuration • Overly Prescriptive workflow www.cfunited.com

  18. Inversion of Control, the Swiz way How about a little audience participation... www.cfunited.com

  19. IoC Recap • Components require ‘dependencies’ to function • Dependencies may be simple strings and values, or other components • Resolving complex dependencies is outside the scope of primary logic www.cfunited.com

  20. Inversion of Control with Swiz • Express dependencies through Metadata, or ‘Annotations’ • Swiz takes care of configuration through Dependency Injection • Views also have dependencies such as Models, or PresentationModels • Swiz handles everything for you! www.cfunited.com

  21. Working with Swiz www.cfunited.com

  22. Defining Beans • Define components in BeanLoaders • Written in plain old MXML • Swiz calls objects Beans because it only cares about their properties* • * only sort of true… www.cfunited.com

  23. Defining BeanLoaders • <BeanLoader xmlns=“org.swizframework.util.*” • xmlns:mx=http://www.adobe.com/2006/mxml> • <mx:RemoteObject id=“userService” destination=“userService”/> • <mx:RemoteObject id=“mapService” destination=“mapService”/> • <controller:UserController id=“userController”/> • <controller:MapController id=“mapController”/> • </BeanLoader> www.cfunited.com

  24. Swiz’s IoC Factory • When Swiz loads beans, it searches for ‘Autowire’ metadata • When objects are retrieved, Swiz performs the magic of Autowiring • Swiz adds event listeners for added to stage and removed from stage events • Allows Swiz to Autowire and clean up Views too! www.cfunited.com

  25. Loading Swiz - Old Style... • Load Swiz early, in a preinitialize handler • Swiz constructs components for you to help manage your application • Initialization is performed as soon as you do anything to Swiz, like loading beansprivate function onInitialize() : void { Swiz.loadBeans( [ Beans ] );} www.cfunited.com

  26. Loading Swiz - New Style! • Use Swiz’s ConfigBean in MXML • Requires an array of BeanLoaders • Access to all configuration parameters<swizframework:SwizConfig strict="true" beanLoaders="{[Beans]}" logEventLevel="{LogEventLevel.WARN}"/> www.cfunited.com

  27. Expressing Dependencies • Dependencies are NOT defined in MXML! • Use [Autowire] in your AS objects • Similar to new Spring 2.0 configuration • Qualify bean to inject by id. • [Autowire(bean="userController")]public var userController: UserController; www.cfunited.com

  28. Expressing Dependencies • To autowire by type, forget the ‘bean’ • Swiz looks for bean which matches the variable type • Works with interfaces and inheritance • Swiz throws ‘AmbiguousBean’ error if more than one bean could be injected www.cfunited.com

  29. View Autowiring • You can use Autowire on accessors as well as properties • Properties can be autowired with two way bindings!! • Accessors allow views to perform logic when dependencies are set • don’t do this in Beans! Only in views! • there are better ways to perform initialization! www.cfunited.com

  30. Working with Remote Services • Swiz provides two simple methods for remote method calls • Both dynamically create responders for AsyncTokens • DynamicResponder • DynamicCommand www.cfunited.com

  31. Working with Remote Services • DynamicResponders bind result and fault handlers transparently • DynamicCommand is similar, but can be chained together and delayed • Swiz offers simple methods for creating in AbstractController www.cfunited.com

  32. DynamicResponders • executeServiceCall creates dynamic responders for you • Implement iResponderexecuteServiceCall(userService.getUser, getUserResult); • First parameter an AsyncToken, returned from a remote call • Second parameter is the Function to be called in the responder’s onResult() www.cfunited.com

  33. DynamicResponders • Third parameter is a Function to be called in the responder’s onFault() • If you omit the fault parameter, Swiz uses a default fault handler • Swiz can also bind extra parameters to your result handlers www.cfunited.com

  34. Binding data to result handlers • Passed as an array to executeServiceCall • Swiz treats this as extra arguments to pass to your result handler • Allows you maintain state over async calls • ex. Pass User being saved to ResultHander www.cfunited.com

  35. DynamicCommands • Similar to DynamicResponders, but first parameter is a Function which returns an AsyncToken • The Function is called dynamically in the Command’s execute() method • Created for you with createCommand()createCommand(userDelegate.saveUser, [user], saveUserResult); www.cfunited.com

  36. DynamicCommands • Can be added to Swiz’s CommandChain • Chains can run in series or parallel • A final Function or Event is fired when the Chain completes • You can attach a Function or Event for faults as well www.cfunited.com

  37. DynamicCommands • var chain : new CommandChain(); • chain.addCommand(createCommand( • helloDelegate.echo, ["swiz rulz!"], • echo_results, local_Fault)) • .addCommand(createCommand( helloDelegate.showTime, null, time_results, local_Fault)); • chain.completeHandler = completeHandler; • chain.proceed(); www.cfunited.com

  38. Event Handling with Swiz • Swiz does not try to replace Flex’s Event model, just adds a little simplicity • Most apps contain a CentralDispatcher, Swiz just give you one for free • Swiz abstracts its use through static methods www.cfunited.com

  39. Event Handling with Swiz • Swiz.dispatchEvent(event:Event); • Dispatches any event (no Swiz event) • Swiz.dispatch(type:String); • Creates an event for you • Swiz.addEventListener(type:String, function:Function, ... ); • Adds an eventListener to Swiz’s CentralDispatcher www.cfunited.com

  40. DynamicMediators • Greatly help to promote loose coupling between Views and Controllers • Enables very simple event handling in Controllers • Reduces repetitive glue code in Views • Sort of similar to Cairngorm’s FrontController, but WAY less boilerplate code www.cfunited.com

  41. DynamicMediators • Add [Mediate] annotation to a Controller function • [Mediate(event=“eventType”, properties=“foo, bar”)]public function doStuff(argA : String, argB : String) {} • Swiz creates a DynamicMediator for you • Adds an eventListener for supplied type to Swiz’s centralDispatcher • Uses ‘properties’ to construct method call www.cfunited.com

  42. Strict type checking • No compile time checking of event type strings • Swiz.setStrict(true) forces Swiz to lookup event types from existing classes • Can define base event packages with addEventPackage • Swiz can write a proper missing event class to a log file www.cfunited.com

  43. Recap • Swiz’s IoC is very easy to use • Swiz provides a simple MVC paradigm • Very little XML! Mostly Annotations • Swiz provides core utilities for: • DynamicResponders and Commands • Event handling • DynamicMediators www.cfunited.com

  44. Recap • Swiz represents best practices learned from years of consulting • Swiz is damn easy! • New features are coming fast and furious! www.cfunited.com

  45. Resources • Swiz Resources • http://code.google.com/p/swizframework • http://groups.google.com/group/swiz-framework • http://cdscott.blogspot.com • http://soenkerohde.com • http://www.returnundefined.com • Other Resources • http://code.google.com/p/dphibernate • http://code.google.com/p/flex-mojos • http://code.google.com/p/loom www.cfunited.com

  46. Thank You! • Chris ScottEnterprise Software Consultant • http://cdscott.blogspot.comchris.scott.one@google.comasstrochris@comcast.netgtalk:chris.scott.one@gmail.comaim/skype/twitter/plurk/brightkite: asstrochris www.cfunited.com

More Related