我开始在任何地方看到上下文。在ASP.NET MVC中,有ControllerContexts,RequestContexts,HttpContexts,FormContexts。在Entity Framework中,您有ObjectContexts和DbContexts。 Ninject有Ninject.Activation.IContext。
什么是背景?
答案 0 :(得分:7)
嗯,这是一种依赖注入的东西,它允许人们说'这是你将要操作的环境'。一般来说,它们无论如何都会提供“背景”。即,一些州。也许是URL,也许是一些HTTP头,无论如何。
您看到很多因为ASP.NET专注于测试,因此允许这些项目“交换”,这样您就可以提供自己的上下文实现(即定义您的自己的状态),这样你就可以适当而成功地运行测试。
如果您想知道状态是什么,那么它只是由环境“给定”的各种数据位。即今天在办公室很冷。这是州的一部分。但也许我想在办公室里热点时运行我的测试,所以我能够继承OfficeContext
并为适当的方法/等返回适当的状态。
答案 1 :(得分:4)
IMO,Context表示关于某事的一些(可能是可变的)状态。通常情况下,上下文将是跨领域层,并且通常跨层提供域中性数据。
答案 2 :(得分:2)
上下文是您目前正在做的事情范围之外的信息,但其含义可能是必不可少的。
想象一下,如果有人问你英文单词“fly”的含义。有多种定义:嗡嗡作响的小检查或通过空气滑行的持续行为。为了得到正确的答案,你需要 context 来告诉你他们正在寻找的定义 - 他们是在读一本关于双翅目或莱特兄弟的书吗?
关于计算,假设您正在实现HTTP处理程序。它可能能够在不知道其他任何事情的情况下生成响应(Hello,World!),但它更可能需要HTTP请求信息的 context - 请求参数是什么,可接受的编码类型,等等,因此它可以对用户代理产生有意义的响应。
答案 3 :(得分:1)
我认为它们与telnet / ssh会话中的环境变量和配置文件设置类似。它们将不同的设置捆绑在一起,以允许工具根据它们运行的上下文(即环境)执行不同的操作。
答案 4 :(得分:0)
IMO,这只是另一个论点。在我(有限)的经历中,我看到它是通话类。你必须知道你正在做什么来做你正在做的事情好。上下文就是你正在做的,正在发生/正在发生的事情。
答案 5 :(得分:0)
以上答案基本上都很好。我唯一要补充的是它最常见的用法是作为胶水"降低系统的层数。通常,所讨论的系统是某种容器"系统,您的代码在较大的代码库中执行,该代码库隐藏了大量的执行细节。上下文是该较大系统的抽象接口。