Domanda

Sono stato a guardare il codice sorgente del IronPython progetto e la Orchard CMS progetto. IronPython opera con un namespace chiamato Microsoft.Scripting.Hosting.Shell (parte del DLR ). Il progetto Orchard opera anche con il concetto di 'shell' indirettamente in varie interfacce (IShellContainerFactory, IShellSettings).

Nessuno dei progetti di cui sopra hanno la documentazione elaborata, in modo da far salire il significato di un tipo (classe etc.) dal suo nome è abbastanza utile se si sta cercando di capire l'applicazione complessiva struttura / architettura leggendo il codice sorgente .

Ora mi chiedo: che cosa di questo codice sorgente gli autori hanno in mente quando si riferiscono ad un 'guscio'? Quando sento la parola 'shell', penso a qualcosa di simile a una riga di comando interprete. Questo ha senso per IronPython, dal momento che ha un interprete interattivo. Ma per me, non ha molto senso rispetto ad un Web CMS.

Che cosa devo pensare, quando incontro una cosa chiamata 'shell'? Qual è, in termini generali, il ruolo e la responsabilità di un 'guscio'? Può questa domanda, anche una risposta? È il significato di 'shell' soggettivo (rendendo il termine inutile)?

Grazie.

È stato utile?

Soluzione

Credo che un significato generale per le coperture sarebbe 'processo utente che interpreta ed esegue i comandi.

  1. ' processo utente ': a differenza di un processo integrato nel kernel del sistema operativo. JCL nel mondo mainframe IBM sarebbe fatica a contare come una conchiglia.

  2. ' interpreta ed esegue ': in qualche forma, una shell legge i comandi da un file o un terminale, e reagisce a quanto presentato, anziché essere rigidamente programmato in tal una certa sequenza di comandi.

  3. ' Comandi : quali siano i comandi dipende dal contesto. Nei gusci standard Unix, i comandi eseguiti sono principalmente altri programmi, con il guscio collegandoli appropriatamente. Ovviamente, ci sono comandi incorporati, e anche di solito c'è sintassi di controllo di flusso per consentire risposte adeguate ai risultati di esecuzione di comandi.

In altri contesti, è ragionevole pensare ad altri tipi di comandi in corso di esecuzione. Ad esempio, si potrebbe immaginare un 'SQL Shell', che ha permesso all'utente di eseguire le istruzioni SQL durante la connessione a un database.

shell

Python sosterrà notazioni pythonic e sarebbe eseguire istruzioni Python simili, con una sintassi strettamente correlato alla sintassi di Python. Un Perl Shell avrebbe sostenuto notazioni Perl-like e sarebbe eseguire istruzioni Perl-like, ... E così l'elenco potrebbe continuare. (Per esempio, Tcl ha tclsh -. Shell Tcl)

Altri suggerimenti

Orchard il termine "shell" è molto più di una metafora per un ambito. Ci sono tre ambiti annidati:. Ospite, shell, e il lavoro

Il padrone di casa è un unico contenitore che vive per tutta la durata del dominio web app.

Il guscio è un contenitore figlio creato dall'host che è costruito in base alla configurazione corrente. Se la configurazione viene modificata una nuova shell è edificata e quello esistente è lasciato andare.

L'opera è un altro contenitore, creato dalla shell, che contiene i componenti che vivono per la durata di una singola richiesta.

Una cosa piacevole circa l'uso di un contenitore di shell è che aiuta evita l'uso di variabili statiche e la necessità di ciclo il dominio applicazione su quando le modifiche di configurazione. Un'altra cosa bella è che permette un dominio Orchard app per servire più di un "sito" allo stesso tempo, quando l'host detiene una serie di conchiglie e usa quella appropriata per ogni richiesta.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top