2008-09-19 7 views
50

He descubierto que en algunas ocasiones puedo editar el origen mientras se depura, ¿hay alguna otra ventaja de usar el servidor web incorporado de Visual Studio en lugar de un directorio virtual en IIS?¿Cuáles son las (des) ventajas de usar Cassini en lugar de IIS?

Estoy usando Windows XP en mi entorno de desarrollo, y una instancia local de IIS 5. Trabajo en varios proyectos, así que utilizo múltiples directorios virtuales para administrar todos los sitios diferentes.

¿Hay alguna desventaja?

Respuesta

57

El servidor web incorporado para Visual Studio se llama Cassini y aquí están algunas de sus limitaciones ...

  • Puede alojar una sola aplicación ASP.NET por puerto.
  • No es compatible con HTTPS.
  • No es compatible con la autenticación.
  • Responde solo a las peticiones de localhost .
  • inicio lento en comparación con IIS
+0

Se corrigieron los saltos de línea con viñetas y se votó en sentido ascendente por los https y los comentarios de autenticación (las respuestas por separado le darían dos votos). –

+2

LOL, los arreglé también :) – pdavis

+0

"Responde solo a las peticiones del localhost" ... ¡no puedo enfatizar eso lo suficiente! Eso lo hace bastante inútil para servicios web reales – mcjabberz

1

Si trabaja como hobby en casa con XP Home, no puede instalar IIS localmente.

+2

Creo que el instalador de MS Web Platform elimina esta limitación (pude instalar IIS en Vista Home) –

+2

@Dan Finch Vista Home puede ejecutar IIS. XP Home no puede. –

0

Instale IISAdmin, y puede configurar sitios separados en IIS 5, en lugar de utilizar directorios virtuales.

+0

Aunque solo se ejecuta de a uno por vez. –

+0

eso es una gran desventaja y no es realista, solo use IIS y puede hacer lo que quiera, tener lo que esté funcionando. – PositiveGuy

5

El servidor integrado funciona bien para las grandes corporaciones que no desean otorgar a los desarrolladores ningún acceso de administrador en sus propias máquinas para configurar IIS.

+2

Lo siento, pero ¿por qué demonios una empresa (de cualquier tamaño) querría hacerle eso a un desarrollador? Eso es estúpido.Evite que usemos herramientas nativas que todo desarrollador necesita saber; en este caso, comprender y conocer mejor a IIS, que es esencial y le ayuda a ser un mejor desarrollador web, y cuando conoce bien IIS, ahorra horas de depuración de su aplicaciones web. – PositiveGuy

+0

@CoffeeAddict Yo trabajo en una de esas compañías. Puedo ver cómo la seguridad corporativa piensa que es una gran idea, pero como desarrollador realmente se interpone en mi camino. Afortunadamente, permiten excepciones para los desarrolladores que están dispuestos a pasar por suficientes aros (siempre pasé por esos aros). – Zarepheth

1

El servidor integrado no es tan configurable, y se ejecuta en un puerto impar, por lo que si usted cuenta con un comportamiento específico, puede ser problemático.

+2

Es posible configurar el puerto en VS. Proyecto-> Propiedades-> Puerto específico – pdavis

-1

Si su proyecto reside en el directorio IIS todavía se puede editar el código, sólo depende de si ha sido o no publicada. Te encontrarás con problemas en el Cassini vs IIS cuando estés depurando ciertos escenarios basados ​​en permisos, como la autenticación kerberos y ntlm, así como problemas como la compresión del servidor, etc. En general, la Cassini está bien para desarrollar, pero asegúrate de hacerlo. pruebas exhaustivas cuando se publica en IIS.

+0

por qué realizar la prueba más adelante cuando puede realizar pruebas en IIS, ¿qué hay? realmente va a ejecutar su código para todos ASP.NET de todos modos? solo para que pueda ahorrar 2 segundos cada vez que quiera depurar No es una buena solución ... ahorra más problemas y, al final, aprendes más utilizando el período IIS. – PositiveGuy

2

Si 'referencia web' la url de servicios web que se encuentran en el servidor web incorporado, el puerto puede cambiar. A menos que haya establecido un "Puerto específico" mencionado en la página de opciones Proyecto-> Propiedades.

Esto es algo a lo que me he acostumbrado ahora. Siempre configuro un puerto específico. Ahora, cuando a veces el servidor web falla (he tenido que suceder), simplemente cambio el número de puerto, y todo está bien. Creo que reiniciar también arreglará esto.

+0

dolor en el trasero, use IIS. – PositiveGuy

2

El servidor integrado significa que el desarrollador no tiene que saber cómo configurar IIS para probar su sitio.

Se podría argumentar que esto es una desventaja, y que un desarrollador de Windows debe saber al menos tanto IIS. O podría argumentar que un desarrollador que no es un administrador de sistemas no debería estar jugando con el servidor web en absoluto.

+0

ENGAÑA ENORME. Debe saber IIS ... es fundamental para su trabajo. Totalmente de acuerdo. Es por eso que nuestra profesión tiene desarrolladores tan tontos ... porque confiamos en la basura de blackbox como Cassini en lugar de aprender código real o en este caso relacionado con el servidor web real (IIS), que es lo que .NET ejecuta para la web. ¿Por qué querrías usar cualquier otra cosa que no sea IIS cuando ese sea el caso? Ojalá a MS nunca se le ocurriera esta estúpida basura "fácil" como siempre lo hacen ... solo nos perjudica como profesionales haciéndonos más tontos. – PositiveGuy

0

El servidor web incorporado es un poco menos robusto que IIS, pero no requiere configuración, por lo que es solo una compensación.

Es posible que no siempre desee que sus proyectos de desarrollo estén expuestos en su servidor IIS (incluso su servidor IIS local), por lo que el servidor integrado es bueno para eso.

Sin embargo, si su aplicación va a acceder a recursos fuera de la norma para una aplicación web, entonces puede desear depurar con frecuencia en IIS para que su aplicación se ejecute con permisos restringidos y pueda ver dónde estarán los puntos débiles .

5

El servidor web de Visual Studio es menos tolerante con // en la ruta.

Se negará a servir un enlace como: http://localhost:52632/main//images/logo.jpg donde IIS hará.

Eso es bastante oscuro pero significa que tenemos que arreglar mucho para deshacerse de todas las ocurrencias //.

2

Cassini tampoco admite páginas ASP clásicas. Este es solo un problema para los proyectos heredados donde todavía existen viejas páginas ASP (como nuestra aplicación web en el trabajo).

+0

a quien le importa el asp clásico ... deberían ser convertidos por ahora. – PositiveGuy

+1

@CoffeeAddict: Te sorprenderías. La mitad de las compañías en San Francisco se ejecutan en aplicaciones de infraestructura construidas en los años 90 que no han sido mejoradas desde entonces. –

3
  • Usted necesita tener funcionando a usarlo (en circunstancias normales)

  • Sólo responde a localhost por lo que Visual Studio le puedo dar el enlace http://simon-laptop:37473/app1 a un amigo para ver su sitio en la red

  • Desventaja grande: es más difícil obtener fiddler funcionando porque el tráfico del localhost no se envía a través del proxy.

Editar: usando http://ipv4.fiddler:37473 es la mejor manera de conseguir violinista trabajar con él.

+1

puede engañar a Fiddler para que vea el tráfico local al agregar un punto antes de los dos puntos y el puerto en su url .. example http://localhost.:1234/MyApp O utilizando el paso de violinista http: //ipv4.fiddler : 1234 –

+1

En realidad, puede ejecutarlo desde la línea de comandos, por lo que no necesita la ejecución de Visual Studio. –

1

A menudo tomo lo mejor de ambos mundos y creo una aplicación en IIS, y uso el servidor web incorporado para una depuración más eficiente.

1

Cassini es un servidor web de prueba ligero. La idea es que un desarrollador no necesita tener IIS instalado y configurado para probar su aplicación. Usa IIS si eres más familiar con él y lo tienes configurado y tu caja puede manejarlo. Cassini no pretende ser un reemplazo.

+0

muchas gracias. NO UNA GENTE DE REEMPLAZO. – PositiveGuy

0

También hemos visto algunos problemas con el servidor integrado VS en relación con algunos controles de terceros que ponen sus scripts en la carpeta \ aspnet_client. Como la carpeta no está allí cuando no se está ejecutando en IIS, los controles no funcionaron. Parece mucho más simple trabajar siempre con IIS y evitar problemas extraños.

16

Todas las respuestas anteriores son excelentes respuestas - aquí hay una pregunta con Cassini que podría requerir IIS en el destkop.

Cassini se ejecuta en el contexto del desarrollador, no como el usuario de IIS (IUSR_, IWAM o en WinXP x64, el proceso w3wp). Esto puede ser un poco doloroso si tiene un sitio web que está accediendo a archivos externos o creando archivos temporales. Es más evidente cuando su desarrollador se está ejecutando como administrador de su escritorio.

Cuando te mueves al servidor IIS, algo a lo que tendrías acceso en Cassini no funciona igual. Normalmente, CACLing con IIS_WPG es todo lo que se necesita para solucionarlo, pero si el desarrollador no está pensando en esto, se frustrará rápidamente con su implementación.

9

Cassini no admite directorios virtuales

0

Una diferencia que he encontrado es que el servidor de desarrollo se encarga de subir archivos de forma diferente que hace IIS. No se puede interceptar el error si el archivo que se está cargando es más grande que su configuración Max_File_Size. La página simplemente muere y devuelve 500.

5

Otra desventaja con la que me he encontrado es en un sitio web autenticado de Forms que usa IPrincipal/IIdentity personalizado. Cassini cambiará el AppDomains sin previo aviso (o aviso).

Compruebe esto blog post para más. El dolor de cabeza en esto me hizo soltar Cassini y quedarme con IIS.

2

Usted no puede utilizar directorios virtuales :(

1

Cuando se utiliza IIS en Vista o Windows 7 con UAC habilitado, debe ejecutar Visual Studio con derechos administrativos. Si lo hace, no puede arrastrar una caída de shell para Visual Studio (incluso si se ejecuta una instancia de explorer.exe como administrador).

por esta razón utilizo Cassini para la mayoría de los proyectos.

+1

tal vez alguien debería comenzar una nueva pregunta "¿Cuáles son las (des) ventajas de usar Cassini en lugar de IIS en Vista/Win7?" porque este es un cambio de juego, es decir, en XP, la mejor opción es IIS, pero no es tan obvio en Win7 –

0

Otra des-ventaja es que se envía cada petición a través de la gloabal asax file que incluye todas las solicitudes de imágenes y hojas de estilo. Esto significa que si tiene un código allí, cosas con los nombres de los archivos, como una búsqueda, luego los archivos auxiliares se procesarán también.

1

FYI, Windows XP de 64 bits viene con IIS 6.

7

Parece que una tercera opción es muy pronto: IIS Express.

1

Este es un hilo viejo que comenzó hace 2 años. Me encontré con UtilDev Cassini mientras buscaba en Google. Me parece prometedor Al menos tiene la capacidad de ejecutar múltiples sitios simultáneamente. Esa característica es realmente útil para mí, porque trabajo en 2 sitios diferentes y tengo que cambiar continuamente entre ellos usando IIS.

+1

tipo, solo usa IIS y sigue adelante. Aprenderlo. – PositiveGuy

1

Aquí una razón para una tercera vía: UWS Pro aunque es probablemente más cerca de IIS de Cassini (aunque inspirada por Cassini y es parte del proveedor del tenedor UltiDev Cassini), su propósito principal es ser redistributable junto con ASP.NET aplicaciones. enter image description here

+2

solo usa IIS, ¿por qué usar cualquier otra cosa? – PositiveGuy

0

También a través de IIS, no tiene que preocuparse por recordar automáticamente y establecer un número de puerto estúpido en su url localhost. Eso es algo funky con el que se confía directamente Cassini ... un gran dolor en el culo. ¿Quién quiere recordar algún número de puerto externo? Simplemente ejecute el maldito sitio en IIS..plain y simple.

Cuestiones relacionadas