Projeto Katana e o desenvolvimento web com .NET - Introdução

Este post é dividido em duas partes, a primeira tem o papel de introduzir o projeto Katana criado pela Microsoft e a especificação OWIN e o que isso contribui ao desenvolvimento web utilizando o .NET Framework, a segunda parte terá como papel, introduzir a parte prática. Porém antes de descrever o Katana é necessário entender as motivações do projeto.


Desafios

Analisando rapidamente a linha do tempo do ASP.NET, sua primeira versão trouxe organização de código e introduziu o paradigma orientado a objetos em contraste as aplicações construídas com o asp clássico, e introduziu também um ambiente visual com controles de servidor (Server Controls) que trazia um ambiente similar ao que desenvolvedores VB6 tinham, visando diminuir a curva de aprendizagem e adoção do desenvolvimento web para desenvolvedores desktop.   

No entanto a natureza do ASP.NET era monolítica, contendo todas as funcionalidades como os objetos relacionados ao core do HTTP e ao framework WebForms em uma unica dll (System.Web) com um acoplamento a infraestrutura especifica de host do IIS, outro detalhe é que o mesmo fazia parte das releases do Framework .NET. Com este cenário o time do ASP.NET encontrou dificuldades em entregar novos recursos e melhorias conforme a evolução do desenvolvimento para web em geral acontecia.


Evolução

Devido a evolução constante e novos padrões introduzidos ao desenvolvimento web como o MVC (Model View Controller), foi criado o ASP.NET MVC habilitando alem do desenvolvimento sobre um novo paradigma, também a entrega de releases sem vinculo com as releases do Framework .NET, introduzindo flexibilidade ao time do ASP.NET para introduzir novos recursos. Outros produtos como ASP.NET Web Api e SignalR foram introduzidos mais tarde, desta vez independentes da infraestrutura monolítica do core do ASP.NET e o host especifico do IIS.


Futuro já presente

Com a adoção de tecnologias como Nodejs e projetos como o Rack que define uma interface entre servidores e frameworks Ruby, a comunidade de desenvolvedores .NET começou a fomentar ideias e discussões no grupo NET HTTP Abstractions, concebendo uma especificação que tinha como proposito definir uma interface de abstração entre servidores e aplicações permitindo um ecossistema rico baseado em componentes para aplicações e servidores web baseados em .NET, dando vida ao OWIN (Open Web Interface for .NET). Segundo a especificação do OWIN, poderíamos rodar aplicações web agnósticas de servidor promovendo uma maior autonomia e a possibilidade de incluir recursos/componentes a sua aplicação conforme necessidade.


OWIN

Os objetivos do OWIN garantem que novos componentes possam ser facilmente desenvolvidos e consumidos e que aplicações possam ser portadas para diferentes Hosts permitindo inclusive porte para outros sistemas operacionais, como ambiente Unix (Linux/Mac) sem necessidade de recompilação.


A abstração criada é consistida em dois elementos chave da especificação:

 

  • Environment Dictionary - Refere-se a estrutura de dados responsável por armazenar as informações de requisição/resposta da aplicação.

 

        IDictionary<string, object> env;

  • Application Delegate - A assinatura de um delegate que define uma interface entre os servidores e os componentes em uma aplicação compatível com o OWIN. Este delegate recebe um dicionário com todas informações de requisição/resposta e retorna objeto Task referente a execução assíncrona de seu componente.

 

        using AppFunc = Func/span>

             IDictionary<string, object>, // environment dictionary

             Task>; // tarefa assíncrona

 

Não há nenhuma dependência de tipos externos alem da biblioteca padrão do Framework .NET criando uma dependência minima.


Projeto Katana

Dentro deste contexto, o projeto Katana é a contribuição da Microsoft a especificação OWIN. O projeto não traz um novo framework Microsoft para desenvolvimento web, mas sim um conjunto de ferramentas para construir e compor aplicações baseadas na especificação OWIN criando um ecossistema sustentável para o desenvolvimento web. Produtos como o ASP.NET Web.Api e ASP.NET SignalR já possuem suporte ao OWIN, assim como outros projetos open-source para .NET como FubuMVC, ServiceStack e NancyFx. O projeto Katana disponibiliza vários componentes, entre eles componentes que permitem realizar o host de aplicações web em processos customizados como um serviço do windows ou executáveis e componentes para realizar o host ou servir aplicações compatíveis com o OWIN entre outros componentes.


Este post introduziu de forma simples o conceito e motivos por trás do projeto Katana e o que vem a ser o OWIN, na segunda parte, abordaremos uma visão mais especifica aplicada a pratica. Para maiores detalhes do projeto Katana e OWIN os links de referências podem ser consultados. Até a próxima parte deste post e bons estudos!


Referências:

http://owin.org

http://katanaproject.codeplex.com

http://www.asp.net/aspnet/overview/owin-and-katana/an-overview-of-project-katana

http://msdn.microsoft.com/en-us/magazine/dn451439.aspx


Exibições: 709

Comentar

Você precisa ser um membro de DevBrasil para adicionar comentários!

Entrar em DevBrasil

© 2017   Criado por Ramon Durães.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço