Pregunta

Sigo recibiendo frecuentes sobre dominios de aplicación en las entrevistas, y Sé lo básico:

  • son de un nivel de aislamiento dentro de una aplicación (haciéndolos diferentes de aplicaciones)
  • ellos pueden tener hilos (haciéndolos diferentes de hilos)
  • excepciones en un dominio de aplicación no afectan a otra
  • dominios de aplicación no puede acceder a los demás de la memoria
  • cada dominio de aplicación puede tener la seguridad de diferentes

Yo todavía no consigue lo que hace necesario.Estoy buscando un razonable concreta circunstancia de cuando usar uno.

Respuestas:

  • Código sospechoso
    • Núcleo de la aplicación protegida
      Que no son de confianza/3ª parte de los complementos están excluidos de corromper la memoria compartida y acceso no autorizado a la información de registro o disco duro a través del aislamiento en separar el dominio de aplicación con las restricciones de seguridad, la protección de la aplicación o el servidor.por ejemplo,ASP.NET y SQL Server que aloja el código del componente de
  • Código de confianza
    • La estabilidad
      Aplicación segmentado en seguro, independiente de características y funcionalidad
    • Flexibilidad arquitectónica
      La libertad de ejecutar múltiples aplicaciones en una sola CLR instancia o de cada programa en su propio.

Cualquier otra cosa?

¿Fue útil?

Solución

Probablemente la más común es la carga de ensamblados que contienen plug-in de código de partes que no son de confianza.El código se ejecuta en su propio dominio de aplicación, el aislamiento de la aplicación.

Además, no es posible descargar un particular de la asamblea, pero se puede descargar de dominios de aplicación.

Para el análisis completo, Chris Brumme tuvo una masiva entrada de un blog sobre esto:

http://blogs.msdn.com/cbrumme/archive/2003/06/01/51466.aspx

https://devblogs.microsoft.com/cbrumme/appdomains-application-domains/

Otros consejos

Otro de los beneficios de dominios de aplicación (como usted menciona en su pregunta) es el código que se carga en ella se puede ejecutar con permisos de seguridad diferentes.Por ejemplo, escribí una aplicación que se carga dinámicamente archivos Dll.Era un instructor y estos fueron estudiante Dll que me estaba cargando.No quería que algunos descontentos estudiante a borrar de mi disco duro o está dañado mi registro, por lo que me ha cargado el código de sus Dll en un dominio de aplicación que no tiene e / s de archivo de permisos o permisos de edición del registro o incluso permisos para mostrar los nuevos windows (en realidad sólo tenía permisos de ejecución).

Creo que la principal motivación para tener dominios de aplicación es que el CLR diseñadores querían una forma de aislar el código administrado, sin incurrir en la sobrecarga de rendimiento de varios procesos de Windows.Tenía el CLR sido implementado originalmente en la parte superior de UNIX (donde la creación de múltiples procesos es significativamente menos costosa), dominios de aplicación puede que nunca se han inventado.

También, mientras que el administrado plug-in de arquitecturas en la 3 ª parte aplicaciones es sin duda un buen uso de dominios de aplicación, la razón más grande que existe es para bien hosts conocidos como SQL Server 2005 y ASP.NET.Por ejemplo, un ASP.NET el proveedor de hosting puede ofrecer un hosting compartido solución que admite varios sitios de clientes, todos en el mismo cuadro se ejecuta bajo un único proceso de Windows.

Aplicación de los Dominios son grandes para la estabilidad de la aplicación.

Por tener su aplicación consiste en una central de proceso, que luego genera fuera "características" en distintos dominios de aplicación, usted puede prevenir un global de accidente debe a uno de ellos se portan mal.

Si crea una aplicación que permite la 3ra parte de los complementos, puede cargar los plugins por separado en un dominio de aplicación, de modo que su principal aplicación es en la caja fuerte de código desconocido.

ASP.NET también se utiliza separar dominios de aplicación para cada aplicación web dentro de un solo proceso de trabajo.

Como yo lo entiendo dominio de aplicación están diseñados para permitir el alojamiento de la entidad (sistema operativo, base de datos, Servidor, etc...) la libertad de ejecutar múltiples aplicaciones en un solo CLR instancia o de cada programa en su propio.Así que es un problema para el host en lugar de lo que el desarrollador de la aplicación.

Esto se compara favorablemente con los de Java, donde usted siempre tiene 1 JVM por la aplicación, a menudo resulta en muchos casos de la JVM ejecuta lado a lado con los duplicados de los recursos.

Veo 2 o 3 casos de uso principal para la creación de dominios de aplicación independientes:

1) Similar a un proceso de aislamiento con bajo consumo de recursos y la sobrecarga.Por ejemplo, esto es lo que ASP.NET hace - hosts de cada sitio web en un dominio de aplicación independiente.Si se utilizan diferentes hilos en el único dominio de la aplicación, a continuación, el código de los diferentes sitios web podrían interferir el uno con el otro.Si fue la sede de los diferentes sitios web en los diferentes procesos que se utilizan mucho los recursos y también la comunicación entre procesos es relativamente difícil comparar a revisiones de comunicación.

2) La ejecución de código sospechoso en un dominio de aplicación independiente con particular permisos de seguridad (esto en realidad es relativa a la 1 de la razón).Como la gente ya se dijo, usted puede cargar plugins 3 ª parte o de confianza dll en distintos dominios de aplicación.

3) La capacidad de descarga de las asambleas para reducir el innecesario uso de la memoria.Desafortunadamente, no hay manera de descargar una asamblea de un dominio de aplicación.Así que si usted carga de algunos de los grandes de la asamblea para su dominio de la aplicación principal, la única manera de liberar la memoria correspondiente después de que la asamblea no es necesario ya que es para cerrar la aplicación.La carga de ensamblados en un dominio de aplicación independiente y descarga de ese dominio de aplicación cuando dichas asambleas no son necesarios ya que es una solución a este problema.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top