ASP.NET vNext es agnóstico del anfitrión, ¿qué significa profundamente?


Según ASP.NET Tutorial de vNext:vNext is host agnostic . You can host your app in IIS, or self-host in a custom process

¿Podría alguien ayudarme a entender esto en deepth con mostrar la diferencia entre la corriente asp.net ¿anfitrión y nuevo?

Author: Erik Funkenbusch, 2014-08-21

2 answers

La historia de ASP.NET hosting

En 2002, había básicamente un servidor web para la plataforma.NET, y ese era IIS. Unos años más tarde, el Servidor Web de Desarrollo de Visual Studio ("Cassini", anteriormente parte de la Matriz Web original) apareció como un servidor solo para desarrolladores. Pero todos estos en última instancia utilizan el Sistema.Web como la capa de alojamiento entre la aplicación y el servidor web. sistema.El host web está estrechamente acoplado a IIS y es muy difícil de ejecutar en otros hosts. Incluso el la implementación en el servidor web VS Dev era limitada porque solo admitía ciertas funciones. Así que como tal, todavía había un solo "anfitrión" de calidad de producción para ASP.NET aplicaciones que dependían del Sistema.Web.

Avanzamos rápidamente alrededor de una década y OWIN surgió como una interfaz entre aplicaciones y servidores web. Esto permitió que cualquier aplicación compatible con OWIN hablara a través de OWIN a un servidor web que tenía una capa de alojamiento compatible con OWIN. Microsoft escribió Katana como una implementación de OWIN que podría alojar ASP.NET API WEB, ASP.NET SignalR, y muchos frameworks de terceros en la parte superior de varios servidores, incluyendo IIS (e IIS Express), el servidor auto-host de Katana y hosts personalizados (es decir, ejecutar el host de Katana en una aplicación personalizada). Hay otra implementación de OWIN llamada Nowin que debería poder ejecutar las mismas aplicaciones que Katana. Este es un ejemplo de agnosticismo del anfitrión.

Ahora adelanta unos años más y hay ASP.NET vNext , que sigue un modelo muy similar a OWIN en términos de tener middleware y tener agnosticismo de host. ASP.NET vNext también tiene capas de compatibilidad para los componentes de la aplicación OWIN middleware.

ASP.NET vNext host agnosticism

ASP.NET vNext es agnóstico del anfitrión de la misma manera que Katana y OWIN. Aplicaciones escritas usando ASP.NET vNext solo conoce una capa de abstracción de host, como la interfaz IApplicationBuilder (anteriormente IBuilder). Las aplicaciones no hablan directamente con la web servidor. Gran parte de esta abstracción se realiza a través de "interfaces de características" para que algunos servidores puedan implementar características y otros puedan optar por no hacerlo.

Opciones de alojamiento web

ASP.NET Las aplicaciones vNext se pueden alojar en IIS, IIS Express, su propio EXE personalizado, en el nuevo servidor multiplataforma Kestrel y, sin duda, en más hosts en el futuro.

Ni Katana ni ASP.NET vNext son reemplazos para IIS u otros hosts, aunque ambos tienen servidores web alternativos. IIS soporta algunas características más avanzadas en comparación con Katana y ASP.NET vNext, como el calentamiento de la aplicación, la administración de la vida útil de la aplicación más rica (es decir, qué hacer cuando la aplicación se bloquea, controlar la cantidad de memoria que utiliza y otros tipos de limitación), la administración remota, etc.

Beneficios de OWIN, ASP.NET vNext, y ser agnóstico del anfitrión

No puedo hablar de las motivaciones para crear OWIN porque nunca fui parte de ese grupo. Pero los méritos de tener un servidor web la abstracción del anfitrión son muchas:

  • Puede cambiar entre hosts con relativa facilidad. Por ejemplo, es común ejecutar localmente en un servidor solo para desarrollo que puede ejecutarse con permisos mínimos. Luego, al implementar en producción, tal vez se use un host más completo como IIS. IIS, sin embargo, requiere permisos administrativos para instalar, que no todos tienen en sus estaciones de trabajo.
  • Pueden existir más opciones de alojamiento. De vuelta en el día debido a la estrecha dependencia de ASP.NET en IIS solo podía existir un host, por lo que efectivamente no había "mercado" para otros hosts.
  • Ciertos tipos de pruebas son más fáciles de escribir al tener un host de prueba en memoria. Esto se usa muy a menudo para probar toda la pila de una aplicación web, pero sin llamadas a la red.

Las motivaciones para ASP.NET vNext se enumeran en parte en el oficial ASP.NET vNext en el tutorial Getting Started. Un breve resumen es: para tener una multiplataforma, de código abierto, plataforma paralela, de pago por uso, independiente del host para crear aplicaciones y servicios web. Suena como algunas cosas de marketing, pero todos estos son aspectos clave del sistema. NodeJS ofrece más o menos este mismo conjunto exacto de características, aunque, por supuesto, una vez que nos fijamos en los detalles, hay, por supuesto, muchas diferencias de implementación y, sin duda, algunas diferencias filosóficas más profundas también. Las motivaciones para apoyar estas características son generalmente autoexplicativas.

Audiencia para ASP.NET

Tenga en cuenta que esto se trata de la audiencia de ASP.NET en general, que incluye todo desde ASP.NET Formularios web, a MVC, Web API, SignalR, Katana, y ASP.NET vNext. Cualquiera de estos marcos son adecuados para proyectos de cualquier tamaño y deben ser utilizables por cualquier desarrollador razonablemente capacitado. Esto es evidente al observar el tamaño de los proyectos que los utilizan. Este mismo sitio (StackOverflow.com) se construye en parte usando ASP.NET MVC, por algunos desarrolladores muy avanzados (supongo), sin embargo, hay muchos sitios mucho más pequeños que utilizan MVC construido por novatos relativos. ASP.NET vNext es la versión futura de la mayoría de estos mismos frameworks, y como tal se dirige al mismo tipo de aplicaciones y al mismo tipo de desarrolladores.

Más información

Para más información sobre ASP.NET vNext y OWIN, echa un vistazo a una entrada de blog de uno de los desarrolladores: http://whereslou.com/2014/06/10/asp-net-vnext-moving-parts-owin /

 65
Author: Eilon,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-09-11 10:10:07

Teniendo en cuenta que vNext sigue siendo un objeto de rápido movimiento de colores muy brillantes, tal como están las cosas actualmente, es una especie de "medio" agnóstico host.

La especificación de middleware que define y aplica permite una interfaz muy genérica para organizar programas. Así que la forma en que te desarrollas es la misma. Pero las aplicaciones vNext son en sí mismas servidores y, de una manera extraña, actualmente se requieren para incluir bibliotecas de pegamento para el tipo de servidor que está utilizando.

Puedes observar esto viendo que debe proporcionar qué tipo de servidor desea utilizar dentro de su archivo project.json. Si los proyectos de vNext fueran realmente agnósticos, seleccionaría un servidor a nivel de sistemas y apuntaría, montaría o iniciaría su aplicación desde el servidor elegido.

Es algo complicado debido a los ciclos de vida involucrados, después de que hayas terminado aquí, te animo a dirigirte a este problema de github en el proyecto vNext donde estoy tratando de abogar por un verdaderamente diseño desacoplado.

 -1
Author: Alexander Trauzzi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-10-05 21:22:27