2010-09-15 7 views
6

Me gustaría saber los pros y contras de la decisión de implementar una aplicación que se creó en Debug (con la tabla de símbolos de depuración) y se opuso al modo de publicación donde se eliminan los símbolos. Hay otras permutaciones como activar optimizaciones para Debug y activar los símbolos de depuración para Release.Implicaciones de implementar una compilación de depuración de una aplicación?

Las áreas que creo que puede ser motivo de preocupación son (es posible conocer a los demás):

  • Seguridad
  • Rendimiento
  • Estabilidad

Pero yo soy no soy un experto, por lo que no estoy seguro de todas las implicaciones que la implementación de una aplicación de depuración tendrá en estas áreas.

Puede que no sea relevante, pero esta aplicación es un C# .Net framework 3.5 (aplicación empresarial que gestiona terbytes de datos) para los interesados. Esta es una aplicación para un cliente (de pago).

¿Existen claras ventajas o desventajas al elegir hacer esto?

+0

¡Espero que este blog de scottgu responda tus preguntas! http://weblogs.asp.net/scottgu/archive/2006/04/11/442448.aspx Esto es para aplicaciones ASP.NET aunque. La mayoría de ellos también son ciertos para otros tipos de proyectos. – Josh

Respuesta

3

Seguridad: El código administrado de depuración y liberación como C# ya es vulnerable si no está ofuscado. Proteja su código con ofuscación, de lo contrario puede copiarse, robarse fácilmente, cualquier seguridad como el cifrado descifrado (usted mencionó en este caso Terrabytes de datos para un cliente). He respondido obfuscation question here. Además, cree un archivo de clave y firme sus ensamblajes.

Rendimiento: La depuración es definitivamente más lenta, nunca debería liberar una compilación de depuración. Si se utiliza AJAX, la solicitud de cada página será mucho más pesada ya que la versión de depuración es más grande. Establezca el indicador de depuración en falso su archivo de configuración de la aplicación, he incluido algunos recordatorios similares en este other question.

Estabilidad: La depuración utiliza más memoria y podría ser menos estable si el servidor tiene poca memoria. Una ventaja de tener dlls de depuración es que si la aplicación falla, sus archivos pdb ya estarían en su lugar. La mejor práctica es mantener la compilación de depuración en un lugar seguro para cada versión de lanzamiento que cree. Si un cliente requiere que realice una depuración, realice una copia de seguridad de su carpeta y reemplácela con los ensamblajes de depuración correspondientes.

He desarrollado un producto de archivado que también archivó Terrabytes de datos, y NO recomendaría desplegar una compilación de depuración y me aseguraría de que esté obturida, y los métodos de encriptación de archivos cifrados con Dotfuscator.

+1

+1 Con Reflector, etc., si no está ofuscado, si es Debug o Release es en gran medida irrelevante. Al igual que con System.Reflection, "privado" es solo una sugerencia. –

+0

Me gusta su idea para compilar Debug and Release y luego reemplazar cuando sea necesario +1 –

+0

Depurar no es solo más lento, es ... diferente. Si su código depende de optimizaciones, simplemente se romperá. Un buen ejemplo de esto (¡y no recomendado!) Sería verificar la pila de llamadas y esperar que la persona que llama no se haya incluido. –

1

También podría proporcionarles una compilación de versión con información de depuración.

+0

Sé que puedo hacer esto. Podría expandirse un poco más por razones de o no hacer esto –

+0

El código se ejecuta de manera optimizada, por lo que no presenta problemas de rendimiento. Pero aún obtiene algunos de los beneficios, como rastros de pila más detallados. –

+0

De acuerdo, pero hable de ello en su respuesta. –

Cuestiones relacionadas