|
Funhouse Sample App
 |
|
The "Funhouse" is a simple smart client application that
delivers a crisp, functional, responsive
user experience that is easy to deploy
and operate over the web.
It's also a nifty tutorial on .NET application development techniques and patterns.
|
 |
|
Install
via "ClickOnce" and run it on your machine
(learn how) and / or
watch the 5 minute video
of the Funhouse in action.
On the surface, the Funhouse is a superficial application of the kind you could
hammer out in DevForce in a day or two. It's not much more sophisticated than the "Quick App"
ten minute demonstration you may have seen elsewhere.
Inside, the Funhouse is an evolving tutorial of intermediate and advanced application
development techniques.
Some parts of the code are deliberately naive. Other parts reveal architectural
features and design patterns that are "over the top" for such a simple app but
become fruitful as your application grows.
The "Funhouse" name conveys
the sense of surprise that awaits the curious developer. We
hope that by exploring its corridors, you will learn to recognize and
resolve issues that typically arise in sophisticated DevForce .NET applications.
NOTE: As of August 1, 2007, the Funhouse
sample application is accessible only to developers who have bookmarked
the pages, and will not be undergoing any additional changes or updates.
We encourage developers interested in building smart client applications
to check out our Cabana reference application here.
Learn to find your way around the Funhouse code and understand the basic application flow.
You are almost ready to get started after you've
or
and unzipped it.
Please read the Release Notes
carefully; they are also included in the zip file.
Note: This Funhouse code compiles only with the latest version of DevForce,
.
Please contact support if you need a Funhouse copy for an earlier version of DevForce.
Install and Uninstall the Client Application
(4 minutes).
Install and uninstall the Funhouse client application libraries and executable
from the IdeaBlade website using ClickOnce.
The application communicates with the Funhouse server at IdeaBlade.com.
Application Project Tour
(14 minutes).
Take a quick tour of each of the projects that make up the Funhouse solution.
This video gives a brief overview of each project, explaining its purpose and highlighting
the most significant files and classes.
Application Launch
(10 minutes).
Most .NET tutorial applications let Visual Studio dictate startup
which means that the program class hands
off to an instance of a main form almost immediately.
Yet, in many scenarios, we won't know what form to load, what modules to include,
what navigation to present, or even what language to speak until we
know who the user is.
The Funhouse launch takes smaller steps.
A free-standing login positions the developer to
choose, configure, and run the application in the manner most appropriate
for the user and the executing environment.
This is also the first taste of the
the Funhouse Model-View-Controller paradigm.
Main Form and Pages
(7 minutes).
The Funhouse main form is a shell, a container for the pages of the application.
That shell could prescribe a consistent, application-wide presentation.
It might divide its visual real estate into a
navigation panel, menu bar, status bar, and a main panel for working pages.
The
Funhouse in this video has only a central panel for working pages but this constitutes
the essential break from the usual practice of dumping
the entire application into a form.
Page, View, and Controller
(10 minutes).
Most Forms and UserControls try to do too much.
Funhouse illustrates IdeaBlade's strong recommendation that developers construct complex
pages from light weight component parts.
While DevForce developers
are used to separating the business object Model from the View-Controller classes, Funhouse takes the next step
and begins to separate View classes from Controller classes.
This video shows us how to build pages programmatically from controller classes
that create and manage instances of their view classes.
|