Exam Area: Content Area 1 – Product Knowledge (15%)
Reference: https://docs.developers.optimizely.com/content-management-system/docs/technology-stack
| Layer | Technology |
|---|---|
| Web Framework | ASP.NET Core 6.0+ |
| Language | C# (.NET 6 / .NET 7) |
| Database | Microsoft SQL Server 2016+ |
| Search | Optimizely Search & Navigation (Elasticsearch) |
| BLOB Storage | File System or Azure Blob Storage |
| Component | Technology |
|---|---|
| UI Framework | Dojo JavaScript Framework |
| Rich Text Editor | TinyMCE |
| Module System | AMD (Asynchronous Module Definition) |
IContent (interface)
├── PageData (web pages)
│ └── SitePageData (custom base class)
│ └── ArticlePage, StartPage, etc.
├── BlockData (blocks)
│ └── TeaserBlock, HeroBlock, etc.
└── IContentMedia
├── ImageData (images)
├── VideoData (videos)
└── MediaData (files)
HTTP Request
│
▼
ASP.NET Core Middleware Pipeline
│
▼
Routing (MapContent, MapControllerRoute)
│
▼
CMS Content Routing (ContentRoute)
│
▼
Template Coordinator (ITemplateResolver)
│
▼
Controller / View Component
│
▼
IContentRepository → Database
│
▼
Response (HTML / JSON)
private readonly IContentRepository _contentRepository;
public MyController(IContentRepository contentRepository)
{
_contentRepository = contentRepository;
}
TemplateDescriptor attribute for registrationServiceLocator.Current (legacy) → prefer DI insteadIInitializableModule runs at application startupCMS uses multiple SQL Server tables:
| Key Table | Description |
|---|---|
tblContent | Primary content data |
tblContentLanguage | Language-specific content |
tblContentProperty | Property values |
tblContentType | Content type definitions |
tblAccess | Access control entries |
tblBigTable | Dynamic Data Store |
Draft (CheckedOut)
│
▼
Published (Published)
│
▼
Previously Published (PreviouslyPublished)
│
▼
Archived (Rejected/Expired)
States:
VersionStatus.CheckedOut – DraftVersionStatus.CheckedIn – Checked inVersionStatus.DelayedPublish – ScheduledVersionStatus.Published – LiveVersionStatus.PreviouslyPublished – Old versionVersionStatus.Rejected – RejectedCMS Instance
├── Site 1 (example.com)
│ ├── Start Page
│ └── Pages...
├── Site 2 (example.co.uk)
│ ├── Start Page
│ └── Pages...
└── Shared Content (Global Assets)
├── Shared Blocks
└── Shared Media