Optimizely Content Management System (CMS) is based on Microsoft technology and uses Internet Information Services (IIS) as web server, and .NET Framework and ASP.NET as a web development platform. CMS uses the SQL Server relational database. On top of that, Optimizely has a framework API used by all products in the CMS platform.
## .NET framework
CMS is based on the .NET/ASP.NET framework, providing the following advantages:
Easier for developers to quickly implement solutions using Visual Studio extensions.
Flexible integration with other systems and platforms using Web services.
Improves performance using the integrated cache functions in .NET.
In CMS .NET is implemented in accordance with Microsoft guidelines. Since .NET is a language-independent architecture, developers have a wide choice of development methods for their solutions. CMS is written in C#, but developers are free to use other programming languages such as VB.NET or J#. CMS development in .NET is fully object-oriented. See the [Microsoft .NET documentation](🔗).
## System overview
The base CMS Framework provides built-in editorial and administrative functions like version management, content preview, approval workflows, multi-language support, and access rights. Data is stored in an SQL database. The customized solution is built on top of this platform. CMS can run as an on-premise installation, or in the cloud. See [System requirements for Optimizely](🔗).
## Customized solution
A customized solution typically contains these parts:
**Graphical profile** for the site as style sheets (CSS format). These contain predefined colors and fonts used on the site. _Responsive design_ is often applied to support multi-channel display.
**Functions** to support content creation, for example specific page or block types.
**Systems integrations** as required for the site, for example connection to an article database.
**Access rights** configured for users and user groups, to control access to the content structure and publishing. May involve integration with external membership providers.
**Content** created by editors, and stored in the database.
**Assets** such as images and documents used on the site.
CMS uses **Microsoft SQL Server** to store content and other information created in the system. All database editions including SQL Azure are supported. A database with the CMS schema is automatically created when creating new sites from the Visual Studio integration. Each version of the database schema targets a specific version of CMS.
## Web server
On-premises CMS sites in production use **Microsoft Internet Information Services (IIS)**, which is a flexible, general-purpose web server that runs on Windows operating systems to serve requested HTML pages or files. When developing locally, you can use IIS Express which is included with Visual Studio, and then move to the full IIS when ready to go live. See [Deployment](🔗).
## Development environment
CMS solutions are conveniently developed using Windows, SQL Server, and Visual Studio from Microsoft. CMS also provides a set of [Visual Studio extension templates](🔗), to speed up website development.
You should use MVC rather than Web Forms, when building CMS websites with ASP.NET. The main advantages are better control of generated HTML, better testability and code reuse, and better complexity handling. See the [ASP.NET MVC documentation](🔗).
## Develop for the cloud
An CMS solution can be hosted in the cloud or on-premises. Cloud-based solutions are a cost-efficient way to manage websites, as these will dynamically scale out and in again depending on traffic volume, and the cost is based on usage and number of running instances. You can manage your cloud-based solutions yourself, or use Optimizely Digital Experience Platform.