¿Cómo se aíslan las dependencias para una implementación de la aplicación .Net de una manera que sea segura para ensamblajes con nombres importantes?

7

Diseñar de tal manera que sea fácil implementar dependencias con su aplicación, y para que los entornos de desarrollo sean fáciles de configurar, es una ventaja aislar las dependencias de una aplicación de su entorno. Eso significa que la aplicación puede obtener sus dependencias de un administrador de paquetes, y no se verá afectada por su entorno de implementación (como el GAC). Este principio proviene de la Sección de dependencias de los muy interesantes estándares de la "Aplicación de los doce factores".

En .Net, supongo que esto significaría especificar explícitamente el uso de dependencias de la carpeta bin de una aplicación. Me preocupa que esto pueda causar problemas para ensamblajes compartidos y con nombres importantes. En este artículo de Microsoft , Ferrandez dice que pueden producirse conflictos de bloqueo si las aplicaciones no comparten ensamblajes de nombre seguro a través de la GAC, ya que el ensamblaje se carga en un dominio compartido.

La aplicación de 12 factores describe las piezas necesarias para satisfacer este principio como un manifiesto de declaración de dependencia y una herramienta de aislamiento de dependencia .

¿Alguien tiene una configuración establecida para aislar dependencias que esté funcionando para usted y es seguro para ensamblajes con nombres importantes? ¿Estamos en el mundo .Net atascado con la separación de todas nuestras aplicaciones en máquinas virtuales para lograr el aislamiento?

  

Contexto personal: mantengo una aplicación SAAS donde cada instancia de servidor ejecuta algunos servicios / aplicaciones que se involucran en alguna comunicación entre procesos. Tienen algunas dependencias fuertemente nombradas en común. Tener las dependencias en el GAC hace que la implementación sea compleja, la configuración de los entornos de desarrollo es un problema y restringe la libertad de elegir entornos de implementación. Incluso sin la fuerte denominación o el problema de la dependencia compartida, me interesa saber cómo las personas hacen la declaración de dependencia y / o el aislamiento. Gracias!

    
pregunta Jordan Morris 08.05.2014 - 00:07

1 respuesta

1

El uso de Nuget para las dependencias de la biblioteca es un gran paso hacia la declaración y el aislamiento de la dependencia.

El packages.config asociado a cada proyecto se puede leer como una declaración de dependencia.

Si esas referencias de paquetes están marcadas como "privadas", se agrupan en la carpeta bin de los resultados de su compilación y, presumiblemente, se empaquetan para su implementación. Esto evita el requisito de que todos los ensamblados de referencia tengan GAC en el cuadro de implementación.

    
respondido por el smeltplate 31.10.2014 - 17:40

Lea otras preguntas en las etiquetas