My EPiServer instance hosts three sites which all share the same code base. I would like to divide the code up into individual projects in order to better organize the code before a complete redesign of one of them. The documentation (https://world.episerver.com/digital-experience-cloud-service/development-considerations/multisite-development/) seems to imply that this can be done but I can't find a good example to illustrate how.
I'm looking at just pulling the controllers and views into a separate project, I've done this in an empty MVC.NET project, but the EPiServer framework modifies things enough that I can't use the same process.
Does anyone have some documentation or examples I can review to see how it's done within EPi?
It totally depends on developer to developer because we are working on CMS and the main benefit of using the CMS is code reusability.
So you have to identify the structure of the site and then you can categorize the code based on its category.
I am giving some context below -
1. Alloy.Application - Business logics
2. Alloy.DI - Dependency injection
3. Alloy.Domain - Any extensions
4. Alloy.Epi - Any Episerver related things.
5. Alloy.Find - Episerver Find related things
6. Alloy.Web - View, Model, Controller, etc.
So you can use the above structure for your project. I hope it helps.
Ravindra S. Rathore
Multi site development is an interesting topic because there is usually a huge desire to reuse as much as possible, we did a multisite implementation recently where we investigated what would best for the requirements.
Our primary requirement was to not incur any additional charges on DXC so that informed our choice to us the same code base but use conditional switching for styles and template choice.
So we have the same solutioon used across sites, the sites all have the same start page template but we have configuration to identify which site the user is on and switch out layout components, styles etc but we get the enormous benefit of being able to reuse all of the page types and blocks we have for all sites and the flexibility to style it however we want.
There are many ways you can go with multi site development though, another popular one is: ifferent web projects are used for different sites: This has the advantage that you can keep each site clean and domain specific and depending on how you split out the code you can reuse a lot/everything but this can be an issue from a licencing point of view or technically if you use DXC, maintainability can also be a larger issue with more projects depending on the resources you hahe to work on them.