Technical Challenges

Retired Content

This content is outdated and is no longer being maintained. It is provided as a courtesy for individuals who are still using these technologies.
This page may contain URLs that were valid when originally published, but now link to sites or pages that no longer exist.

The reference implementation is an executable sample. It demonstrates how you can address common technical challenges that you face when you build line-of-business Web sites with ASP.NET. The following table describes new technical challenges that this reference implementation addresses.

Technical challenge

Description

How is this demonstrated in the reference implementation?

Page composability

Ability to create pages from multiple user controls that can be used in multiple modules. The user controls can be independently developed, tested, versioned, and deployed.

The Order Information page in the Orders module uses the SearchCustomer user control from the Customer module.

The OrderPreview user control is contained in the OrderReview, SavedDrafts and Approval user controls as well as the Search Orders Web page.

Responsive user interface

Create composable Web pages that use the AJAX controls.

Controls from the AJAX Control Toolkit are used across pages.


Some examples of usage are:

The ModalPopupExtender control, which is used on the Order Information page when searching for customers; the ConfirmButtonExtender control, which is used to confirm order submission on the Order Review page; the AutoCompleteExtender control, which is used on the Order Information page; and the CollapsiblePanelExtender and AlwaysVisible controls that are used for displaying help information on the Order Details page.

Respond to browser field events

Dynamically update a field in the browser based on input from another field.

The Order Details page uses the Sku field to retrieve product detail information.

Responsive validation

Ability to validate user input as it is entered, providing a more responsive experience.

Use object level validation across screens and layers.

The application’s Web pages use ASP.NET validation controls.


The Order Information page reuses Orders business entity validation logic through the Enterprise Library Validation Application Block.

Browser communications with external services

Ability to access information exposed by a Web service from client-side scripts.

The Order Details page interacts with an external service that provides product detail information.

The Order Information page interacts with an external service that provides ZIP Codes and cities information.

The following table describes some technical challenges that this reference implementation addresses that are also addressed in the Global Bank reference implementation.

Technical challenge

Description

How is this demonstrated in the reference implementation?

Modularity

Ability to build complex sites based on modules that can be independently developed, tested, versioned, and deployed

Web site solution structure.

Orders and Customers modules that use the Composite Web Application Block.

Distributed Web.config files.

Composable user interface

Ability to create a user interface that is composed of multiple modules that interact with multiple back-end systems

Orders module.

Customers module.

Layout management

Ability to create a common user experience across different independent modules, separating the responsibility of the UI design from the UI development 

Application uses master pages for public site and for module Web pages.

Use of ASP.NET themes and skins.

Use of a site map provider to display module actions on the Web site.

Unit testing Web solutions

Ability to run unit tests against Web page logic

All views in the reference implementation use the View-Presenter patterns to isolate page logic.

All modules include unit test projects.

User profile–based UIs

Ability to change the behavior of the UI based on the user identity and profile information

Site configured with two roles: Approver and User.

Actions available in each module operate on different permissions sets for the available roles (for example, the User role can create an order, and the Approver can approve an order).

Use the site map provider to display permission-aware actions on the Web site.

Rule-based permissions using the Enterprise Library Security Application Block defined in configuration files.

Authentication

Ability to identify registered users of a site

Forms authentication for all protected pages using a custom created membership provider.

Views are protected with the rules settings of the AuthorizationRuleProvider in the DevelopmentWebsite Web.config file that requires authenticated users.

Authorization

Ability to change permissions for different users

Each module defines its own permission set with rules in the module’s Web.config file. The reference implementation uses its own custom role provider.

The Customers module defines the AllowSearchCustomers rule for the SearchCustomers page.

The User role is allowed to access the SearchCustomers page by setting the AllowSearchCustomers rule to the User role in the DevelopmentWebsite Web.config file.

Securing data

Secure user and site information

All exceptions are shielded using Enterprise Library and ASP.NET configuration to prevent information to be leaked to end users in the event of a runtime exception. The customErrors mode is set to RemoteOnly in the DevelopmentWebsite Web.config file.

User input is validated for type, length, format, and range.

By using the Composite Web Application Block, untrusted content is encoded before displaying it on a browser.

Untrusted content is encoded using the Microsoft Anti-Cross Site Scripting Library.

System availability and scaling

Maximize uptime and minimize the time to diagnose problems

Application tested for scaling up and scaling out.

Logging exceptions using the Enterprise Library Logging Application Block for simplified management and diagnostics.

Easy deployment

Minimizing the complexity to deploy new or updated functionality on a site

XCopy deployment of modules.

Modules are deployed independently of each other.

Distributed Web.config files minimize configuration contention.

Note

Note: To eliminate the need for a database installation, the reference implementation uses custom membership and role providers that utilize an in-memory repository.