Frage

Ich habe auf den Quellcode der Suche Ironpython-Projekt und die Orchard CMS Projekt. Ironpython arbeitet mit einem Namespace Microsoft.Scripting.Hosting.Shell (Teil des DLR ) genannt. The Orchard Projekt arbeitet auch mit dem Konzept einer ‚Schale‘ indirekt in verschiedenen Schnittstellen (IShellContainerFactory, IShellSettings).

Keine der oben genannten Projekte aufwendige Dokumentation haben, so Kommissionierung die Bedeutung eines Typs (Klasse etc.) nach oben aus seinem Namen ziemlich wertvoll ist, wenn Sie den Quellcode, um herauszufinden, die Gesamtauftragsstruktur / Architektur versuchen, durch das Lesen .

Jetzt frage ich mich: was die Autoren dieses Quellcodes im Sinn haben, wenn sie auf eine ‚Schale‘ beziehen? Wenn ich das Wort ‚Shell‘ hören, denke ich an so etwas wie ein Kommandozeilen-Interpreter. Dies macht Sinn, für Ironpython, da es einen interaktiven Interpreter hat. Aber für mich macht es nicht viel Sinn in Bezug auf eine Web CMS.

Was soll ich denken, wenn ich einen so genannten ‚Shell‘ begegnen? Was ist, allgemein gesagt, die Rolle und die Verantwortung einer ‚Schale‘? Kann diese Frage selbst beantwortet werden? Ist die Bedeutung des Begriffs ‚Schale‘ subjektiven (was der Begriff unbrauchbar)?

Danke.

War es hilfreich?

Lösung

Ich denke, dass eine allgemeine Bedeutung für die Schale wäre ‚Benutzerprozess zur Interpretation und Ausführung Befehle‘.

  1. ' Benutzer Prozess ': im Unterschied zu einem Prozess in den Betriebssystemkern gebaut. JCL in der IBM Mainframe-Welt wäre hart gedrückt, als Shell zu zählen.

  2. interpretiert und führt ‘: in irgendeiner Form, eine Shell liest Befehle aus einer Datei oder einem Terminal, und reagiert auf das, was präsentiert wird, anstatt starr programmiert ist, zu tun eine bestimmte Folge von Befehlen.

  3. ' Befehle : Was die Befehle sind, hängt vom Kontext ab. In dem Standard-Unix-Shells, die ausgeführten Befehle sind in erster Linie andere Programme, mit der Schale sie zusammen in geeigneter Weise zu verbinden. Offensichtlich gibt es integrierte Befehle, und auch dort wird in der Regel Stromregelsyntax für entsprechende Reaktionen auf die Ergebnisse der Ausführung von Befehlen.

  4. zu ermöglichen

In anderen Kontexten ist es sinnvoll von anderen Arten von Befehlen zu denken, ausgeführt wird. Zum Beispiel könnte man eine ‚SQL Shell‘ vorstellen, die es dem Benutzer erlaubt, um SQL-Anweisungen ausführen, während mit einer Datenbank verbunden.

Ein Python-Shell würde Pythonic Notationen unterstützen und würde ausführen Python-ähnliche Aussagen, mit einer Syntax eng mit der Syntax von Python. Ein Perl-Shell würde Perl-ähnliche Schreibweisen unterstützen und würde ausführen Perl-ähnliche Aussagen, ... Und so ist die Liste geht weiter. (Zum Beispiel: Tcl hat tclsh -. Die Tcl Shell)

Andere Tipps

In Orchard der Begriff „Schale“ ist wirklich eher eine Metapher für einen Rahmen. Es gibt drei verschachtelte Bereiche:. Host-Shell und die Arbeit

Der Wirt ist ein einziger Container, dass Leben für die Dauer der Web-App-Domäne.

Die Schale ist ein Kind Behälter durch den Host erzeugt, die entsprechend der aktuellen Konfiguration aufgebaut ist. Wenn die Konfiguration eine neue Shell geändert wird aufgebaut und die bestehenden ist loslassen.

Die Arbeit ist ein weiterer ein Container, von der Shell erstellt, dass die Komponenten, die für die Dauer einer einzigen Anfrage leben hält.

Eine nette Sache über die Verwendung eines Shell-Behälters, den er, dass es hilft, vermeidet die Verwendung von statischen Variablen und die Notwendigkeit des Zyklus der Anwendungsdomäne auf, wenn Änderungen an der Konfiguration. Eine andere nette Sache ist, dass es eine Orchard App Bereich ermöglicht es mehr als einen „Ort“ zur gleichen Zeit zu dienen, wenn der Host eine Reihe von Schalen hält und verwendet die passende für jede Anforderung.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top