5

What is the primary difference between the MultipleSitesManager (https://github.com/JimmieOverby/MultipleSitesManager) vs. the DynamicSites (https://github.com/Vapok/Sitecore.SharedSource.DynamicSites) modules?

Looking for reasons why one may be better than the other for a project with dozens of sites. Thanks.

  • I might be biased, but I updated Dynamic Sites for Sitecore 8.2. I should probably abstain from putting in an answer, it might come off as biased and opinionated, and I'd rather that not be the case. I also think this question might get closed for being too opinionated, but we'll see. – Pete Navarra Oct 28 '16 at 19:25
  • Thanks Pete.. Is the 8.2 update on GitHub? I didn't see a recent commit. Also updated the question to be more of a question :) – Amir Setoudeh Oct 28 '16 at 19:43
  • Yup, you'll want to look at release 1.9.1 - github.com/Vapok/Sitecore.SharedSource.DynamicSites/releases/… – Pete Navarra Oct 28 '16 at 19:51
  • Got it.. Thanks. And feel free to answer the question objectively. As to the reasons why you felt the need to create another version and how it is improved over the pre-existing modules, or what it solved that you felt was lacking. – Amir Setoudeh Oct 28 '16 at 19:52
6

I've put a lot of thought into how I might go about formulating an answer to this question. If anyone knows me personally, they'll know I'm pretty passionate about things that I care about, and Dynamic Sites Manager was pretty much the love child between immense frustration about how other Site Managers were going about doing it and the fact that I had a week off of time between Christmas (2014) and New Years (2015). So it's with that disclaimer that I tried to provide as much objectivity in this answer as possible.


Birth of Dynamic Sites - Doing Multi-Site the Sitecore Way!

I wanted to figure out how Sitecore intended to do multi-site. The goal being, I didn't want to override a SINGLE Sitecore class.

So the requirements ended up being:

  • No Class Overrides
  • Must be able to add sites in the Sitecore editor.
  • Must be able to add sites without a worker process recycle
  • Prevent caging people into using a specific templates (as much as possible).
  • Must be fast
  • Must not adjust, muck, or any way alter httpRequestBegin pipeline.
  • It must solve the problem.

And that's exactly what I did. Dynamic Sites adds additional Site Providers to the mix. Executes and respects the ConfigSiteProvider out of the box, and implements it's own DynamicSiteProvider class along side of it. The custom provider only cares about it's sites and nothing else. I also added a switcher provider that allowed me to combine all of the providers in order to feed the SiteCollection. I also included some custom Sitecore caching to cache the Sites so that retrieving site information was as fast as possible.

The end result being that Context.Site is updated, naturally, without being forced, Sitecore is aware of all sites (no sites masked), and all sites even had their own Sitecore site caching for things like xsl, html, and data caching.

I decided to launch it as a Marketplace Module, provide the Shared Source license for use, and post it on Github.

Was/Is it perfect?

Oh god no. It was a rush job, at least the early iterations of it. As time past, I made small tweaks here and there as bug reports from users using it out in the wild started providing me with information. I tried to respond to all of them posting small updates as fixes were implemented.

Current State of Dynamic Sites

When Sitecore 8.2 was released, I immediately spent the night updating Dynamic Sites to support 8.2 and went through all of my test cases to ensure it was still functional. More information about this can be found on my blog, Sitecore Hacker.

Future State of Dynamic Sites

As much as it needs to be, I will continue to provide updates for the module. I am also working on Version 2.0 which is being completely rewritten to support Helix guidelines. In addition, I am planning on seeing how Dynamic Sites Manager needs to be adjusted for the Solution Experience Accelerator and taking into account Habitat's multi-site solution. As needed, I will make adjustments.


How does it differ from Niket's Multiple Site Manager

Niket took an entirely different approach, but ultimately he tied into the system by overriding the ConfigSiteProvider with his own class as well as injecting logic into the httpRequestBegin pipeline. He does manage to register the site with SiteContextFactory but does it in a way that requires him to lock down the factory from other threads while he builds the Site context for each site. He does this during the httpBeginRequest pipeline which means during the first request visit after a restart, Sitecore has to sit there and rebuild the site collection.

He also goes through and hard codes some of the default Sitecore sites in order to appropriately order them since scheduler, system, and publisher are all special sites that have to come AFTER custom site definitions.

And last, but not least, he updates new sites by touching the web.config which performs a worker process recycle to restart the Sitecore services. By doing that, the first request of httpBeginRequest is able to process and create his site definition again.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.