Em relação ao comentário acima, o OWIN não é uma estrutura. OWIN é uma especificação de como os servidores e aplicativos da Web devem ser criados para dissociá-los e permitir a movimentação de aplicativos ASP.NET para ambientes que não eram suportados anteriormente.
Antes do OWIN, ao criar o aplicativo ASP.NET, você estava inerentemente vinculado ao IIS devido à grande dependência do System.Web
assembly.
System.Web
é algo que existe desde o ASP (versão não .NET) e contém internamente muitas coisas que você nem precisa (como Formulários da Web ou Autorização de URL), que por padrão são executadas em todas as solicitações, consumindo recursos e tornando o ASP Aplicativos .NET em geral muito mais lentos que seus equivalentes, como Node.js. por exemplo.
O OWIN em si não possui nenhuma ferramenta, biblioteca ou qualquer outra coisa. É apenas uma especificação.
Katana, por outro lado, é uma estrutura totalmente desenvolvida para fazer uma ponte entre as estruturas atuais do ASP.NET e a especificação OWIN. No momento, Katana adaptou com êxito as seguintes estruturas do ASP.NET ao OWIN:
O ASP.NET MVC e os Web Forms ainda estão sendo executados exclusivamente via System.Web e, a longo prazo, há um plano para dissociá-los também.
Por outro lado, o IIS é um host bom e com recursos para servidores web. Problemas inteiros de desempenho do ASP.NET usando o IIS têm raízes profundas System.Web
apenas. Até o momento recente, ao decidir como você hospedaria seu servidor da web, você tinha duas opções:
Portanto, se você quiser uma performance, opte por uma opção de auto-host. Se você quisesse muitos recursos prontos que o IIS fornece, você optaria pelo IIS, mas perderia o desempenho.
Agora, existe uma terceira opção, uma biblioteca da Microsoft chamada Helios (nome de código atual) que pretende removerSystem.Web
o caminho e permitir que você use o IIS de maneira mais "limpa", sem bibliotecas ou módulos desnecessários. O Helios agora está na versão de pré-lançamento e aguarda mais comentários da comunidade para torná-lo totalmente compatível com o produto da Microsoft.
Espero que esta explicação esclareça melhor as coisas para você.
EDIT (setembro de 2014):
Com o ASP.NET vNext em desenvolvimento, Katana está se aposentando lentamente. A versão 3.0 provavelmente será o último grande lançamento do Katana como uma estrutura autônoma.
No entanto, todos os conceitos introduzidos com o Katana estão sendo integrados ao ASP.NET vNext, o que significa que o modelo de programação será praticamente o mesmo. Citação da postagem do fórum feita por David Fowler (arquiteto do ASP.NET vNext):
vNext é o sucessor de Katana (e é por isso que eles são tão parecidos). Katana foi o começo da separação do System.Web e de componentes mais modulares para a pilha da web. Você pode ver o vNext como uma continuação desse trabalho, mas indo muito além (novo CLR, novo Sistema de Projetos, novas abstrações http).
Tudo o que existe hoje em Katana chegará ao vNext.
EDIT (fevereiro de 2015):
O ASP.NET vNext agora é conhecido como ASP.NET 5 e será construído sobre o .NET Core 5. O .NET Core 5 é uma versão fatorada leve do .NET Framework, projetada para suportar os objetivos do ASP.NET 5 e .NET Native . No entanto, o ASP.NET 5 também será suportado pelo .NET Framework 4.6, que deverá estar disponível junto com o .NET Core 5. O ASP.NET 5 e o .NET Core 5 serão licenciados pelo MIT e aceitarão contribuições da comunidade.
EDIT (maio de 2015):
Além disso, a marca ASP.NET Web API será descontinuada, no entanto, sua tecnologia será a base do novo ASP.NET MVC 6. As versões anteriores do ASP.NET MVC foram criadas com a implementação do IHttpHandler, uma interface definida em System.Web
. O ASP.NET MVC 6 remove essa dependência, tornando-a portátil para várias plataformas e servidores web.
EDIT (maio de 2016):
O ASP.NET 5 será renomeado oficialmente para ASP.NET Core, começando com o Release Candidate 2, que está programado para ser lançado em breve. O mesmo se aplica ao Entity Framework 7, que será renomeado para Entity Framework Core. Mais informações sobre o anúncio oficial e os motivos por trás dele podem ser encontradas na postagem do blog de Scott Hanselman: O
ASP.NET 5 está morto - Apresentando o ASP.NET Core 1.0 e o .NET Core 1.0
EDIT (maio de 2016):
Com o lançamento do Release Candidate 2, o ASP.NET Core foi modificado para que futuros aplicativos Web sejam na verdade apenas aplicativos de console do .NET Core configurados para processar solicitações HTTP recebidas . Esse conceito torna o ASP.NET Core ainda mais alinhado com a abordagem adotada pela Microsoft com o suporte à arquitetura de microsserviços e sua implementação por meio do Azure Service Fabric. Mais informações podem ser encontradas na postagem oficial do blog:
Anunciando o ASP.NET Core RC2