Charles, thanks for your advice. That is basically how I'm doing things now, and it's definitely how Kentico's documentation encourages it. In fact, I've taken Brenden's advice from a different thread, and I've started using the Portal Engine as opposed to ASPX for page templates.
However, this breaks down as I implement business-specific features. My pages must consume features of a UI-agnostic application services layer, various domain models, services for proprietary in-house data APIs, and complex responsibilities for maintaining details of the session state and other spontaneous business events. I can wrap these concerns in user controls / web parts, but the UI layer itself is ultimately thin. Without creating my own assemblies, I'm forced to keep all this application code in the UI layer's assembly under
/Old_App_Code, and I have to compile it all at once along with, well, all of Kentico. That's not a viable development process, especially for an application of ours' size and complexity.
I have some followup questions for you:
- Do you forgo developing in your own assemblies?
- How do you represent subdomains and bounded contexts?
- How do you exposes your business models and services for unit testing?
- Would you recommend installing the Kentico instance as a web site project or as a web application project?