我一直在看源代码 铁蟒 项目和 果园CMS 项目。IronPython 使用名为 Microsoft.Scripting.Hosting.Shell 的命名空间(属于 德国航天中心)。Orchard 项目还在各种接口(IShellContainerFactory、IShellSettings)中间接使用“外壳”的概念进行操作。

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

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

当我遇到一种叫做“贝壳”的东西时,我应该想到什么?一般来说,“外壳”的作用和责任是什么?这个问题还能回答吗?“壳”的含义是主观的(使得这个术语毫无用处)吗?

谢谢。

有帮助吗?

解决方案

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

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

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

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

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

Python shell 将支持 Pythonic 符号,并执行类似 Python 的语句,其语法与 Python 的语法密切相关。Perl Shell 将支持类似 Perl 的符号并执行类似 Perl 的语句,...这样的例子还在继续。(例如,Tcl 有 tclsh - Tcl Shell。)

其他提示

在果园,术语“壳”是更要范围的隐喻的真。有三个嵌套的范围:主机,壳和工作

在宿主是单一容器,其生命的web应用程序的域的持续时间。

壳是由根据当前配置内置主机创建一个子容器。如果配置改变一个新的外壳建成和现有的一个是放手。

的工作是另一个容器中,由外壳,其保持住对单个请求的持续时间的组件创建的。

关于使用贮贝它,它可以帮助的一个好处避免使用静态变量,需要周期的配置更改时,应用程序域。另一个好处是,它使一个果园应用程序域当主机持有数弹和使用适当的一个为每个请求服务一个以上的“位点”在同一时间。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top