我读过很多关于OWIN和Katana项目的文章,但我无法了解它的全貌.

对于使用ASP.NET的普通Web开发人员:

  1. 究竟拥有什么,它解决了什么问题(简单地说).它与IIS有什么关系?
  2. OWIN会取代IIS吗?如果不是,在什么情况下拥有最合适?
  3. OWIN如何帮助我完成日常工作项目?
  4. OWIN如何帮助我进行self 提升项目?

推荐答案

关于上述 comments ,OWIN不是一个框架.OWIN是一个关于如何构建web服务器和web应用程序的规范,以便将它们解耦并允许ASP.NET应用程序到以前不受支持的环境.

在OWIN之前,在构建ASP时.NET应用程序,由于对System.Web程序集的严重依赖,您天生就绑定到IIS.

System.Web是自ASP(非.NET版本)以来就存在的东西,它在内部包含许多您可能甚至不需要的东西(例如Web表单或URL授权),默认情况下,这些东西都会在每个请求上运行,从而消耗资源并使ASP.NET应用程序通常比Node之类的应用程序慢很多.比如js.

OWIN itself does not have any tools, libraries or anything else. It is just a specification.

另一方面,Katana是一个充分开发的框架,用于在当前ASP.NET框架和OWIN规范.目前,Katana已经成功地改编了以下ASP.NET框架到OWIN:

  • Web API
  • 信号R

ASP.NETMVC和Web表单仍然只通过系统运行.从长远来看,也有一个计划将它们分离开来.

另一方面,IIS是一个很好的、资源丰富的web服务器主机.整个ASP.使用IIS的网络性能问题只有System.Web个根源.直到最近,在决定如何托管web服务器时,您有两个 Select :

  • IIS
  • 自助主机

所以如果你想看演出,你可以 Select 自助式.如果您想要IIS提供的许多开箱即用的功能,您可以 Select IIS,但您会损失性能.

现在,还有第三个选项,一个名为Helios(当前代码名)的Microsoft库,它打算删除System.Web,并允许您以更"干净"的方式使用IIS,而不需要任何不必要的库或模块.Helios现在是预发布版本,正在等待更多社区反馈,以使其完全支持Microsoft产品.

希望这个解释能更好地为你澄清问题.

EDIT (Sep 2014):

与ASP.NET vNext正在开发中,Katana正在慢慢退役.版本3.0很可能是Katana作为独立框架的最后一个主要版本.

然而,Katana引入的所有概念都被集成到ASP中.NET vNext,这意味着编程模型将基本相同.引用David Fowler(ASP.NET vNext的架构师)的forum post句话:

vNext是Katana的继承者(这就是为什么它们看起来如此相似).

今天在卡塔纳存在的一切都将进入vNext.

EDIT (Feb 2015):

ASP.NET vNext现在被称为ASP.NET 5,并将建在其上.净核心5.NET Core 5是的轻量化版本.NET框架,旨在支持ASP.第五网和第五网.NET原生.然而,ASP.NET 5将由支持.NETFramework4.6,该版本也应该与.净核心5.都是ASP.第五网和第五网.NET Core 5将获得麻省理工学院的许可,并接受社区捐款.

EDIT (May 2015):

此外,ASP.NETWebAPI品牌将停产,但其技术将成为新ASP的基础.NETMVC6.以前的ASP.NET MVC版本是通过实现IHttpHandler构建的,IHttpHandler是System.Web年定义的一个接口.ASP.NETMVC6消除了这种依赖性,使其可移植到各种平台和web服务器上.

EDIT (May 2016):

ASP.NET5将正式更名为ASP.NET Core从即将发布的候选版本2开始.同样适用于实体框架7,该框架将更名为实体框架核心.有关官方声明及其背后原因的更多信息,请参阅斯科特·汉塞尔曼的博客:

EDIT (May 2016):

随着候选版本2ASP.NET Core has been modified so that future web apps are actually just .NET Core console apps setup to process incoming HTTP requests的发布.这个概念使得ASP.NET Core与微软通过Azure Service Fabric支持微服务体系 struct 及其实现的方法更加一致.有关的更多信息,请访问官方博客:

Asp.net相关问答推荐

如何在现有数据库中创建 ASP.Net Identity 表?

从数据库中检索数据的最快方法

C# ASP.NET Core Serilog 添加类名和方法到日志(log)

SignalR 不在服务器上使用 Session

System.Web.Helpers.Crypto - 盐在哪里?

在 C# 中以编程方式添加元标记

Anti-Forgery Token 适用于不同的基于声明的用户

无法访问,内部,资源文件?

如何判断一个IP地址是否是私有的?

在视图 Mvc.net 中访问路由值

无法让嵌套在 UpdatePanel 中的 WebControl 中的 ScriptManager.RegisterStartupScript 工作

正在检索组件的 COM 类工厂......错误:80070005 访问被拒绝. (来自 HRESULT 的异常:0x80070005 (E_ACCESSDENIED))

FluentValidation 使用数据库的唯一名称验证

使用 JavaScript 禁用 ASP.NET 验证器

使用 gridview asp.net 进行排序和分页

判断邮箱地址是否对 System.Net.Mail.MailAddress 有效

将 Http 请求读入字节数组

如何获得 System.Diagnostics.Process 的输出?

如何在 ASP.NET MVC 中启用跨源请求

导航到本地 IIS Express 时,Chrome 会返回错误请求 - 请求太长