Sitecore Host part one

Introduction to Sitecore Host, Sitecore Host Applications and Sitecore Host Plugins

In this four part series of blog posts, we will examine in detail the Sitecore Host platform and what benefits this brings to Sitecore Experience Platform. We will also have a closer look at Sitecore Host Applications as well as the Sitecore Host plugins. I will encourage you to please read through these blog posts starting with part one, through to part four. I have also provided the links below if you would like to jump and have a peek on the other parts as well. All code snippets referenced in the blog posts can also be found on my public Github repo using the link provided below.

  1. Sitecore Host part one – Introduction to Sitecore Host, Sitecore Host applications and Sitecore Plugins (this post)
  2. Sitecore Host part two – Sitecore Horizon 9.3
  3. Sitecore Host part three – Sitecore Identity Server
  4. Sitecore Host part four – Creating and extending Sitecore Host Plugins
  5. Code samples in my Github Repository

What is Sitecore Host

Sitecore Host in a new common platform for all Sitecore Services, that was introduced in Sitecore Experience Platform 9.1. Sitecore Host acts as a base for a Sitecore Service and it requires .NET Core runtime and hosting bundle 2.1

Sitecore Service is a feature or piece of functionality that runs separately outside of main Sitecore instance

One cool benefit that Sitecore Host provides is the pluggable nature of its architecture. This means the base Sitecore Services can be extended through Sitecore Host Plugins, without having to change or recompile any part of the base code.

What is Sitecore Host Plugin?

You can define a Sitecore Host Plugin as a feature or functionality that is dynamically loaded into Sitecore Host. As you will see later on, a plugin can contain Code, Configuration, Commands and Content. A plugin can also depend on another plugin, and therefore plugins are always loaded in a dependency order.

What is Sitecore Host Application?

Sitecore Host Application is therefore a fully hosted application that consists of the Sitecore Host base code plus one or more Sitecore Host plugins. It consists of the following parts: Root folder, Application Assets Folder, Sitecore folder and SitecoreRuntime folder.

Sitecore Host applications includes:

  • Universal Tracker Service
  • Sitecore Identity Server
  • Sitecore Horizon 9.3

Sitecore Host Directory Structure

2.0 SitecoreHostFolderStructure

Root Folder

  • All code libraries/DLLs including the  .NET Core runtime
  • The Host DLL itself (E.g. Authoring.Host.dll)
  • Optional configuration file for Sitecore Host itself (sitecore.xml)
  • Optional environment-specific configurations, e.g. sitecore.production.xml for production environment

Application Assets Folder

  • Contain the Sitecore Host Application Core assets such as Configuration files
  • Content folders
  • MVC views folders

Sitecore Folder

  • Contains Sitecore Host plugin libraries supplied by Sitecore
  • Contains the Sitecore Host plugin manifest files plus any additional assets such as configuration files

SitecoreRuntime Folder

  • Special folder to extend or modify base Sitecore Host application
  • Contains custom Sitecore Host plugins, such as those created by developers
  • Each folder acts as a store for an environment
  • Structure mirrors main Host application

Cross-platform support

In Windows environments, these applications are hosted as Internet Information Services (IIS) websites as the .NET Core hosting bundle comes with IIS Support. As .NET is cross-platform, these applications can be hosted using the Kestrel web server on Linux and macOS

Other Sitecore Host Benefits

Sitecore Host platform comes with many benefits to both the businesses as well as to the developers building cool stuff with Sitecore.

  • Unified service registration and Dependency Injection
  • Unified configuration system that is merged and patched the same way
  • Unified file system access and directory structure
  • Unified Command-line actions that work the same way for all applications
  • Dynamically loaded plugins
  • Cross-platform ready – the services behave the same way whether run on cloud or on-premises, in Windows, Linux or macOS workloads
  • Installation experience is consistent

Conclusion

In this blog post, we examined what is Sitecore Host, Sitecore Host applications and their composition and directory structure. We also had an introduction to Sitecore Host plugins and the extensibility the framework introduces to Sitecore Host. We finished with some of the benefits Sitecore Host brings.

In the second part of this four-part series, we will examine Sitecore Horizon 9.3 one of the Sitecore Host Applications.

Please feel free to leave us your feedback and/or comments below.

Sitecore Horizon 9.3 – installation guide

Sitecore-Horizon-Hero

What is Sitecore Horizon?

Sitecore Horizon 9.3 (referred as Horizon for brevity in this blog) is the new alternative approach to editing content that is now available together with release of Sitecore Experience Platform 9.3 since late November 2019. Horizon is a separate Module that can be installed and is hosted separately from the main Sitecore XP 9.3 instance.

Sitecore previously announced Horizon in Symposium 2017 with a preview version released with Sitecore XP 9.1

The new editing environment in Sitecore XP 9.3, known as “Horizon” offers brands an easy to use, intuitive, and contextual interface with everything a user needs for easy navigation. The new editor user interface sets a foundation for the future and also provides real-time contextual insights as content is created and published, giving marketers the knowledge they need to drive improved conversions
~~~~
Sitecore official Symposium 2019 announcement

Horizon architecture at a glance

  • Horizon introduces a new IIS website instance, the content Authoring host application
  • Horizon deploys an integration module to every CM  instance
  • Horizon client application is built with Angular 7.2 utilizing Node.js for server-side rendering
  • Horizon client application uses GraphQL-based backend API to communicate with backend. This is similar to Sitecore JSS services
  • HTTPs requirement for communications between CM instance and the Authoring host application
  • User authentication via the Sitecore Identity Service

Horizon Installation – Prerequisites

  • Installation assets and guide available from dev.sitecore.net on the Sitecore Horizon 9.3.0 page
  • As prerequisite you must install Sitecore Experience Platform 9.3 or later. Also verify that
    • Sitecore CM instance has HTTPS enabled
    • Sitecore Identity must be installed
    • WebSocket Protocol is enabled in Windows Server Manager. Please see the screenshot below, where you need to tick to enable this feature and update your system.

5.0 horizon-websocket-protocol

  • The following tooling must be installed
    • Sitecore Install Framework 2.2.0 or later
    • .NET Core runtime and hosting bundle 2.1
    • Node v10.16.0 and npm 6

Horizon Installation – step by step guide

  1. This is based on an existing XP0 Developer Workstation Sitecore XP 9.3 installation. Please follow my blog post for a guide on how to setup Sitecore XP 9.3 on your on-premises developer instance.
  2. Unpack the Sitecore Horizon 9.3.0.zip package to a working folder (as shown in screenshot below). You will then need to update the parameter.ps1 PowerShell script with parameters for the following:
    • ContentManagementInstanceName – specify CM instance name
    • ContentManagementWebProtocol – this must be HTTPS
    • SitecoreIdentityServerPhysicalPath – specify path to Identity Server
    • SitecoreIdentityServerPoolName – specify Identify Server application pool name
    • SitecoreIdentityServerSiteName – specify Identity Server site name
    • LicensePath – specify your license full path (including file name)
    • AuthoringHostName – (recommended authoringhost.cmdomain.com as sub-domain of CM instance)
  3. After you save your changes to parameter.ps1 PowerShell script, simply run the install.ps1 PowerShell script from your command prompt or PowerShell command to install Horizon

5.1 horizon-installps1

Horizon install package extracted showing parameters.ps1 script

Below is a sample parameters.ps1 script with the parameters specified. Notice the license path must include the file name.

5.2.1. horizon-parameters-sample
Sample parameters.ps1 script with values

Whilst Horizon is installing, you will see the progress screen similar to the one shown below

5.3 horizon-install-progress
Horizon installation in progress

Launching Sitecore Horizon

Sitecore Horizon 9.3 once successfully installed can be launched from the Launchpad of your main Sitecore XP 9.3 as shown below

5.4 horizon-install-complete

Click on Horizon “missile” icon to launch the Horizon Authoring host application, as shown below

5.6 horizon-autoring-instance

Congratulations! You have successfully installed Horizon when you see the above page. You will notice that Horizon is opened on a separate tab from your main Sitecore instance Launchpad

What changes does Horizon introduce to wwwroot

As mentioned above in the architecture at a glance, Horizon create a new IIS website as well as integration module to every CM instance.

Below is a screenshot showing IIS websites before and after Horizon is installed.

IIS Websites before horizon
IIS Websites before horizon

5.4.1-horizon-install-complete-iiswebsites_edited

And below are the changes to your main Sitecore instance (wwwroot changes).

Red highlight indicates the file(s) were modified. Blue/Purple indicates new files were introduced

wwwroot changes introduced by Horizon to CM instance
wwwroot changes introduced by Horizon to CM instance

And below are the changes to your Sitecore Identity server (wwwroot changes).

Red highlight indicate the file(s) were modified.

6.2 horizon-updates-to-identity-server

Troubleshooting Installation Issues

You may come across installation issues. Below is how you can troubleshoot them

Node.js issues

You may come across Node.js issues which means Horizon will not load successfully when launched. You may get the error message below on your browser after launching Horizon

Failed to render a page: InternalServerError when launching Horizon, see screenshot below 

5.5.1 horizon-nodejs-error

You may get exceptions reported in the logs similar to this one below

An unhandled exception was thrown by the application.
System.InvalidOperationException: Failed to start Node process. To resolve this:.
[1] Ensure that Node.js is installed and can be found in one of the PATH directories.
    Current PATH enviroment variable is:
    Make sure the Node executable is in one of those directories, or update your PATH.

To resolve the Node.js issue, try the following options:

A) If you are using Node.js version management utility (NVM) to manage your NodeJS versions, ensure you have given the IIS application pool permissions to your NVM Roaming folder. Below is a screenshot showing how to give permissions

5.5.3 horizon-nodejs-error-nvm-permissions
setting permission on nvm roaming folder

B) If you are not using NVM, then please try uninstall Node.js and then re-install it again using the Windows Installer. Please refer to the Sitecore Horizon 9.3 Installation guide on the required Node.js version

Enabling logging on Authoring.Host.dll

Horizon logs are written on the logs sub-folder located at the wwwroot of the Horizon instance, as shown below:

update web.config to enable logs
update web.config to enable logs

If you can’t see any log files in the logs sub-folder, you can update the web.config file located at the wwwroot of the Horizon instance as shown below. Simply set the stdoutLogEnabled =”true” save your changes, and then recycle the Horizon app pool

Hope you find this post useful. Please watch this space as I will blog more about Horizon, including a deep dive on its features among other areas.

Sitecore XP 9.3 Initial Release

sitecore93-bannar

A guide to installing by Sitecore Install Assistant

Sitecore Experience Platform (XP) 9.3 was released late November 2019. In this blog, I will walk you through installing this release on your local on-premises development or testing environment.

The team at Sitecore have done a great work in documenting what is new in this release which I highly recommend you review as well.

Without further ado, I will now jump straight into installing a brand new instance of Sitecore XP 9.3

Sitecore® Experience Platform™ 9.3 focuses on product updates and enhancements that increase usability and improve performance – all centered around making it easier and faster to build digital experiences so brands can accelerate their time to value. The new editing environment offers an intuitive interface with everything a user needs for easy navigation as well as real-time contextual insights as content is created and published, giving marketers the knowledge they need to drive improved conversions.

Getting required downloads and installation package

  • Installation assets and guides available from dev.sitecore.net
  • Our download option is for On Premises deployment
  • We will be using Graphical setup package for XP Single option. Download this package to your computer. The package is a zip file named Sitecore 9.3.0 rev. 003498 (Setup XP0 Developer Workstation rev. 1.1.1-r4).zip

Extract the package and launch Sitecore Install Assistant (SIA)

  1. Ensure you “unblock” the zip package as shown in the screenshot 1 below
  2. Then extract the zip package to your working folder as shown in screenshot further below

Screenshot 1 - unblock the package before extracting the contents
Screenshot 1 – unblock the package before extracting the contents

Review prerequisites and requirements

Sitecore XP 9.3 supports the following database servers:

  • Microsoft SQL Server 2016 SP2 and 2017 – This is required if you are going to use SQL Server for the Experience Database (xDB).
  • MongoDB Server 4.0.5 – This is required if you are going to use MongoDB for the Experience Database (xDB) or as a Session State Provider.

SIA requires .NET Framework 4.7.2.

Install all the operating system updates.

Have a valid Sitecore license file

For a comprehensive guidance on the prerequisites and requirements, review the Quick Installation Guide for a Developer Workstation

Once ready, double click the setup.exe file below to launch the Sitecore Install Assistant

Screenshot showing extracted package for Sitecore 9.3.0 rev. 003498 (Setup XP0 Developer Workstation rev. 1.1.1-r4)
Screenshot showing extracted package for Sitecore 9.3.0 rev. 003498 (Setup XP0 Developer Workstation rev. 1.1.1-r4)

Running setup.exe should launch the Sitecore Install Assistance, which I will walk through step by step below

Sitecore Install Assistant step by step

1.1 SIA-start-page

Click on Start button to advance to the Prerequisites screen

SIA prerequisites screen
SIA prerequisites screen

This step will install the correct version of Sitecore Install Framework (SIF) and Windows Server prerequisites needed for Sitecore XP 9.3. Note if you already have SIF and Windows server prerequisites, you can skip this step

1.3 SIA-prereqs-installing

1.4 SIA-prereqs-install-complete

Once prerequisites are successfully installed, advance to the next screen to install Solr 8.1.1

1.5 SIA-install-solr

Sitecore xP 9.3 requires Solr 8.1.1 search service. On this screen, specify the Solr port, Windows Service and Install path and then click install. If Solr 8.1.1 is already installed, you can skip this step by clicking on the Skip button.

1.6 SIA-install-solr-inprogress
SIA Solr 8.1.1 installing

1.7 SIA-install-solr-complete
SIA Solr 8.1.1 install complete

You can verify Solr 8.1.1 is successfully installed and running at this point by accessing the URL https://localhost:8983/solr/#/ (please note the port number configured in previous screen). You should see a page similar to one below

1.8 SIA-solr-instance-running
Solr 8.1.1 portal up and running

Once Solr 8.1.1 is successfully installed, advance to next screen to configure Sitecore Settings

1.9 SIA-sitecore-settings

  • Installation/solution prefix – specify a prefix to be added to names of Sitecore instance, SQL databases and Solr cores
  • Sitecore admin password – specify a strong password for Sitecore instance admin account
  • Sitecore license file – specify the full path including the filename for your license file
  • Click next to advance to SQL Server settings screen

1.10 SIA-sql-server-settings

Specify the name of the SQL Server instance, the admin user (sa) and admin user password. Then click Next to advance to Solr settings screen

1.11 SIA-solr-settings
SIA Solr 8.1.1 settings

On this screen enter the Solr 8.1.1 setting

  • Solr service URL – should be https://localhost:8983/solr (note the port number if different)
  • Solr file system root – enter your the path to Solr 8.1.1 you installed previously
  • Solr Windows Service name – enter the Solr windows service name configured previously
  • Click Next to advance to next screen for Optional modules

1.12 SIA-optional-modules

You can skip Sitecore Experience Accelerator (SXA) as we don’t need it in this case

1.13 SIA-summary

The summary screen showing list of the settings you specified. Allows you to verify everything is correct, if not use the Back button to go back and edit them. Once happy click on Next button to advance to Validate screen

1.14 SIA-validate

The installer validates you have

  • Sitecore license file
  • SIF configuration files
  • WDP files

Once validated you should see green ticks against each item, then click Install to initial the install process

1.15 SIA-install-progress

The installation may take about 15-30 minutes depending how quickly the install operations execute on your system

1.16 SIA-install-complete

If everything goes to plan, you will see the installation completed message. Then click Next to advance to Installation completed screen, with a link to Launch Sitecore

1.17 SIA-launch-sitecore

Post Install Notes

SIA graphical setup tool was introduced in Sitecore XP 9.2 It is nice to see some impovements to this tool, such as optional installation of Solr and SXA.

I hope this guide here gives you motivation to go and try this on your own.

Once again, visit Sitecore XP 9.3 Release Notes page for a full list of hightlights, new features or impovements, any deprecated features among others

My top 10 .NET web development productivity tools, which are yours?

Productivity

So I write software for a living. I have been doing this for more than 10 years. I have written all sorts of web applications while working for different organisations. I also write Windows native apps on my own spare time.

I believe there are many ways to deliver a software project, hence the phrase there’s more than one way to skin a cat! However from time to time we choose to do things in a certain way based on several factors. For me, productivity has to be on top of the list.

Below I share my top 10 .NET web development tools that make me more productive in the software projects I do.

Text editors and IDE

  • Textpad – This is a free simple and yet a very powerful text editor for quickly editing your code files including web pages. It features a powerful expression engine compatible with Perl and Javascript with syntax highlighting. It can handle very large file sizes and can be handy for quick find and replace tasks in large text based files
  • Notepad++ – This a free source code editor which is optimised to ensure higher execution speed and smaller program size. It is very hand if you want to develop in other languages other than English
  • Visual Studio – Probably the best IDE available and very popular with MSDN community. Powerful, Versatile and Extensible tool enabling building apps for any platform
  • Brackets – This is a very modern open source text editor that understands web design. A lightweight, yet powerful tool if you need an easy way to get a quick, clean, minimal CSS HTML document flow going.

Typography for the web

  • Adobe Typekit – Visually design and package beautiful fonts you want, anywhere, anytime
  • Google Fonts – Probably doesn’t require much introduction. Just Google it J
  • Font squirrel – If you need 100% free fonts for commercial use then you’ve got it. Visually design and package your fonts
  • Modular Scale – So have you ever wondered why they use Pixels, Ems and not Inches? And do you know what is Ems@16 ?This utility will help you convert between these units, and scale up or down your font sizes while keeping meaningful ratio between them
  • Adobe Color CC – Talk of colour schemes or themes, this tool from Adobe allows you to visually play with various to achieve the best contrast for your brands
  • CSS with vertical rhythm – If you have designed for the web then probably this is one of your favourite tools. If you have not used it, try it you won’t regret it.

CSS and styling

  • Bootstrap – Probably the most popular HTML, CSS and Javascript framework for developing responsive, mobile first brands. Its open source and available on GitHub.
  • CSS Reset – Get yourself scripts to quickly reset your styling of all HTML elements to a consistent baseline. You never need to scratch your head again asking Which CSS Reset should I use?
  • Browser reset – Another free browser reset script to get you started if you want to reduce browser inconsistencies in things like default line heights, margins and font sizes of headings, and so on

Entity Framework

  • MvcScaffolding NuGet package – This is a fast and customizable way to add controllers, views, and other items to your ASP.NET MVC application. You will love this at first sight.
  • EF Power Tools Visual Studio extension – There we go again. I love code first and not database first. Well, if you got an existing database or go for database first, this extension will reverse engineer an existing database and get you all those POCOs
  • EF Profilerby hibernating rhinos – Unfortunately you will need to pay for this tool but you won’t regret it. Using Entity Framework means much of the database work happen under the covers. Now you got a tool to profile all that.

Regex

Learn, build, & test Regular Expressions – This is a very handy tool to quickly build and text RegEx before you include them in your source code. You can also choose for an existing list of commonly used RegEx such as the one for validating an email address. It comes with excellent text editor with highlight syntax for all the RegEx matches.

Source code re-factoring and experience

  • ReSharper – This probably does not require much introduction. A popular productivity tool for Visual Studio, improving navigation within your project code files, code inspection and refactorings.

Source code repository

  • GitHub – Everyone is using it. If you can’t beat them you can as well join them.
  • Visual Studio Online – Not to be confused with Visual Studio IDE, this cloud based solution allows you to host your source code on the cloud for free for 5 basic user licences

Rich media

  • Windows snipping tool – Allows you to quickly capture screen shots on your desktop
  • Pixlr – Free and yet powerful online tool to quickly edit your rich media without installing anything
  • Paint net – A free image and photo editing software for your desktop

Console and Scripting Tools

  • Cmder. A nice looking and portable console emulator for Windows. It looks very sexy from the start
  • Windows PowerShell – We all love the power of scripting in Windows. Quickly create and test PowerShell scripts for automating your tasks

Online resources and Collaboration

  • Programming books repository on GitHub has a comprehensive list of books for almost anything you will ever need to know about programming.
  • Stackoverflow – It does what it says on the tin. We have all gotten or seen a “Stack overflow “error at some point. If you got any questions on anything programming related, Stackoverflow has got the answer for it already. You don’t believe me? Just try them.

So this is me. Which are yours?

Already using Windows Azure Mobile Services for Windows 8 and Windows Phone 8?

Are you already using Azure Mobile Services for Windows 8 and Windows Phone 8? It doesn’t matter what your response is. Geoff Webber-Cross’s “Learning Windows Azure Mobile Services for Windows 8 and Windows Phone 8” book got all answers to all your questions. Whether it is your first time or a seasoned developer already using Azure Mobile Services, you will learn a thing or two from this book.
This book is a short, fast and focused guide to enhance your Windows 8 applications by leveraging the power of Windows Azure Mobile Services

What I like most about this book is the approach the writer has taken from the very chapter of the book. We have a real-life problem to solve by leveraging Azure Mobile Services. Here is short extract on the problem.

The TileTapper game consists of a grid board seeded from a simple Boolean array of
active or inactive tiles. When the app launches, it prompts the user to log in using the
Windows Live connect authentication provider, downloads levels and current high
score from our back end service, and then begins the game.

So as you progress through the chapters, the writer solves the problem by show casing each aspect of Azure Mobile Service is applied. It also comes with access to the source code for each chapter – so essentially you can dry run through the code as you read the contents of the book.

I am not a first time user of Azure mobile services, but I have learned a few tips and tricks on how to design apps leveraging the power of Windows Azure Mobile Services.

I recommend this book to any developer leveraging the power of Windows Azure Mobile Services

Try SQL Server 2014

Have you tried the latest SQL Server 2014? I have. I have put together the installation wizard screen shots that I captured while installing my copy.

Get started

Download your copy from this link provided by the SQL Server Team via Twitter

Screen shots of the installation process

ImageImageImageImageImageImageImageImageImageImageImage

 

Hope this helps!

I will blog about the new features and share my thought in the next article. Until then, good luck with your installations.

Installing and Evaluating Windows Server 2012

You can get a 180-day evaluation copy of Windows Server 2012 (link: http://tinyurl.com/clll28q- ). You will receive 4 emails from Microsoft during the 180-day evaluation period to enhance your evaluation experience

After downloading the trial copy, I set up a Hyper-V machine and installed the Windows Server 2012 as follows:

Start Install
Start Install

Select OS
Select OS

Accept licence
Accept licence

Upgrade/Custom install
Upgrade/Custom install

Installing Windows
Installing Windows

Settings
Settings

If everything goes on well, you will see this lovely log on screen.

Ready to sign in
Ready to sign in

Enter admin log on details
Enter admin log on details

Server Manager
Server Manager

We are up and running
We are up and running

I have started playing with the server. I will post further updates on my evaluation.