代码之家  ›  专栏  ›  技术社区  ›  Rune

“壳牌”的角色/职责是什么?[关闭]

  •  0
  • Rune  · 技术社区  · 14 年前

    我一直在研究 IronPython 项目和 Orchard CMS 项目。Ironpython使用名为microsoft.scripting.hosting.shell的命名空间( DLR )Orchard项目还以“shell”的概念在各种接口(ishellContainerFactory、ishellsettings)中间接运行。

    上面提到的所有项目都没有详细的文档,因此,如果您试图通过读取源代码来确定整个应用程序结构/体系结构,那么从类型(类等)的名称中了解其含义是非常有价值的。

    现在我想知道:当这些源代码的作者引用“shell”时,他们有什么想法?当我听到“shell”这个词时,我想到了类似命令行解释器的东西。这对Ironpython很有意义,因为它有一个交互式解释器。但对我来说,对于网络CMS来说,这没有多大意义。

    当我遇到一种叫做“贝壳”的东西时,我该怎么想?一般来说,“壳牌”的作用和责任是什么?这个问题还能回答吗?“shell”的意思是主观的吗(使这个词无用)?

    谢谢。

    2 回复  |  直到 14 年前
        1
  •  1
  •   Jonathan Leffler    14 年前

    我认为shell的一般含义是“解释和执行命令的用户进程”。

    1. 用户进程 ':与操作系统内核中内置的进程不同。在IBM大型机世界中,JCL很难算作一个shell。

    2. 解释和执行 ':在某种形状或形式下,shell从文件或终端读取命令,并对所呈现的内容作出反应,而不是严格编程以执行特定的命令序列。

    3. 命令 :命令的内容取决于上下文。在标准的UNIX shell中,执行的命令主要是其他程序,shell将它们适当地链接在一起。显然,有内置命令,而且通常也有流控制语法,允许对执行命令的结果做出适当的反应。

    在其他上下文中,考虑正在执行的其他类型的命令是合理的。例如,可以设想一个“SQL shell”,它允许用户在连接到数据库时执行SQL语句。

    python shell将支持python符号,并执行类似python的语句,其语法与python的语法密切相关。Perl外壳将支持类似Perl的符号,并执行类似Perl的语句…所以名单还在继续。(例如,tcl有tclsh——tcl外壳。)

        2
  •  2
  •   loudej    14 年前

    在果园中,“壳”这个词实际上更像是一个范围的隐喻。有三个嵌套的作用域:主机、shell和工作。

    主机是一个单独的容器,在Web应用程序域的持续时间内。

    shell是主机根据当前配置生成的子容器。如果更改了配置,将建立一个新的shell,并释放现有的shell。

    这项工作是另一个由shell创建的容器,它保存在单个请求期间活动的组件。

    使用shell容器有一个好处,它有助于避免使用静态变量,并且在配置更改时需要循环应用程序域。另一个好处是,当主机拥有多个shell并为每个请求使用适当的shell时,它可以使Orchard应用程序域同时服务多个“站点”。