A Smartsite site is a collection of serveral servers and WCF services. Each of them is used for a different task. The database server is used to store the content, the files server is used to store assets and configuration files, the CMS Server is used for managing the data, the Publication Server is used for displaying the data. WCF Services are used to communicate between these servers. All these servers and services have to be configured properly.
There are several servers for Smartsite. This diagram gives an overview of all of them:
The database server is used to store the data. Smartsite supports and will support several kind of database servers. Within a database server, a Smartsite site is defined as single database containing tables, views, stored procedures and functions. Database security is used to define multiple roles for reading and writing data to the database. Each Smartsite site has it's own database within the database server. Both the CMS Server and Publication Server should be able to connect to this server to read and write data.
In an outscaling scenario, multiple database servers can be used for performance reasons and mulitpe CMS Servers and/or Publication Servers can use a different database server. Synchronization of data amongst the several database servers is done by the CMS Servers.
The CMS Server is used for managing the data stored in the database server. The CMS Server is a COM based application which is accessed through a web-based client. Therefor a weberver has to be configured to start the CMS Server. Smartsite CMS Server supports it's own webserver, Smartserver, or Internet Information Server.
Obviously, the CMS Server need access to the database to read and write information into the database. The CMS Server needs access to the site files on the file server as well. Configuration of the CMS Server, including database connectionstring and rootpath to files, is defined within the Windows Registry.
The Publication Server is used to display data. the Publication Server is Microsoft.NET based application which acts as a ASP.NET Application under a web server. The Publication Server executes well-formed SXML documents, a mix of Smartsite XML and a mark-up language like XHTML, which retrieve data from the database or the file server. Configuration of the Publication Server is in .NET config-files like Web.config, Smartsite.config, Smartsite.Data.Confg, etc.
Interaction between Editors and the CMS Server and Visitors and the Publication Server is mapped through a webserver. Smartsite supports and will support several kind of webservers.
The developer console is a .NET native client appliaition which connects to a Smartsite site. It is a webserver, CMS Server and Publication Server in one.
The core communication between each of the servers takes place through Windows Communication Foundation (WCF). The communication between the Developer Console and the CMS Server uses a webservice started by the CMS Server. This diagram gives an overview of the different services.
The StateSyncService synchronizes state bewteen the CMS Server and the Publication Server. Both servers have an internal state with, for example, the hierarchic ordning of the content. When the state of the CMS Server changes, e.g. when information is added, moved or deleted, this changed state have to be notfied to Publication Server. The StateSyncService endpoint, created when the Publication started, is used as target to communicate the changed state of the CMS Server. The CMS Server uses it's outscaling mechanism to catch all the events and distribute them to the approriate Publicaton Servers.
When a preview of an item is requested from within the CMS Server, the Publication Server should be invoked to generate this preview. Link integrity between content is also maintained based on rendered content by the Publication Server. This communication is done through the InteropService.
The EventSynchronizationService and the cmsWebService are necessary when the Developer Console is used. This client application is used in the developing stage of the site and hardly in a production environment. Multiple developers can use the Developer Console to develop a Smartsite site. The EventSynchronizationService is used to present each started Developer Console to the Publication Server. Once connected to the Publication Server, the Developer Console's inner state is updated through the EventSynchronizationService when the state of the Publication Server changes.
The cmsWebService is started by the CMS Server. This service is used to update the CMS Server from a Developer Console. From the Developer Console, (technical) content can be edited and changed. When saved, the CMS Server is updated which means it's state is changed. Therefor, the Publication Server is updated through the StateSyncService. The Publication Server will update all opened and attached Developer Consoles using the EventSynchronizationService.
The Developer Console is a rich environment for editing Smartsite XML. Code completion, intellisense and validation are important parts that improve the developing of Smartsite sites. This functionallity is also presented within the CMS Server through an ActiveX control: the Smartsite CodeEditor. When the CodeEditor is used, the ShemaService is used to create the appropriate SXML Schemas. Each Publication Server can use a different version of Smartsite so different macros and vipers can be present. Each site can also implement it's own virtual macros. Once the Publication Server is started, schemas are created containing all necessary information about macros and vipers. The SchemaService is used to transport this information to the CodeEditor when this is used from within the CMS Server.