usando recursivas puede mvc jerárquicas ensamblado consultas cargar archivo .net msbuild dependency-injection dependency-management refix

.net - puede - consultas recursivas y jerárquicas usando sql server



¿Cuál es la mejor manera de administrar un árbol de dependencias en.NET? (2)

En mi último proyecto utilizamos MSBuild como lenguaje de scripting. (¡sí, de verdad!) También escribimos cientos de tareas personalizadas de MSBuild, para las partes que tenían más sentido en C #. (Incluso escribí una tarea de MSBuild para generar el código repetitivo para una tarea de MSBuild. Sí, se consumió solo).

Si bien no recomiendo a nadie más que siga este mismo enfoque, una de las cosas que encontré muy útil fue la administración de dependencias integrada. Como era de esperar, fue fácil expresar las relaciones de dependencia y dejar que MSBuild se encargue de satisfacerlas. Por ejemplo, casi todos los pasos de nuestro software requerían que un cierto conjunto de archivos se copiara en una ubicación determinada. Podrías escribir fácilmente:

Step1: CopyFiles Step2: CopyFiles, Step1

y cuando ejecuta el Step2 , solo copiará los archivos una vez.

Crear y satisfacer un árbol de dependencias es bastante común en el software . Deseo que el equipo de MSBuild tome su código de administración de dependencias, lo desacople de MSBuild y lo mueva al .NET Framework donde cualquiera pueda usarlo. Al mencionar eso, ¿cuál crees que es la mejor opción para administrar dependencias de esta manera ?


Creo que podrías usar un contenedor de IOC como Spring para obtener este tipo de comportamiento.

Crea una instancia de cualquier tarea que solo se ejecute una vez como singleton y haga que el constructor del objeto de tarea ejecute la tarea. Luego, cualquier objeto que aparezca más tarde con una dependencia en esa tarea obtendrá una referencia a la tarea que ya se ejecutó y podrá obtener los resultados de esa tarea o podrá inferir que esa tarea ya se ejecutó con éxito.

En la configuración de primavera terminarías con muchas tareas encadenadas, cada una hace referencia a otras tareas en su configuración de constructor. Este enfoque es el más flexible y no está restringido a "tareas" o cualquier cosa demasiado pesada para ese asunto.

Supongo que cualquier biblioteca de flujo de trabajo también tiene conceptos similares. Pero no estoy realmente familiarizado con estos.

Creo que para algo más pequeño, las personas simplemente deben pasar su propio gráfico de objeto e interfaz usando el patrón de visitante y tal vez un diccionario para mantener el estado.


Eche un vistazo al proyecto Refix en CodePlex. Representa REference FIX y funciona muy bien.