22

我开始在任何地方看到上下文。在 ASP.NET MVC 中,有 ControllerContexts、RequestContexts、HttpContexts、FormContexts。在实体框架中,您有 ObjectContexts 和 DbContexts。Ninject 有 Ninject.Activation.IContext。

上下文到底是什么?

4

6 回答 6

7

嗯,这是一种依赖注入的东西,它允许人们说“这是你将在其中运行的环境”。一般来说,它们毫无疑问地为任何事物提供了“上下文”。即,某种状态。也许是 URL,也许是一些 HTTP 标头,等等。

您会看到很多,因为 ASP.NET 专注于测试,因此允许“交换”这些项目,这样您就可以提供自己的上下文实现(即定义自己的状态),以便您可以运行测试适当而成功地。

如果您想知道什么是状态,那么它只是环境“给定”的各种数据位。即今天办公室很冷。这是状态的一部分。但也许我想在办公室很热的时候运行我的测试,这样我就可以为OfficeContext适当的方法/等子类化并返回适当的状态。

于 2010-12-17T05:26:02.937 回答
4

IMO,上下文表示关于某事的一些(可能是可变的)状态。通常情况下,上下文将是横切层,并且通常跨层携带领域中性数据。

于 2010-12-17T05:24:28.557 回答
3

上下文是您当前正在做的事情范围之外的信息,但它具有可能是必不可少的含义。

想象一下,如果有人问你英文单词“fly”的含义。有多种定义:嗡嗡作响的小检查或在空中滑行的持续行为。为了给出正确的答案,你需要上下文来告诉你他们正在寻找哪个定义——他们是在读一本关于双翅目还是莱特兄弟的书?

关于计算,假设您正在实现一个 HTTP 处理程序。它可能能够在不知道任何其他内容(Hello,World!)的情况下生成响应,但它更有可能需要HTTP 请求信息的上下文- 请求参数是什么,可接受的编码类型等,因此它可以生成一个对用户代理的有意义的响应。

于 2010-12-17T05:33:08.770 回答
1

我认为它们就像 telnet/ssh 会话中的环境变量和配置文件设置。它们将不同的设置捆绑在一起,以允许工具根据它们运行的​​上下文(即环境)以不同的方式执行。

于 2010-12-17T05:26:09.340 回答
0

IMO,这只是另一个论点。在我(有限的)经验中,我已经看到它是调用类。你必须知道在做什么才能做你做得好的事情。上下文是您正在做的事情,正在发生/正在发生的事情。

于 2010-12-17T05:44:50.283 回答
0

The above answers are by and large quite good. The only thing I would add is that its most common usage is as a "glue" to lower layers of a system. Generally the system in question is some kind of "container" system, where your code is executed inside of a larger code base that hides a lot of execution details from you. The context is the abstracted interface to that larger system.

于 2012-06-07T15:28:15.310 回答