为什么在 ASP.NET 核心应用程序中使用 "app.Add*()" 和 "app.Use*()" 命名约定?

Why is "app.Add*()" and "app.Use*()" naming convention used in ASP.NET Core application?

在 ASP.NET Core 中,当配置服务时,我注意到它通常是由具有前缀 Add* 的扩展方法完成的。 同样,在配置中间件管道时,我们有带有 Use* 前缀的扩展方法。

例如添加身份验证服务时:

services.AddAuthentication("MyAuthService")

然后我们在管道中添加 Authentication middleware(这将使用我们刚刚在上面添加的 Authentication services),如下所示:

app.UseAuthentication();

所以我有几个问题:

我注意到 NodeJs Express 网络应用程序中使用了类似的约定,但我对 Express 不是很熟悉。 ASP.NET Core 是受其启发还是相反?

此约定是否也用于其他 Web 服务器框架(例如 python、java、php、ruby on rails 等。 )?

我们采取的行动分别由术语添加使用描述:

术语“添加”是指向应用程序添加服务的行为,但这并不意味着它们将被使用 - “添加”表示一项操作 没有任何直接后果

术语“使用”是指在您的应用程序中实际使用它们的行为(因为它们已经被添加)- “使用”一词意味着具有后果的行为。

您的身份验证示例清楚地显示了上述逻辑:

AddAuthentication - 注册身份验证服务所需的服务(除非您在应用程序管道中实际使用这些注册服务,否则身份验证过程不会发生)

UseAuthentication - 将 AuthenticationMiddleware 添加到指定的 IApplicationBuilder,启用 身份验证功能。