Architecture
Functional Block

Secure and Managed Layer
The Data Layer
The data layer is split into two separate layers. The first will consist of the set of stored procedures implemented directly within the database. These stored procedures will run on the server and provide basic data only. Not only are they pre-compiled and pre-optimized, but they can also be tested separately and, in the case of SQL Server 2000, run within the Query Analyzer to make sure that there are no unnecessary table scans.

The next layer consists of a set of classes which call and handle the stored procedures. One class per group of stored procedures handles all Select, Insert, Update, and Delete operations on the database. Each class follows OO design rules and be the result of a single abstraction - in other words handles a single table or set of related tables. These classes do handle all requests to or from the actual database and provide a shield to the application data. All requests are passed through this layer and all concurrency issues can and are handled here. In this way thedata integrity is maintained and that no other source can modify the data in any way.
If later database changes for any reason, it can be easily modified to handle them without affecting any other layers. This considerably simplifies maintenance.
Business Rule Layer
This layer is implemented in order to encapsulate the business rules. Here are the classes which implement the business functionality. They neither access data (except through the data layer) nor do they bother with the display or presentation of this data to the user. By isolating this Business Logic, we are able to concentrate on the guts of our system without the worry of design, workflow, or database access and related concurrency problems. If the business changes, only the business layer is affected, again considerably simplifying future maintenance and/or enhancements.
Workflow Layer
This is one of the optional layers and deals with data flow to and from the system. It may or may not interact directly with the user interface, but always deals with external data sources.
Presentation Layer
This layer handles everything to do with the presentation of the system. This does not just include the webpages (or the user interface), but also all the classes which will help you present the data.
Ideally, the event method implementations within the form classes will only contain calls to the presentation layer classes. The web or windows forms, used for visual representation only interface seamlessly with the presentation layer classes which handle all translation between the business layer/workflow layer and the forms themselves. This means that any changes on a visual front can be implemented easily.