Rich Internet Application (RIA) Frame

- J.D. Meier, Alex Homer, Jason Taylor, Prashant Bansode, Lonnie Wall, Rob Boucher Jr, Akshay Bogawat

There are several common issues that you must consider as your develop your design. These issues can be categorized into specific areas of the design. The following table lists the common issues for each category where mistakes are most often made.

Category Key issues
Business Layer Moving business operations to the client for reasons other than improved user experience or application performance
Failing to use profiling to identify expensive business operations that should be moved to the client
Trying to move all business processing to the client
Failing to put business rules on the client into their own separate components to allow easy caching, updating, and replacement
Using less powerful browser-supported languages instead of considering windowless RIA plug-ins written in rich programming languages to provide client side processing
Caching Failing to use isolated storage appropriately
Failing to check and request increase of the isolated storage quota
Failing to intelligently divide large client applications into smaller separately downloadable components
Downloading and instantiating the entire application at start-up instead of intelligently and dynamically loading modules
Communication Trying to use a synchronous communication model
Using an incorrect strategy to bind to the service interface
Attempting to use sockets over unsupported or blocked ports
Controls Adding custom control behavior through sub-classing instead of attaching new behavior to specific instances of controls
Incorrect use of controls for a UI type
Implementing custom controls when not required
Composition Incorrectly implementing composition patterns, leading to dependencies that require frequent application redeployment
Using composition when not appropriate for the scenario
Not considering composition, and completely rewriting applications that could be reused with minimal or no changes
Data Access Performing data access from the client
Failing to filter data at the server
Exception Management Failing to design an exception-management strategy
Failing to trap asynchronous call errors and unhandled exceptions; for example, not using the OnError event handler supported by Microsoft Silverlight to trap exceptions in asynchronous calls
Logging Failing to log critical errors
Failing to consider a strategy to transfer logs to the server
Segregating logs by machine instead of by user
Media & Graphics Failing to take advantage of adaptive streaming for video delivery
Assuming access to hardware acceleration on client
Presentation Not pixel-snapping UI elements, which results in degraded UI appearance
Failing to handle the forward and back button events
Not considering and designing for deep linking when necessary
Portability Failing to consider the cost of testing for each platform and browser combination in a Web application compared to using an RIA interface
Using platform
Using less powerful browser
State Management Failing to use isolated storage
Using the server to store frequently changing application state
Failing to synchronize state between the client and server when user configuration must be available on multiple clients
Validation Failing to identify trust boundaries and validate data that passes across them
Failing to validate data on both the client and the server
Failing to collate extensive client-side validation code into a separate downloadable module

Last edited Feb 2, 2009 at 5:36 PM by prashantbansode, version 2

Comments

No comments yet.