|
1
|
|
|
2
|
- The Problem: With static pages, difficult to maintain consistency;
creating and updating content is labor-intensive
- The Solution: Content Management Systems (CMS) address these issues by
separating content from presentation. Content is stored in database,
formatted and displayed on request
|
|
3
|
- Low-End Systems (e.g., Web Logs, IBuySpy) are inexpensive, but offer
limited flexibility, capability
- Mid-Range/High-End Systems start at tens of thousands of dollars per
server. A complete implementation can easily total hundreds of thousands
of dollars in software and consulting fees
|
|
4
|
- A simple, homegrown system allows you to test the content management
waters without spending a fortune
- You’ll get the code for our ASP.NET content management framework, and
may modify or enhance it to meet your needs
|
|
5
|
- Design goal: Low maintenance!
- SQL Server database stores content,
user information
- Pluggable data access layer (cmsDB) allows
use of other databases (Access, Oracle, etc.)
- Schema considerations
- Content elements in table columns?
- Use XML to simulate OODB?
- We chose hybrid approach: Best of both worlds
|
|
6
|
- Take 1: Implementation Inheritance
- Overview
- Base content class knows how to load and
save itself via object serialization
- Specific content types inherit from base class
- User controls handle display, editing
- Issues
- New content types require developer involvement
- Content in database is version-specific
|
|
7
|
- Take 2: Generic Content Object
- Overview
- Implemented as collection of name-value pairs
- Single class can handle any content, without developer involvement
- Solves data versioning problem
- Tradeoffs
- No type-safety: Can’t make assumptions about nature of content
|
|
8
|
- Overview
- Issues
- Not all .NET types support serialization
- Controlling serialization with attributes
- Generating XML-friendly HTML
- XML is case-sensitive (duh!)
|
|
9
|
- XML-based UI eases maintenance
- XML files describe edit pages
- Page generated dynamically at runtime
- Page saves values to content object,
which persists self to database
- Single class handles all content editing
- New content types require only XML edit form definition and HTML
display template
- No code changes required!
|
|
10
|
- Role-based security
- Contributor, Editor, Managing Editor,
Administrator
- Simple go/no-go approval
- Design supports more complex workflow
scenarios
|
|
11
|
- Page Templates
- Templates enforce consistent look & feel
- Content inserted into placeholders at runtime
- User Controls
- Page templates implemented as user controls
- Data-bound controls display content
- Can be maintained by production staff;
no programming required
- Caching
|