En los oscuros días de .NET 1.1 creé (supongo que como todos) una especie de sistema MVC para una aplicación que fue así.
Una página fue hecha para ser una especie de maestro 'falso'. Esto tenía algunas tuberías para mostrar menús, scripts, estilos, etc.
Las 'vistas' eran controles de usuarios individuales.
Había una tabla con información sobre cada vista. Por ejemplo, 'Producto' se cargaría ~/Controls/Product.ascx
en un marcador de posición. La tabla también tenía un campo que contenía el nombre de tipo de la clase de modelo (como si). Cada modelo implementó una interfaz bien conocida. Esta clase fue instanciada usando Activator.CreateInstance()
y llamada para inicializar, y luego pasó al control en sí (¿inversión de control?). El control luego llamó a varios métodos para obtener conjuntos de datos o cualquier otra cosa. La interfaz en sí se normalizó para tener los métodos CRUD habituales (lectura / escritura / lista / eliminación). También había una capa DAL / ORM debajo de esto.
No fue bonito, pero funcionó bien. Fue fácil probarlo y desarrollarlo, y la mayoría de los desarrolladores que se incorporaron se darían cuenta rápidamente. Sobre todo, fue relativamente simple de crear.