From my experience of working with various digital agencies and numerous Umbraco websites, there has never been a defined guide on solution design when working with Umbraco, which has been the case when working with a lot of CMS’s.
Agencies & individuals sometimes have their preferred way of working when it comes down to the Visual Studio Solution Design, but often I’ve seen no thought put into it at all.
This has very much been the case in the world of Sitecore, until a couple of years ago Helix was released. Helix is a set of overall design principles and conventions for Sitecore development.
Sitecore’s Helix Principes are not rocket science and essentially nothing new. These have evolved from Robert Martins “Principles of Package Design” outlined in “Agile Software Development Principles, Patterns and Practices”.
Principles of Package Design
I strongly recommend reading up about these principles. Matthias Noback has written up a fantastic book on these that cover better class design using SOLID along with package design. You can get the book here.
Umbraco & Modular Architecture
When I refer to Packages, I do not mean Umbraco Packages, but just Packages of code. In context to Visual Studio, this is a Libary.
Many digital agencies and software houses develop with both Sitecore and Umbraco. So to me, it makes complete sense to follow the same design principles, thus keeping consistency through all projects.
The Helix principles have been proven a success, and now widely used across most new Sitecore implementations.
It’s not for all projects
The solution is quite complex, I am not recommending its a way to fix everyone’s problems. This should be definitely considered when building a large to enterprise project when using Umbraco. Using it on a small website, such as blog will be overkill.
In a nutshell, the Helix Solution design separates out the Visual Studio Studio solution into areas of business responsibility and has clear and easily maintainable dependencies.
For just under a year now, I’ve been looking into implementing a flavor of Helix solution design into Umbraco projects. I made mistakes on the way and now have a close to a perfect setup. I hope these guides will be of use.
I will cover how to set up a solution for Umbraco that follows a modular architecture using package design over a number of the next few blogs.
- The Solution Design & Layers (In Progress)
- Creating a Module / Package (In Progress)
- Decouple Umbraco from you Solution (In Progress)
- Development Automation (In Progress)