The West Wind Web Connection 5.0 Web Control Framework The West Wind Web Connection 5.0 Web Control Framework An overview of the new Web Control Framework in Web Connection 5.0 Rick Strahl West Wind Technologies
Design Goals for Web Control Framework n Richer Application Development Model n Control based framework for more natural coding n Event based model – client actions fire server events n Using ASP.NET compatible Page syntax n Visual Designer support with.NET 2.0 Tools n No.NET *runtime* requirements for deployed apps n Extensibility n Allow developers to hook into framework pipeline n Allow custom control development to extend functionality n Minimal Impact on existing Apps n Designed for maximum backwards compatibility n Note: Minor changes are required for pre-5.0 apps n New Web Control Framework usage OPTIONAL
Core Framework Changes n Many smaller enhancements n Removed #DEFINE DEBUGMODE (Server.lDebugMode can be dynamically set instead) n New Exception Handling based on TRY/CATCH (removes all reliance on error methods) n New Light-Weight wwPageResponse Object (supports page composition w/ delayed send of headers) n New class based Security interface (using wwUserSecurity class against Fox data) n Support for Kernel Caching n Improvements in the wwCache class n ISAPI Impersonation Simplification (easier deployment) n Improved New Project Wizard n A few new Support Classes and Functions
Web Control Framework n Html as Objects: Rich Object Oriented Framework n Control based metaphor: Page class with contained controls n You access control properties to read and write page content n Page actions fire events into your FoxPro code n Fully extensible – you can create your own controls n Visual User Control support allows reuse of ‘compositions’ n FoxPro Centric n You write FoxPro code for all logic n Supports easy two way databinding (FoxPro data and objects) n Automatic error management for forms based on databinding n No runtime dependence on.NET! n Automatic Page State Management n PostBack values are automatically assigned back to controls n Viewstate can be used to persist non-POST values across Postbacks n Declaratively store values in the page between Postbacks (PreserveProperty) n Visual Designer Support n You can use.NET 2.0 compatible designers: VS.NET and Visual Web Developer n Page markup is just text - you can use NotePad, DreamWeaver, FrontPage, FoxPro
Web Control Framework n Object Oriented n All controls inherit from wwWebControl n Common set of features to all controls n Create new controls by subclassing n New controls are automatically script enabled* n Event Driven n Server Events map to methods in your Page Class In your script markup: In your script markup: In your FoxPro class: Function btnSubmit_Click() this.lblMessage.Text = "Hello World " + TRANS(DateTime()) ENDFUNC In your FoxPro class: Function btnSubmit_Click() this.lblMessage.Text = "Hello World " + TRANS(DateTime()) ENDFUNC n Container Support n Intrinsic support for nested components n Container nesting is supported both visually and via code n Controls have ChildControls, Parent and Page properties n Panels can host controls, DataGrids can host DataColumns etc. * Visual Designer support requires creation of a.NET wrapper component
wwWebControlwwWebControl wwWebTextBoxwwWebTextBox wwWebButtonwwWebButton wwWebDropDownListwwWebDropDownList wwWebRadioButtonListwwWebRadioButtonList wwWebCheckBoxwwWebCheckBox wwWebPagewwWebPage wwWebListBoxwwWebListBox wwWebLabelwwWebLabel wwWebPanelwwWebPanel wwWebDataGridwwWebDataGrid wwWebRadioButtonwwWebRadioButton wwWebImageButtonwwWebImageButton wwWebLinkButtonwwWebLinkButton wwWebHyperLinkwwWebHyperLink Containers Core Controls List Controls Web Control Hierarchy some common controls wwAjaxMethodCallbackwwAjaxMethodCallback wwModalDialogwwModalDialog wwHoverPanelwwHoverPanel wwDragPanelwwDragPanel Ajax wwErrorDisplaywwErrorDisplay wwWebTabControlwwWebTabControl wwFckEditorwwFckEditor wwWebLoginwwWebLogin Extended Controls wwWebFileUploadwwWebFileUpload
From Markup Design to FoxPro Code n Rich Markup Scripts n Uses ASP.NET compatible control syntax (Html + Controls) n Supports basic stock ASP.NET controls n Web Connection provides specific controls n Specific controls are FoxPro centric n Code Generation and Compilation n WebPageParser convert scripts to pure VFP PRG code n Converts each server tag to a VFP object n Maps attributes to properties or events/methods n 2 classes are generated in a single source file Generated class with control definitions (regenerated often) User class contains your page logic (never updated by generator) n Automatic Page Conversion/Compilation n When Page is executed compilation occurs automatically n Compilation only with debug mode enabled n Manual compilation using the WebPageParser class
Web Control Event Pipeline n Page Lifecycle n Requests cause Page to 'Run()' n Page is just another WebControl n Run() causes Page Event Sequence to fire n Each control fires a set of fixed events n Each control fires events into any child controls n Events deal with Initialization, State, Operation and Rendering n Controls are fully self contained n Each control manages its own state n Retrieves ViewState n Retrieves POST data n Saves its own ViewState n Each control Renders itself n Controls render in non-PageFramework pages! n Some features like ViewState work in conjunction with the Page object
Visual Studio Designer Support
Script Page Code
Generated Class from Script (same file as your custom class)
Your Custom Class (same file as generated class)
Other Features of Page Framework n Control based Caching n All Controls can be cached once rendered n Once cached Cached control is not rendered again n Client Script Management n You can add script code to the ClientScript collection n Framework manages rendering of the script code n ViewState Persistence Management n Stores Page specific content n Control.PreserveProperty() save and restores property values n Security n Integration of wwUserSecurity Class n FoxPro table based authentication n Integrated into Process class in addition to Basic n wwWebLogin control for Control based Login
AJAX Features n JSON Method Callbacks n Call page methods or any class method n wwAjaxMethodCallback control makes it EASY n wwJsonService for classic WWWC n Converts objects and Tables/Cursors to JSON n wwHoverPanel n Easy Popup window with server data n Optional Iframe Popup support n wwDragPanel n Draggable and Closable Client Window/Panels n wwModalPopup n Popup windows that block out background n Easy way to require client top operation n Client AJAX Library n Based on jQuery – rewritten for WWWC 5.40 n Many jQuery plug-ins provided n Easy to use convenience methods
Other Features of the Page Framework n Useful Utility Controls n Rss Feed Control n CAPTCHA Control for input validation (Spam) n FCK Editor HTML Editor control n ProgressBar control n Popup Date Picker n ShowCode control to show Fox, HTML and WCF code
.NET Managed Module n Replaces ISAPI DLL with.NET Module n Easier code base to maintain n Proper moving forward path for IIS support n Many more opportunities to improve features n Already includes a number of enhancements n Possible support for Linux through Mono n Many Benefits n Can run natively in IIS 7 n Allows operating under 64 bit servers n Allows operating without IIS (VS WS, Cassini) n Cassini server shipped with Web Connection
Web Connection Cassini Web Server n Local Web Server n Allows running Web Connectionwithout IIS/Apache n Used in locked down IT environments n Used for 'local' Web applications n Uses the.NET Managed Module n Offline Applications n Server is a self contained EXE (requires 2 support dlls) n Server can be distributed with your applications n Server can be nstalled on client machines n Allows running Web apps 'offline' (still needs data and code, but can run locally)
Pricing n Pricing and Upgrades n Full Version Pricing: $ n Upgrade Pricing: $ n Shareware version available n Fully functional n Precompiled (some options can’t be set) n Shareware Nag screen n More info: n Support