Pregunta

He estado mirando el código fuente del HierroPython proyecto y el CMS de huerto proyecto.IronPython opera con un espacio de nombres llamado Microsoft.Scripting.Hosting.Shell (parte del DLR).El Proyecto Orchard también opera indirectamente con el concepto de 'shell' en varias interfaces (IShellContainerFactory, IShellSettings).

Ninguno de los proyectos mencionados anteriormente tiene documentación elaborada, por lo que captar el significado de un tipo (clase, etc.) a partir de su nombre es bastante valioso si está tratando de descubrir la estructura/arquitectura general de la aplicación leyendo el código fuente.

Ahora me pregunto:¿Qué tienen en mente los autores de este código fuente cuando se refieren a un 'shell'?Cuando escucho la palabra "shell", pienso en algo así como un intérprete de línea de comando.Esto tiene sentido para IronPython, ya que tiene un intérprete interactivo.Pero para mí no tiene mucho sentido con respecto a un CMS web.

¿En qué debería pensar cuando me encuentro con algo llamado "caparazón"?¿Cuál es, en términos generales, el papel y la responsabilidad de un 'caparazón'?¿Se puede siquiera responder a esa pregunta?¿Es subjetivo el significado de "caparazón" (lo que hace que el término sea inútil)?

Gracias.

¿Fue útil?

Solución

Creo que un significado general para shell sería "proceso de usuario que interpreta y ejecuta comandos".

  1. 'Proceso de usuario':a diferencia de un proceso integrado en el núcleo del sistema operativo.JCL en el mundo de los mainframes de IBM sería difícil de contar como un shell.

  2. 'interpreta y ejecuta':De alguna forma, un shell lee comandos de un archivo o terminal y reacciona a lo que se presenta, en lugar de estar rígidamente programado para ejecutar una determinada secuencia de comandos.

  3. 'comandos:cuáles son los comandos depende del contexto.En los shells estándar de Unix, los comandos ejecutados son principalmente otros programas, y el shell los vincula adecuadamente.Obviamente, hay comandos integrados y, por lo general, también hay una sintaxis de control de flujo para permitir reacciones apropiadas a los resultados de la ejecución de comandos.

En otros contextos, es razonable pensar en la ejecución de otros tipos de comandos.Por ejemplo, se podría imaginar un 'SQL Shell' que permitiera al usuario ejecutar sentencias SQL mientras está conectado a una base de datos.

Un shell de Python admitiría notaciones pitónicas y ejecutaría declaraciones similares a Python, con una sintaxis estrechamente relacionada con la sintaxis de Python.Un Perl Shell admitiría notaciones similares a Perl y ejecutaría declaraciones similares a Perl,...Y la lista continúa.(Por ejemplo, Tcl tiene tclsh, el Tcl Shell).

Otros consejos

En Orchard el término "cáscara" es realmente más de una metáfora de un ámbito. Hay tres ámbitos anidados:. Anfitrión, cáscara, y el trabajo

El anfitrión es un único contenedor que las vidas para la duración del dominio Web App.

La cáscara es un contenedor secundario creado por el huésped que se construye de acuerdo con la configuración actual. Si se cambia la configuración de un nuevo shell se edifica y la existente es dejar ir.

El trabajo es otro un recipiente, creado por la cáscara, que contiene los componentes que viven para la duración de una única solicitud.

Una cosa agradable sobre el uso de un recipiente de concha que ayuda a que evita el uso de variables estáticas y la necesidad de ciclo del dominio de aplicación cuando los cambios de configuración. Otra cosa buena es que permite un dominio de aplicación Orchard para servir más de un "sitio" en el mismo momento en que el huésped tiene una serie de conchas y utiliza el apropiado para cada solicitud.

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