Question

J'ai regardé le code source du projet IronPython et projet Orchard CMS. IronPython fonctionne avec un espace de noms appelé Microsoft.Scripting.Hosting.Shell (partie du DLR ). Le projet Orchard fonctionne également avec le concept d'un indirectement « coquille » dans diverses interfaces (IShellContainerFactory, IShellSettings).

Aucun des projets mentionnés ci-dessus ont une documentation élaborée, donc ramasser le sens d'un type (classe, etc.) à partir de son nom est assez utile si vous essayez de comprendre la structure / architecture d'application générale en lisant le code source .

Maintenant, je me demande: qu'est-ce que les auteurs de ce code source ont à l'esprit quand ils se réfèrent à une « coquille »? Quand j'entends le mot « coquille vide », je pense à quelque chose comme un interpréteur de ligne de commande. Cela est logique pour IronPython, car il a un interpréteur interactif. Mais pour moi, il ne fait pas beaucoup de sens par rapport à un CMS Web.

Que dois-je penser, quand je rencontre ce qu'on appelle une « coquille vide »? Ce qui est, en termes généraux, le rôle et la responsabilité d'une « coquille vide »? cette question peut même répondre? Est le sens de subjectif (faisant le terme inutile) « shell »?

Merci.

Était-ce utile?

La solution

Je pense qu'un sens général de la coquille serait « processus utilisateur qui interprète et exécute les commandes ».

  1. ' Processus utilisateur : à la différence d'un processus intégré dans le noyau du système d'exploitation. JCL dans le monde du mainframe IBM serait mal à compter comme une coquille.

  2. « interprète et exécute »: sous une forme ou forme, une enveloppe lit les commandes à partir d'un fichier ou d'un terminal, et réagit à ce qui est présenté, plutôt que d'être rigidement programmé pour faire une certaine séquence de commandes.

  3. commandes

    ' : ce que les commandes sont dépend du contexte. Dans les shells Unix standard, les commandes exécutées sont principalement d'autres programmes, avec la coquille en les reliant ensemble de façon appropriée. De toute évidence, il y a des commandes intégrées, et aussi il y a syntaxe généralement de contrôle de flux pour permettre des réactions appropriées aux résultats de l'exécution des commandes.

Dans d'autres contextes, il est raisonnable de penser à d'autres sortes de commandes en cours d'exécution. Par exemple, on pourrait envisager une « SQL Shell » qui permet à l'utilisateur d'exécuter des instructions SQL lorsque vous êtes connecté à une base de données.

Un shell Python soutiendrait les notations pythonique et exécuterait des déclarations semblables à Python, avec une syntaxe étroitement liée à la syntaxe de Python. Un Shell Perl soutiendrait les notations Perl-like et exécuterait des déclarations semblables à Perl, ... Et la liste continue. (Par exemple, Tcl a tclsh -. Tcl Shell)

Autres conseils

Dans Orchard le terme « shell » est vraiment plus d'une métaphore pour une portée. Il y a trois champs imbriqués:. Hôte, shell et travail

L'hôte est un conteneur qui vit pour la durée de l'application Web domaine.

La coquille est un conteneur enfant créé par l'hôte qui est construit en fonction de la configuration actuelle. Si la configuration est changée une nouvelle coque est construite et l'existant se laisse aller.

Le travail est un autre récipient, créé par la coquille, qui contient les composants qui vivent pendant toute la durée d'une seule demande.

Une bonne chose sur l'utilisation d'un conteneur shell-ce que cela aide évite l'utilisation de variables statiques et la nécessité de lancer le cycle de domaine sur l'application en cas de changement de configuration. Une autre bonne chose est qu'il permet un domaine d'application Orchard pour servir plus d'un « site » en même temps lorsque l'hôte est titulaire d'un certain nombre de coquilles et utilise celui qui convient pour chaque demande.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top