Looking to gather some views on how a web application (Or possibly set of web applications) should be split up (Project-wise)... basically the whole thing is going to be one large site, but the problem arises because it has a variety of modules which each have their own dev/release cycles.
The problem that arises is that splitting them becomes a headache with trying to make the sessions share between sites and embedding shared resources in DLL's but keeping them as one big project is a nightmare from a source-control perspective.
The possible ways to do this that I can think of are:
- Have one application and branch like crazy for the work on each module: On a fundamental style basis this seems right, but it would be a lot of branches and merging branches back in all the time would be a nightmare...
- Make them all separate applications: The drawback is they all share their master pages and a lot of custom controls (implemented in ascx). I know how to put these in a DLL (Using virtual path providers), but it's a fairly messy solution. On top of this is passing the session back-and-forth between the applications essentially building a homebrew session solution...
Another thing I tried to find out whether I could do but failed was to somehow have a "virtual folder" of sorts in the csproj so that for example the "ModuleA" folder actually mapped to "../../../ModuleA/Trunk/". I'm relatively convinced this can't be done without using some kind of pre-build scripts but I was hoping for something that'd actually load appropriately in Visual Studio so I think this idea is a no-go...
Does anyone have any advice as to which way I should go with this (Whether it's one of the above or something I haven't considered)? Want to make sure I don't shoot myself in the foot here cause it's likely to be a long-term project with a lot of future enhancements/maintenance...