Descomponer una aplicación web asp.net

Buscando reunir algunas opiniones sobre cómo se debe dividir una aplicación web (o posiblemente un set de aplicaciones web) (en lo que respecta al proyecto) … básicamente todo será un sitio grande, pero el problema surge porque tiene una variedad de modules que tienen sus propios ciclos de desarrollo / liberación.

El problema que surge es que dividirlos se convierte en un dolor de cabeza al tratar de hacer que las sesiones compartan entre sitios e insert resources compartidos en DLL, pero mantenerlos como un gran proyecto es una pesadilla desde una perspectiva de control de fuente.

Las posibles maneras de hacer esto que puedo pensar son:

  1. Tener una aplicación y una twig como loco para el trabajo en cada module: sobre una base de estilo fundamental esto parece correcto, pero sería una gran cantidad de sucursales y la fusión de las twigs en todo el time sería una pesadilla …
  2. Haga que sean todas aplicaciones separadas: el inconveniente es que todas comparten sus páginas maestras y muchos controles personalizados (implementados en ascx). Sé cómo ponerlos en una DLL (usando proveedores de routes virtuales), pero es una solución bastante desorderada. Además de esto, está pasando la session de ida y vuelta entre las aplicaciones, básicamente construyendo una solución de session homebrew …

Otra cosa que traté de averiguar si podía hacer pero fallé fue de alguna manera tener una "carpeta virtual" de classs en el csproj, de modo que, por ejemplo, la carpeta "ModuleA" realmente se mapeó a "../../../ModuleA /El maletero/". Estoy relativamente convencido de que esto no se puede hacer sin utilizar algunos types de scripts de precompilation, pero esperaba algo que realmente se cargara correctamente en Visual Studio, así que creo que esta idea es un no-go …

¿Alguien tiene algún consejo en cuanto a qué path debo seguir con esto (si es uno de los anteriores o algo que no he considerado)? Quiero asegurarme de no dispararme en el pie aquí porque es probable que sea un proyecto a largo ploop con muchas mejoras / mantenimiento futuros …

Lo hice en uno de nuestros proyectos. Definitivamente hay ciertos problemas que enfrentamos durante el desarrollo, pero definitivamente vale la pena separar el proyecto en DLL por separado para la mantenibilidad

Como también sugirió para el proveedor de ruta virtual, tengo cierto enlace para el mismo que puede ser útil. Además, para pasar datos entre dos modules, hemos creado properties en la interfaz y hemos creado un proyecto separado para la interfaz y todos los modules implementan esa interfaz, por lo que podemos pasar valores de un module a otro module.

Además, siempre es recomendable si está construyendo una aplicación modular, entonces debería ser independiente el uno del otro, pero finalmente depende de sus requisitos.

Link1

UC de la database

Ciertos enlaces para compartir sesiones entre la aplicación (no sugeriría compartir la session, pero si lo desea, puede revisar estos artículos)

Foro ASP .Net

Usando el Servidor de estado

Desbordamiento de stack

Si está construyendo un proyecto, no estoy seguro de si es una buena idea usar asp.net 2.0, debido a los problemas que tiene. En algún momento de mi proyecto moví estos controles ascx para separar el 'proyecto de biblioteca de controles' que solo me da cadenas html que coloco en algún lugar del website. Me gusta usar la syntax <% = fControl%> dentro de las páginas aspx que llene con ese código. No es una solución elegante, pero hace las cosas mucho más fáciles. De todos modos, decidimos reimplementar el proyecto en php, ya que es más barato y no genera problemas.