Exam Area: Content Area 1 – Product Knowledge (15%)
Reference: https://docs.developers.optimizely.com/content-management-system/docs/getting-started
Optimizely Content Cloud (also known as CMS 12) is an enterprise content management system (CMS) built on ASP.NET Core (.NET 6+). It is the successor to EPiServer CMS.
| Component | Technology |
|---|---|
| Framework | ASP.NET Core (.NET 6 / .NET 7) |
| Language | C# |
| Database | Microsoft SQL Server |
| ORM | EF Core (partial) + custom data layer |
| Frontend UI | Dojo JavaScript Framework (CMS UI) |
| DI Container | Microsoft.Extensions.DependencyInjection |
| Package manager | NuGet |
| Search | Optimizely Search & Navigation (EPiServer.Find) |
<!-- Core CMS packages -->
<PackageReference Include="EPiServer.CMS" Version="12.*" />
<PackageReference Include="EPiServer.CMS.Core" Version="12.*" />
<PackageReference Include="EPiServer.CMS.UI" Version="12.*" />
<PackageReference Include="EPiServer.CMS.AspNetCore" Version="12.*" />
<!-- Template/Alloy starter -->
<PackageReference Include="EPiServer.CMS.TinyMce" Version="*" />
<PackageReference Include="EPiServer.Cms.WelcomeIntegration.UI" Version="*" />
EPiServer.CMS.Core – Core CMS functionality (IContentRepository, ContentType, etc.)EPiServer.CMS.UI – Edit and Admin UIEPiServer.CMS.UI.Core – Core UI servicesEPiServer.Framework – Base framework (caching, events, DI)┌────────────────────────────────────────────────┐
│ Optimizely CMS 12 │
├─────────────────┬──────────────────────────────┤
│ Edit/Admin UI │ Delivery (MVC/Razor) │
│ (Dojo JS) │ ASP.NET Core │
├─────────────────┴──────────────────────────────┤
│ Content API (IContentRepository) │
├────────────────────────────────────────────────┤
│ EPiServer Framework (DI, Events, │
│ Caching, Globalization, Scheduling) │
├────────────────────────────────────────────────┤
│ Microsoft SQL Server │
└────────────────────────────────────────────────┘
MyOptimizelySite/
├── Models/
│ ├── Pages/ # Page content types
│ ├── Blocks/ # Block content types
│ ├── Media/ # Media types
│ └── ViewModels/ # View models
├── Views/
│ ├── Pages/ # Views for page types
│ ├── Blocks/ # Views for block types
│ └── Shared/ # Shared views
├── Controllers/ # MVC controllers
├── Business/ # Business logic
├── Infrastructure/ # Initialization modules, etc.
├── wwwroot/ # Static assets
├── Program.cs # App startup
├── appsettings.json # Configuration
└── module.config # CMS module config
// Program.cs
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddCmsAspNetUI();
builder.Services.AddCms();
// Add other services
var app = builder.Build();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthentication();
app.UseAuthorization();
app.MapControllerRoute(name: "default", pattern: "{controller}/{action}/{id?}");
app.MapContent(); // CMS routing
app.Run();
| Feature | CMS (PaaS) | DXP (SaaS-like Cloud) |
|---|---|---|
| Hosting | Self-hosted | Optimizely Cloud |
| Database | Self-managed | Managed |
| Deployment | Automated | Deployment API |
| CDN | Optional | Built-in |
| Scaling | Self-configured | Automatic |
AddCms() and AddCmsAspNetUI() called? (Program.cs / Startup.cs)