2009-06-15 21 views
11

Donde trabajo, hacemos un número muy grande de aplicaciones ASP.NET muy pequeñas, y ha ocurrido algunas veces que los sitios se han implementado en formato precompilado, y la aplicación necesita ser cambiada, pero la versión del código está disponible en el control de la fuente está desactualizado y el desarrollador no está disponible. El archivo DLL de la aplicación tiene que descompilarse y volverse a piratear.¿Debo precompilar los sitios de ASP.NET 2.0 antes de la implementación o no?

Idealmente, nunca sucederá que un desarrollador apresure un cambio a través de pruebas y producción y saltee la verificación del cambio, desde entonces hemos realizado cambios en nuestras políticas para evitar que esto ocurra, pero me pregunto si la sobrecarga de compilar un El sitio en el servidor siempre que se reinicie el grupo de aplicaciones es un problema lo suficientemente grande como para evitar cargar nuestro código directamente al servidor. Sería más fácil verificar la versión en control de fuente que la versión real en vivo si pudiéramos descargar la fuente en vivo.

¿Cuáles son las ventajas de precompilar VS cargando archivos cs directamente al servidor y compilarlos allí?

+9

Si tiene desarrolladores que realizan cambios directos en el código de producción, omitiendo el control de origen y su proceso de lanzamiento estándar, tiene problemas mucho más grandes que preocuparse por la precompilación. – ahockley

+2

De acuerdo, pero estoy tratando de hacer mejoras donde puedo. Tener problemas organizativos más grandes que no puedo resolver no es razón para no molestarme con cosas que puedo influenciar en mi nivel. – NetHawk

Respuesta

0

Depende del tamaño de las aplicaciones y la frecuencia de uso. Si se usa con la frecuencia suficiente para que el conjunto de aplicaciones solo se recicle al final del día, puede valer la pena esperar un breve tiempo en el primer lanzamiento por la mañana. Si solo recibe un golpe cada 30 minutos, forzando una recompilación cada vez, puede valer la pena precompilarse.

Por supuesto, si se trata de una aplicación muy grande que tarda un tiempo en compilar en la primera ejecución, me inclino por la precompilación, especialmente si no se usa constantemente.

+1

Tengo una serie de aplicaciones ASP.net en la intranet local. Todos ellos se implementan como código fuente. Algunos de ellos son bastante poco utilizados. Pero después de la primera compilación, siempre parecen surgir muy rápido. ¿Tiene alguna fuente de información sobre un tiempo de espera de caché de 30 minutos? Mi experiencia parece indicar lo contrario. – recursive

+0

El grupo de aplicaciones se recicla después de 20 minutos, por lo que pulsarlo justo después de eso significa que obtiene el golpe de inicio/compilación –

+0

Las aplicaciones no son muy grandes, solo unas pocas páginas y conjuntos. Intenté acceder a algunos en el servidor que no fueron precompilados y recién implementados. El tiempo que lleva acceder a esos fue notable (lo estaba buscando), pero no tan malo. La mayoría de ellos tampoco ve mucho acceso. – NetHawk

0

La principal ventaja es la compilación del rendimiento en el servidor web. También protege su código, porque es más difícil leer el código del ensamblado :-)

+0

Protege tu código de quién? ¿El cliente? –

+2

En realidad, Ishtar, es casi trivial descompilar un ensamblado .NET con Reflector. Dado que el servidor web no sirve archivos que deberían estar protegidos en ASP.NET, como archivos .cs y su configuración web, ¿es realmente una gran ventaja? Acepto que el rendimiento es la preocupación más popular. Gracias por tu respuesta. – NetHawk

+0

Todos los programas se pueden descompilar. Pero es "más difícil" leerlo. Si ha publicado proyectos sin compilar, cualquier persona puede leer directamente y modificar su código. –

1

Desde el punto de vista de la facilidad de uso, simplemente me gusta cargar los archivos fuente al servidor y olvidar precompilar.

Esto es lo que hago para todos los sitios que administro, incluso los más grandes. Trato de crear el hábito de tocar las partes más importantes de la aplicación para asegurarme de que todo funciona (y compilarlas mientras estoy en ello).

Y aquí hay otro pensamiento. Si el sitio es público, puede dejar que w3c link checker lo suelte. Esto tendrá el efecto de compilar cada página que golpea. Y es algo bueno de todos modos para garantizar que no tenga ningún enlace roto.

En pocas palabras, supongo que estas comprobaciones de rutina casi eliminan el problema de la compilación de primera visita lenta de los usuarios. Y como es una buena rutina seguirla de todos modos, me ha funcionado bien.

+0

Gracias, Steve. ¿Cada página se compila por separado? Parece que el golpe de rendimiento es todo en la primera solicitud. – NetHawk

+0

Los archivos aspx se compilan por separado. En la configuración típica, los códigos subyacentes no lo son, ya que están enrollados en una DLL. –

0

subo archivos sin precompilar: de esta manera, ya que mi código es muy verde, poderlo corregir con Notepad ++ directamente desde el servidor

Además, Visual Web Developer 2008 (el libre) no tiene la opción de compilación :-P

8

No estoy de acuerdo con la mayoría de las respuestas dadas a este punto. Hay muchas ventajas de precompilar sobre la publicación ad-hoc de archivos, una de las cuales es que el código en los entornos de producción y prueba permanece más o menos sincronizado. La compilación previa garantiza que el código que ha probado es el código que va a la producción cada vez.

El problema con el que se está ejecutando no es de compilación previa a compilación de primera ejecución. En cambio, proviene del tipo de control de fuente que está utilizando. Si tuviera que adivinar (y lo hago), diría que está ejecutando Visual SourceSafe.Si fuera a cambiar a un sistema de control de fuente que hiciera que la bifurcación y la fusión fueran triviales, podría separar su código en las ramas stable y development. Las correcciones de errores suceden contra las ramas dev (que luego se fusionan a la rama stable una vez validado). De esta forma, el código no probado o no listo para el horario de máxima audiencia no termina en el servidor de producción y usted siempre tiene una copia del stable configurada para que funcione.

+0

Gracias, Rob. Estoy votando esto como un buen contrapunto y definitivamente útil. Esto parece un buen proceso, y todo nuestro sistema aquí es realmente ad-hoc. Tiene razón en que usamos SS aquí, y me encantaría usar algo mejor. – NetHawk

2

La primera cosa que viene a la mente es:

  1. Secretos Comerciales Cuestiones
  2. Problemas de seguridad
  3. Sloppy Joe Moe el (perezoso, quiero descuidado y lamentable ser desarrollador)
  4. Ad Hoc Hackear el código que está fuera de control.

    • precompilado Código segura y eficiente se ejecuta en el .Net Framework en un formato administrado.
    • UnCompiled El código es implementado por los novatos que no se tomaron el tiempo para considerar que los numerosos problemas asociados con el código no seguro se ejecutan de manera menos eficiente para el usuario final.

usuarios finales son partes interesadas y son objeto de responsabilidades fiduciarias de un desarrollador. Los desarrolladores deben aprovechar todas las oportunidades para mejorar la eficiencia de sus productos.

DESCARGO DE RESPONSABILIDAD: Estos comentarios se expresan "como están" y no me importa si me deletreas el día.

Sinceramente,

DrFunkie

mún abecedario, pero muy bueno desarrollador. :)

Cuestiones relacionadas