ASP.NET MVC 应用程序如何严重依赖 System.Web 程序集?

Posted

技术标签:

【中文标题】ASP.NET MVC 应用程序如何严重依赖 System.Web 程序集?【英文标题】:How is an ASP.NET MVC application heavily dependent on System.Web assembly? 【发布时间】:2016-01-07 00:59:06 【问题描述】:

我已经阅读了很多关于 OWIN 和 Katana 的文章,在 ASP.NET 应用程序中使用 OWIN 的好处之一是,在构建 ASP.NET 应用程序时,由于严重依赖于System.Web 程序集。换句话说,System.Web 程序集默认在每个请求上运行。

实际上,我不知道 System.Web 是如何在每个请求上运行的,因此会消耗资源并使 ASP.NET 应用程序通常速度变慢。 中间件组件是如何解决这个问题的? 他们不依赖 System.Web Assembly 吗?

【问题讨论】:

System.Web.dll 没有绑定到 IIS,它可以在其他主机进程中运行(例如 Cassini,大约 2005 年)。另外我觉得你夸大了 ASP.NET 管道的性能影响。 @Dai 我非常怀疑他夸大了管道的影响。与 System.Web 分离是 ASP.NET 5 中的一个巨大变化,并被认为带来了显着的性能改进。 @Dai 你能解释一下服务器和主机之间的区别吗,因为我读了很多书,但对我来说区别仍然很模糊。主机定义是“应用程序和服务器在其中执行的过程,主要负责应用程序启动。”所以它是一个 c# 类或方法?以及 IIS 如何同时是服务器和主机? 你好@MostafaAbdElRazekm 你的问题真的很好,如果你已经知道答案,请写下来因为我有同样的问题,不幸的是我还没有找到答案。 【参考方案1】:

System.Web.dll 与 .NET Framework 相关性更高,与 Web 服务器无关,因此您将拥有它并在您的 ASP.NET 应用程序中使用它。

但是,最新版本的 ASP.NET 5 有很多架构更改,其中之一是摆脱了 System.Web.dll 依赖项。在此链接上查看更多信息:

http://weblogs.asp.net/scottgu/introducing-asp-net-5

http://docs.asp.net/en/latest/conceptual-overview/aspnet.html

【讨论】:

那么,为什么 ASP.NET Web 应用程序天生绑定到 IIS 而不是任何其他 Web 服务器?你的意思是在过去我们必须在我们项目的每个单独的类中包含 System.web 程序集(使用 System.Web;),这意味着每个类都加载了它?

以上是关于ASP.NET MVC 应用程序如何严重依赖 System.Web 程序集?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 ASP.NET Core MVC 中使用依赖注入设计存储库模式?

ASP.NET Core Web 应用程序系列- 在ASP.NET Core中使用Autofac替换自带DI进行构造函数和属性的批量依赖注入(MVC当中应用)

[转]Asp.net MVC使用Filter解除Session, Cookie等依赖

ASP.NET Core Web 应用程序系列- 在ASP.NET Core中使用Autofac替换自带DI进行构造函数和属性的批量依赖注入(MVC当中应用)

asp.net mvc 依赖注入有啥用

asp.net mvc 依赖注入有啥用