.NET Core Renderer in Sitefinity Cloud​

Overview

Sitefinity .NET Core Renderer and Sitefinity CMS are two decoupled applications that communicate through Rest API calls. Both applications are hosted in Azure on separate Azure App Services.

For more information, see .NET Core Renderer.

Deploy the .NET Core Renderer in the Cloud

You deploy the .NET Core Renderer in your Sitefinity Cloud account. This way, both your Sitefinity CMS and .NET Core Renderer applications are running in the cloud.
For more information, see Develop and Deploy.

In addition to the existing layer of services in Sitefinity Cloud, with the .NET Core Renderer, you have access to the following:

  • Additional Azure DevOps repository, based on Git, for developing the .NET Core Renderer
  • Additional App Services for each environment where the .NET Core Renderer application is deployed
  • Additional pipeline for building and deploying the .NET Core Renderer across each environment
  • Automated upgrades for the .NET Core Renderer application

Cloud development with .NET Core Renderer

When you want to develop locally with the .NET Core Renderer against the Sitefinity cloud setup, you must configure the local Renderer.
For more information about setting up the .NET Core Renderer, see Setup.

The following chart demonstrates the local development setup with Sitefinity CMS and .NET Core Renderer deployed in the cloud:

netcorecloudrenderer 

In Sitefinity Cloud, you have deployed and running both the Sitefinity CMS and the .NET Core Renderer. They are hidden behind the Cloudflare CDN. 

When a user is browsing the site, an HTTP request comes in. It follows the pipeline Cloudflare » Renderer » Sitefinity CMS. This pipeline always requires a connection to the public domain of the Cloudflare CDN.

When you develop locally against a Sitefinity CMS instance hosted in the cloud, you have a locally hosted Renderer application, connected to the Cloudflare CDN. Therefore, you must instruct the cloud hosted Renderer instance to stop acting as a renderer, and to start acting as a proxy. 

NOTE: You can only hook the local Renderer to a non-production environments.

To achieve this, you use the following configuration properties of the Renderer application: 

  • LocalValidationKey 
  • RemoteValidationKey 

When the local Renderer is connecting to the Cloudflare CDN environment, it sends the LocalValidationKey with each request. When the HTTP request reaches the cloud hosted Renderer instance, it compares the incoming ValidationKey with its own RemoteValidationKey. If they match, then the setup will be successful, and you will be able to develop locally against the cloud hosted version of the CMS.

Setup the Renderer app for local development

To do this you need to obtain the value for the LocalValidationKey:

  1. In Sitefinity Cloud, navigate to your dedicated Key Vault instance.
    For more information, see Azure Key Vault
  2. Under Secrets, find the LocalValidationKey and copy the value of the secret.
  3. On your local Renderer, edit the appsettings.json file and under “Sitefinity” section, add the validation key and edit the URL in the following way:
  4. Save and close the file.

Backward compatibility

When working with a three-tier application, such as the .NET Core Renderer application, promoting each of the tiers to the next environment must happen seamlessly with limited downtime.

For example, the changes made to the database layer must be backward compatible with the previous tier - Sitefinity CMS application, so that the two versions of the product must continue to work with the new database model. 
The same is valid for the second tier - Sitefinity CMS application, where the publicly facing APIs must be backward compatible against the third tier – the .NET Core Renderer application.  

For this purpose, Sitefinity CMS will be supporting several .NET Core Renderer versions back. This will enable seamless upgrades with no downtime. 

IMPORTANT: When you make deployments after you have made changes to Sitefinity CMS, upgrade the CMS first, because it holds the backward compatible APIs against previous Renderer versions. 


Was this article helpful?

Next article

Image optimization