Eu sou novo em OWIN e Katana. Realmente não entendo por que devo usar o OWIN, enquanto posso usá-lo IIS
. Para simplificar, minha pergunta é: O que eu perco se eu pular o aprendizado do OWIN e usar o IIS nos meus sites?
Pesquisei no Google, mas não há uma explicação simples. Há algumas informações aqui , mas elas usam algumas frases do jargão, então eu não consigo entender.
Respostas:
No asp.net WebApi v2, o pipeline OWIN se torna o padrão. Eventualmente, será o pipeline padrão em qualquer projeto asp.net.
Não posso colocá-lo melhor do que o que está escrito aqui: http://www.asp.net/aspnet/overview/owin-and-katana/an-overview-of-project-katana
A seção "A interface da Web aberta para .NET (OWIN)" explica perfeitamente os objetivos do OWIN.
Sem o OWIN, os bits do asp.net são acoplados à maneira como o IIS se comunica com o aplicativo. OWIN abstrai servidores web e componentes de estrutura. Isso significa que seu código de aplicativo agora estará ciente da interface OWIN, mas não do servidor da web que está atendendo a solicitação.
Em troca, os aplicativos podem ser transportados com mais facilidade entre hosts e plataformas / sistemas operacionais potencialmente inteiros. Por exemplo, a capacidade de hospedar um aplicativo em um console ou em qualquer processo permite que o Mono o hospede sem esforços ... (qualquer pessoa que seja o Raspberry Pi)
O segundo aspecto é que ele funciona como um pipeline.
Você pode conectar qualquer middleware (e quantos você desejar) entre o servidor da web e seu aplicativo.
Isso permite soluções mais modulares. Você pode desenvolver middlewares redistribuíveis que podem impactar a solicitação / resposta vinda de / para seu aplicativo, mas mantenha esses módulos separados do código do aplicativo.
Para se convencer dos benefícios dessa abordagem modular, consulte os pacotes de nuget disponíveis para o OWIN: http://www.nuget.org/packages?q=owin
Muitos desses pacotes eram anteriormente a funcionalidade principal do asp.net e foram extraídos como middleware.
Por exemplo, adicionar suporte ao login usando vários provedores OAuth se torna uma preocupação de infraestrutura (um middleware) e não precisa mais fazer parte do código do aplicativo:
...
Ou se você deseja substituir automaticamente todas as imagens do seu site por imagens fofas de gatos, também é possível fazer isso de forma transparente:
https://github.com/serbrech/Owin.Catify
EDIT: Agora está disponível como um pacote de pepitas : Owin.Catify !
fonte
Sim está certo. OWIN é uma interface e Katana é uma implementação da interface OWIN pela Microsoft . Portanto, ouvimos essas duas palavras (OWIN / KATANA) juntas e muitas vezes nos confundimos entre a diferença entre esses dois termos. Portanto, Katana é a implementação da interface OWIN da Microsoft. Digamos que exista outra empresa chamada BIG-BOSS que deseje criar sua própria implementação do OWIN; eles podem fazer isso e nomear sua implementação como 'BATANA' e anunciar frases como OWIN / BATANA.
Então, por que OWIN !!!
Pense em um país onde o único veículo disponível para circulação é um caminhão. Nada mais. Se você quiser comprar um veículo, você compraria caminhão. Bem, isso costumava servir bem, mas as pessoas começaram a perceber que, elas não precisam de caminhão o tempo todo, especialmente quando querem assistir a um filme ou comprar leite, dirigir um caminhão pesado não apenas custa combustível alto, mas também adicione estresse ao dirigir. Mas sim, se eles querem carregar muitas coisas pesadas, o caminhão serve muito bem ao objetivo.
Então, o governo daquele país apresentou uma especificação para os fabricantes de veículos. A especificação é a seguinte:
Portanto, com base nessas especificações, qualquer pessoa pode fabricar veículos de acordo com diferentes necessidades e pode nomear seus veículos de acordo. Portanto, Sedan, caminhonete, SUV, VAN, etc. etc. todo tipo de veículo apareceu no mercado. Se alguém não precisar carregar coisas pesadas o tempo todo, precisar de um veículo apenas para ir ao local de trabalho, ele / ela pode comprar um pouco de Sedan. Alguém pode comprar um utilitário esportivo se precisar de mais energia.
Com base no exemplo acima, podemos dizer que nosso aplicativo da Web ASP.NET usa o System.Web Assembly que é muito carregado (como um caminhão) e se queremos criar um pequeno aplicativo da Web em que nosso objetivo seja servir apenas alguns arquivos com base em em um pequeno conjunto de solicitações, somos obrigados a usar esse conjunto System.Web pesado (caminhão). Agora, o OWIN aparece. OWIN é um conjunto de especificações (podemos chamar de interface) que define um servidor. Com base nessa especificação, alguém (como um fabricante de veículos) pode criar vários tipos de servidores com base em domínios de problemas / necessidades de aplicativos específicos. A Microsoft criou sua própria Implementação para OWIN, chamada Katana, da mesma maneira que pode servir a API da Web. Como o WebAPI é uma tecnologia leve, que não precisa do sistema completo.
Agora, se você perguntar: ' Eu preciso disso'? A resposta é: 'Depende da sua necessidade de desempenho'. Se você não se importa de dirigir seu caminhão, mesmo que vá assistir a um filme, talvez não precise do OWIN. Mas se você sentir isso, um carro Sedan leve é tudo o que você precisa para dirigir dentro de uma cidade, a uma pequena distância, assistir a filmes etc. etc. sim, você pode verificar quais implementações do OWIN estão disponíveis no mercado. O Katana é uma das implementações do OWIN; portanto, você pode verificar o que o Katana oferece. Não apenas Katana, se alguma outra empresa implementa o OWIN de acordo com um domínio específico (por exemplo, um servidor para dispositivos médicos que baixará as informações mais recentes sobre medicamentos) e se você é médico, talvez possa verificar a implementação do OWIN. Além disso, você mesmo pode criar sua própria implementação do OWIN visando qualquer nicho específico.
Em termos de aplicativos da Web, se você é um desenvolvedor simples da Web, desenvolvendo sites personalizados para seus clientes, talvez não precise se preocupar com a implementação personalizada de OWINs, porque o IIS o atenderá de maneira equilibrada. Se você criar um projeto de API da Web, terá o modelo baseado no Katana pronto no Visual Studio -> Novo Projeto, para que não precise se preocupar com nada além de aprender técnicas específicas do Katana. No momento, o Katana não está maduro o suficiente para substituir completamente a necessidade do IIS para o ASP.NET MVC, mas talvez, no futuro, ele o faça.
Então, quando eu precisar escrever minha própria implementação OWIN?
Resposta: Bem, digamos, por exemplo, você desenvolveu um aplicativo Windows que deve ser executado como servidor em segundo plano e ouvir um número de porta XXXX. Seu servidor responderá apenas a um conjunto de solicitações como este:
Isso é tudo. E nada mais. Então, por que você precisaria de um servidor Web IIS completo para esta pequena tarefa? Você pode criar sua própria implementação OWIN nesse caso. (Talvez você use Katana para isso)
Ok, entendi que, se eu quiser criar um site ASP.NET MVC, não tenho a opção de substituir o IIS, então por que preciso saber sobre Katana neste momento?
Resposta: Embora o Katana não seja maduro o suficiente para substituir a necessidade do IIS, para que você possa hospedar seu site ASP.NET MVC diretamente no Katana, o Katana implementou muitas interfaces interessantes do OWIN, para que você possa aproveitar o uso desses recursos. ao lado. Por exemplo, permitir que seus usuários façam login usando o Facebook, Google, Twitter etc. não era muito fácil antes. O Katana oferece muitos ganchos (como um middleware) para que você possa permitir que o Katana cuide da autenticação externa baseada em mídia social facilmente sem escrever código de encanamento. Existem muitos outros benefícios no uso do Katana que você pode descobrir ao começar a usar essa tecnologia.
fonte
what is lightweight part, i mean if Katana is compared to IIS, by which means it is lightweight ( say it does not do step#1,2,3 etc.. , but IIS does that.
Uma versão mais simples dessa resposta é que o Katana está pronto para substituir completamente o conjunto System.Web e o antigo pipeline do ASP.NET, o que oferece uma melhor flexibilidade (use-o em mais cenários e use apenas as peças que você gosta) e desempenho.
Portanto, todos devem assistir a sua evolução agora e estar prontos para mudar quando ela estiver finalmente concluída.
Abaixo está um diagrama que eu desenhei para preencher os detalhes que a Microsoft não inclui neste artigo .
OWIN é um padrão que permite que as estruturas de aplicativos sejam executadas nele e esqueça tudo o que está abaixo dele. Por outro lado, o próprio OWIN utiliza vários adaptadores de host para garantir que ele possa conversar com os servidores Web subjacentes (IIS e muitos outros).
Agora estou trabalhando com o autor do servidor da Web Jexus para investigar como podemos escrever um adaptador host para conectar o OWIN / Katana e o Jexus. Estamos muito felizes em saber que o OWIN é flexível e altamente personalizável.
Referência: http://blog.lextudio.com/2014/06/why-owin-matters-a-lot-for-asp-net-developers/
fonte
System.Web
.OWIN foi projetado para separar servidores da Web das estruturas em que você trabalha. Ele pode tornar os aplicativos leves e portáteis para estruturas e servidores de mixagem.
E Katana é a implementação da Microsoft de componentes OWIN.
Desde os últimos anos, a Microsoft está tornando as ferramentas da Web mais ágeis e responsivas à medida que o plano está progredindo. Por exemplo, o desenvolvimento do ASP.Net MVC e do ASP.Net Web API. Eles não dependem da DLL System.Web, que é um enorme fardo que eles sentem agora, eu acho. A vantagem é que ambos os desenvolvimentos podem ser fornecidos em tempo hábil e o ciclo está mais rápido do que nunca. Agora, os desenvolvedores também podem implantar esses aplicativos em hosts OWIN personalizados ou no Katana, que é uma referência da implementação do OWIN.
Qual é o objetivo, afinal?
A Microsoft lançou um projeto que é um host leve baseado em OWIN no IIS, chamado `Helios. O objetivo é evitar o relacionamento do ASP.NET/IIS, fornecendo alguns componentes pequenos e independentes que podem ser usados, instalados e gerenciados de forma independente em execução em um host da web que implementa as especificações OWIN.
Um dos principais motivos é o fator de desempenho. A Helios poderá obter uma taxa de transferência 2x a 3x mais do que o aplicativo ASP.Net padrão. Em termos de consumo de memória, o Helios é muito melhor que o System.Web dll. Em uma comparação feita, a arquitetura Helios permitiu que um aplicativo de amostra atingisse 50000 solicitações simultâneas com aproximadamente 1 GB a menos de sobrecarga em comparação com um aplicativo ASP.Net padrão.
fonte
OWIN é uma abstração entre o aplicativo Web e a plataforma de hospedagem. Se você escrever seu aplicativo Web usando OWIN, não está vinculado ao IIS, poderá usar outro host, se desejar.
Você perguntou por que usar o OWIN em vez do IIS, mas essas não são alternativas uma para a outra. O OWIN fica entre o IIS e seu aplicativo, para que você possa mudar o IIS sem reescrever seu aplicativo.
Você também pode conferir esta página https://github.com/Bikeman868/OwinFramework/wiki/OWIN
fonte