Chapter 1
Introducing the Sitecore ASP.NET CMS
What's in This Chapter?
Reviewing web content management systems
Separating content management environments
Sitecore product and company history
Identifying Sitecore solution components
This chapter explains the purpose of a web content management system (CMS), describes the separation of CMS environments, such as test and production, and provides an overview of Sitecore both the company and its namesake ASP.NET (Application Server Pages with the .NET Framework) CMS, as well as the history of that product. Finally, this chapter describes the components that comprise a Sitecore instance, which is an installation of the Sitecore ASP.NET CMS product.
Web content management software enables nontechnical CMS users to maintain the content driving a web solution without the need to understand its technical implementation. Sitecore uses the ASP.NET platform provided by the Internet Information Server (IIS) web server on the Microsoft Windows operating system to provide one of the most advanced and comprehensive web content management solutions and development frameworks available today.
No web content management system delivers the solution you need without some level of input, whether in the form of entering content and choosing predefined presentation components or building an entire solution. While predefined presentation components are available for the platform, Sitecore is on the latter end of this continuum, focusing on CMS developers as much as users, providing both a finished product and a development framework.
Understanding Web Content Management Systems
Web content management systems are typically web applications that provide browser-based user interfaces for users within an organization (CMS users) to maintain the content and often some aspects of the presentation of one or more published websites. Web content management systems typically depend upon a web server and an application server or the Common Gateway Interface (CGI see http://bit.ly/tvN7Vg). Individual content management systems provide additional specific features such as authentication, authorization, locking, versioning, workflow, audit, internationalization, and localization of the content, as well as separation of work-in-progress data from the published websites.
Web content management systems typically store structured, unstructured, and binary content. Presentation components of the system format that content as markup, such as HTML, for clients such as web browsers. That markup typically contains embedded links to media and other resources in the CMS. One primary aim is to enable nontechnical subject matter experts to maintain the content of websites without having to learn technologies such as HTML or install client-side software. Additional goals typically include consistency in the presentation of the published websites, as well as reuse of content among pages and multiple managed sites, as well as formatting that content differently for various devices (different markup for browsers, mobile devices, printers, and so forth), or content reuse for any other purpose.
There are two primary types of web content management systems. In the early days when web servers and web application servers were not tightly integrated (think CGI), the first CMS tools merged content with code in some kind of generation process run in a content management environment and then published the result to a content delivery environment as files. That result could be static markup to serve without processing (which generally required a separate architecture to manage web applications as opposed to static pages) or code to process further at runtime using a web application server. More advanced solutions stored information in database records in addition to or instead of files, often using query string parameters or other URL components to identify those records.
As application servers became more common, and especially as ASP.NET merged the application server with the web server, content management systems evolved to generate output dynamically for each HTTP request. These modern systems merge content with presentation at runtime to generate each page. While publishing static files can have some benefits, the advantages of generating output at runtime become more clear as the Internet evolves further into a dynamic, integrated, social experience personalized for each visitor.
Due in part to the incredible pace of change on the web, no CMS software can possibly generate your site automatically, or even meet all of your current expectations, let alone your potential future requirements. In fact, requirements typically change between platform selection and the time the website becomes available to public visitors. A website may have a shelf life of just a few years before it begins to appear stale, and organizations frequently acquire other organizations or go through other rebranding exercises. The solution architecture must be flexible enough to support new features and visual redesign. Consider a CMS as a development platform or framework rather than a canned solution. Think of CMS implementation as an ongoing program, not a project with a fixed duration.
Content management solutions typically involve a number of technical environments. Developers often install Sitecore on their workstations, though some organizations employ a shared development environment for multiple developers. From there, code changes should go through at least an integration test environment and then additional environments such as user acceptance testing (UAT). When complete, changes arrive in the content management production environment, where CMS users update the site; and from content management production to content delivery, where visitors access the published website. Some organizations deploy changes to a staging environment before they reach content management production and content delivery.
As opposed to code changes initiated by developers, content changes often go through a separate publishing workflow process initiated by CMS users in the production content management environment.
Therefore, there are actually two production environments: production content management and production content delivery. Content delivery is the most critical environment; if that environment is down, the published website is down. If the production content management environment is down, CMS users cannot update the site.
Introducing Sitecore
Sitecore is a complete ASP.NET development platform and web content management system (CMS). Sitecore is the leading ASP.NET web CMS available worldwide today. Its unique open architecture, diverse capabilities, and extensibility make it the most advanced CMS on the market. Sitecore developers generally agree that they can deliver more value on their projects in less time using the Sitecore product suite than using any other system.
Sitecore is a high-performance, scalable, extensible ASP.NET web CMS that generates all output dynamically and uses the same components and system architecture for both content and application pages. Sitecore does not limit the markup you can generate or the technologies that you can use, such as XHTML (eXtensible HyperText Markup Language), HTML5, CSS Cascading Style Sheets (CSS), and Asynchronous JavaScript and XML (AJAX).
The Sitecore CMS provides at least the following array of facilities for managing complex and dynamic websites:
- Flexible, hierarchical data storage
- APIs and points of configuration and extension, including hooks into the user interface, pipelines, event handlers, and much more