I want to share my experience of implementing MVC Areas as an individually pluggable (into the host website) DLL, that contains the code of specific area: controllers, models / view models, some area-specific DLL. The proof of concept was created by my great colleague Chandra Prakash, I decided to pick it after him and implemented in our product, so now it is 8 month as it works in production without any issues at all.
We are working in a big enterprise Sitecore-hosted project with more
than hundred of developers, so each deployment process may bring a pain.
Pluggable areas implementation has proven its concept and helped us to
keep updating only those parts of entire multisite Sitecore solution
that have been updated, without any risk of affecting the rest!
- no need to code anything in a host website, thus:
- no need to rebuild whole big outer solution - just rebuild (and replace) DLL
- no more need to struggle with complex dependencies
- simplified update: drop DLL into host website bin folder, and copy some static files referenced by this DLL - js, css, cshtml, img.
In day-to-day usage you will have the only one minor overhead of that implementation: 2 extra fields in controller rendering. In fact, instead of standard Controller Rendering we are using Area Controller Rendering that is derived from Controller Rendering just with addition of 2 extra fields required to resolve the area on a fly:
Sound attractive, isn't it? Then look how it is implemented - I address to the original article with more detailed explanations.