Hello! Welcome to Ignition 101. In this series of posts, I’ll be going through some key concepts that Ignition brings to the table as well as some of the architecture decisions that were made as part of this framework.
Ignition was designed to make life easier for both developer and content author. “Flexibility” is the word that was regularly tossed around in our internal discussions regarding features and architecture. Our goal was to make sure the Ignition framework followed development best practices without compromising the experience of the content author.
There are two main parts to the framework: Ignition item templates and the Ignition Core. The Ignition item templates provide inheritable item templates for your custom items and their corresponding Glass interfaces which are located in the Ignition.Data project. The Ignition Core allows you to quickly create renderings with minimal code (think one-line controller renderings!) while still maintaining best practices based on SOLID principles with inversion of control/dependency injection (SimpleInjector), separation of concerns (MVC), and an extensible architecture.
As a basic solution overview, the dependencies flow from bottom up. In the boilerplate solution, you’ll see these dependency graph as follows:
can see all projects above it; Ignition.Sc, Ignition.Infrastructure, Ignition.Data, Ignition.Core.
can see all the projects above it; Ignition.Infrastructure, Ignition.Data, Ignition.Core.
can see all the projects above it; Ignition.Data, Ignition.Core.
Can see Ignition.Core
Can see nothing else.
Note: The solution folders separate the projects into typical layers, although nothing formal.
So, what are all of these projects for?
Ignition.Core – This is where the magic happens. You should leave this as-is unless you have a compelling reason.
Ignition.Data – Shared models including those for the Ignition templates. Add to here as you need.
Ignition.Infrastructure – The home of Pipelines, Events, Actions, Jobs, etc.
Ignition.Sc – This is the presentation layer for the included demo site. Every site you create should have its own project here.
Ignition.Root – Composition root for Sitecore, IoC, Glass, etc.