【问题标题】:Is this a reasonable "Application entry point"?这是一个合理的“应用程序入口点”吗?
【发布时间】:2008-09-30 11:01:22
【问题描述】:

我最近遇到一种情况,代码动态加载一些库,将它们连接起来,然后调用所谓的“应用程序入口点”(其中一个库必须实现 IApplication.Run())。

这是一个有效的“应用程序入口点”吗?

我一直认为应用程序入口点位于加载库之前,并发现在大量工作之后调用 IApplication.Run() 有点误导。

【问题讨论】:

  • 请更改问题的标题,因为这不是您要问的...例如“这是对术语应用程序的有效使用吗?”
  • 或者更好的是,“‘应用程序入口点’这个词是什么意思?”
  • 顺便说一句,“valid”这个词拼错了。

标签: definition


【解决方案1】:

术语应用程序和系统是使用如此广泛和多样化的术语,您需要事先与您的对话伙伴就它们的含义达成一致。例如。有时,应用程序是带有 UI 的东西,而系统是“无 UI”的。一般来说,你说土豆,我说土豆。

至于您使用的示例:这正是运行时(例如 .NET 或 java)所做的:加载一组库并调用应用程序入口点,即“main”方法。

因此,在您的情况下,加载库的代码执行相同的操作,并且可能调用接口上的方法,然后您可以将加载代码视为该应用程序的运行时。这只是一个观点问题。

【讨论】:

    【解决方案2】:

    “应用程序”一词可以表示您想要的任何含义。 “应用程序”仅指协同工作以帮助您解决问题的资源(库、代码、图像等)的集合。

    所以要回答您的问题,是的,“应用程序”一词的使用是有效的。

    【讨论】:

      【解决方案3】:

      应用程序本身实际上没有任何意义。人们经常用它来谈论为用户提供一些价值的计算机程序。更正确的术语是应用软件,其定义如下:

      应用软件是 采用计算机软件 直接计算机的能力 并彻底完成用户的任务 希望表演。这应该是 与系统软件对比 参与整合一个 计算机的各种功能,但 通常不直接应用它们 在执行任务时 使用户受益。在这种情况下 术语应用是指 应用软件及其 实施。

      由于应用程序实际上意味着应用程序软件,而软件是在计算机上执行任何类型任务的任何代码,我想说库也可以是应用程序。

      无论如何,大多数术语都是人为的。插件不是应用程序吗?你浏览器的flash插件没有应用吗?人们说不,它只是一个插件。为什么?因为它不能自己运行,所以需要加载到一个真实的进程中。但是没有定义说只有“可以自己运行”的东西才是应用程序。图书馆也是如此。核心应用程序可能只是一个空容器,所有逻辑和功能,甚至与用户的交互,都可以由插件或库执行,在这种情况下,它更像是一个应用程序,而不是只为应用程序提供一些上下文的空容器。要运行的应用程序。将此与 Java 进行比较。 Java 应用程序 不能单独运行,它必须在 Java 虚拟机 (JVM) 中运行,这是否意味着 JVM 是应用程序,而 Java 代码只是……嗯,什么? Java 代码难道不是真正的应用程序和 JVM 只是一个空的运行时环境,如果没有加载的 Java 代码,最终用户什么也得不到?

      【讨论】:

        【解决方案4】:

        我认为在这种情况下,“应用程序入口点”是指“应用程序(您的代码)进入库的点”。

        【讨论】:

          【解决方案5】:

          我认为您所指的可能是 C/C++ 代码中的 main() 函数或 Windows 应用程序中的 WinMain。也就是说,它是通常在应用程序中开始执行的点。您的问题非常广泛和模糊——例如,您在哪个操作系统上运行它——但this 可能是您正在寻找的。 This 也可以解决这个问题。

          请记住,当您提出问题时,细节就是您的朋友。当您向他们提供详细信息时,人们可以为您提供更好、更明智的答案。

          编辑: 在更广泛的背景下,从操作系统的角度考虑必须发生的事情。当用户指定他们要运行一个应用程序时,操作系统必须从硬盘驱动器加载应用程序,然后当应用程序加载到内存中时,它必须将控制权传递给新加载占用的内存中的某个点应用程序继续执行。那将是“应用程序入口点”。当使用动态链接代码构建应用程序时,操作系统必须加载所有动态链接代码,以便将正确的应用程序映像放入内存。加载这些共享的代码并不会改变这样一个事实,即当应用程序加载到内存中时,操作系统必须有一个点可以传递控制权。

          【讨论】:

            猜你喜欢
            • 2019-11-06
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2018-05-09
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多