Archivo de la categoría: Uncategorized

No utilices debug=”true” en ambientes productivos en websites ASP.NET- Don’t use debug=”true” in production environments on ASP.NET websites


Prohibido utilizar debug=”true” en ambientes productivos

Not use debug=”true” in production environments

Por qué no hacerlo?

  1.  La compilación de las páginas lleva mucho más tiempo, ya que se deshabilitan algunas optimizaciones.
  2. El código se ejecuta más lentamente ya que algunas ejecuciones en debug, ejecutan más código.
  3. Todo lo descargado por WebResources.axd no se almacena en el caché del navegador, lo que ocasiona más solicitudes entre cliente y servidor.
  4. Se cargan símbolos de depuración.
  5. Puede permitir algunas vías de ataques y la capacidad de detectarse de forma remota.
  6. Se generan más archivos temporales de ASP.NET y la compilación por lotes se desactivará, incluso si el atributo de lote es verdadero en el elemento .
  7. El System.Diagnostics.DebuggableAttribute se agrega a todo el código generado que hace que el rendimiento se degrade. El DebuggableAttribute se agrega a todo el código generado.
  8. Se utiliza dentro de la aplicación en tiempo de ejecución mucha más memoria.

 

Why don’t do it?

  1. The compilation of ASP.NET pages takes longer (since some batch optimizations are disabled).
  2. Code can execute slower (since some additional debug paths are enabled).
  3. Scripts and images downloaded from the WebResources.axd handler are not cached by the browser, resulting in more requests between client and server.
  4. Compiled with debug symbols are loaded.
  5. Debug mode may open some pathways to other exploits based on the performance overhead it places on the app and the ability to remotely detect it.
  6. You will see a lot more files in Temporary ASP.NET files folder
    Batch compilation will be disabled even if the batch attribute is true in the element.
  7. The System.Diagnostics.DebuggableAttribute gets added to all generated code which causes performance degradation.Basically, when you have debug=true, the DebuggableAttribute gets added to all generated code.
  8. Much more memory is used within the application at runtime.
Anuncios

Deja un comentario

Archivado bajo Buenas Prácticas, Uncategorized

.NET Buenas Prácticas – Namespaces


Cuando definimos el nombre de un namespace es necesario pensar en la funcionalidad que incluirá, para armar agrupadores correctos, de la siguiente forma

….

EJ:
ACME.Mobile.UI.Controls

-Use el nombre de su empresa, para evitar namespaces repetidos con otras.
-No use areas de su empresa en el nombre.
-Si agrega namespaces referidos a un producto siempre indiquelo como un namespace superior. Si la empresa ACME tiene una herramienta de base de datos llamada DATASOUL, indique: ACME.DATASOUL.Data…
-Trate de no usar nombres para el namespace que puedan ser nombres de clases u otro tipo de componente porque luego puede tener conflictos de nombres.
-No use nombres genéricos como namespaces
-Trate de no usar los mismos nombres entre distintos namespaces superiores.

1 comentario

Archivado bajo Uncategorized

.NET Buenas Prácticas – Nombres de ensamblados y librerías


Para las librerías y ensamblados es importante mantener un orden y precedencia para los nombres ya que es común que un namespace o librería tengan nombres parecidos entre diferentes proveedores. Por ejemplo, la empresa ACME hace una librería de utilidades web y la llama Utils y la empresa SOFT hace una librería de utilidades web y la llama Utils.
Por lo cual, se recomienda la siguiente nomenclatura:

 

…dll

 

EJ: ACME.Web.Utils y SOFT.Web.Utils

 

Con respecto a la sección o precedencia de namespaces, dependerá como se organicen los componentes. Por ejemplo Microsoft define:

 

System.Web.dll contiene los namespaces que comienzan por: System.Web

 

Pero por otro lado, también tiene ensamblados separados del mismo namespace:

 

System.Web.Services.dll
System.Web.Mobile.dll

 

Con lo cual, es importante definir a que harán referencia los nombres de los ensamblados o determinar la mejor forma de agrupar los namespaces.

 

Para más información ver el post de .NET Buenas Prácticas – Namespaces

1 comentario

Archivado bajo Uncategorized

.NET Buenas Prácticas – Nomenclatura General


 

Los siguientes son los convenciones generales que existen para elegir los nombres de los elementos de nuestro software:

 

 

  • Elegir nombres fáciles para la lectura y su compresión. EJ: En vez de SizeOfBorder, es más simple y compresible BorderSize.

 

  • Darle prioridad a la lectura y compresión que a la síntesis. EJ: En vez de Erasable, es mejor, CanDeleted

 

  • No usar caracteres no alfanuméricos

 

  • No usar anotación hungara (hay muchos que todavia la usan!!)

 

  • No use palabras claves que pueden confundirse o causar problemas con la sintaxis del lenguaje

 

 

 

 

1 comentario

Archivado bajo Uncategorized

Validar CUIT/CUIL para Argentina desde una función en SQL Server – Validate Argentinian CUIT/CUIL from SQL Server function


IF EXISTS (
SELECT
*
FROM
sys.objects
WHERE
object_id = OBJECT_ID(N'[dbo].[fn_ValidarCUIT]’) AND type in (N’FN’, N’IF’, N’TF’, N’FS’, N’FT’)
)
begin
drop function fn_ValidarCUIT
end
GO

create function fn_ValidarCUIT (@cuit varchar(13))
returns  bit
as

begin
declare @verificador int
declare @resultado int = 0
declare @cuit_nro varchar(11)
declare @validacion bit
declare @codes varchar(10) = ‘6789456789’

set @cuit_nro = REPLACE(@cuit, ‘-‘, ”)

if isnumeric(@cuit_nro) 1
begin
return 0
end

if len(@cuit_nro) 11
begin
set @validacion = 0
end

set @verificador = RIGHT(@cuit_nro, 1)

declare @x int = 0

while @x < 10
begin
declare @digitoValidador int = convert(int, substring(@codes, @x + 1, 1))
declare @digito int = convert(int, substring(@cuit_nro, @x + 1, 1))
declare @digitoValidacion int = @digitoValidador * @digito
set @resultado = @resultado + @digitoValidacion
set @x = @x + 1
end

set @resultado = @resultado % 11

If @resultado = @verificador
begin
set @validacion = 1
end
else
begin
set @validacion = 0
End

return @validacion
end

2 comentarios

Archivado bajo Uncategorized

Crear PDF a partir de HTML Con ItextSharp – Convert HTML to PDF (with ItextSharp)


public void HTMLToPDF(string html, string fullDestinyFilePath)
        {
            StringWriter sw = new StringWriter();
            sw.WriteLine(html);
            StringReader sr = new StringReader(sw.ToString());
            Document pdfDoc = new Document();
            HTMLWorker htmlparser = new HTMLWorker(pdfDoc);
            PdfWriter.GetInstance(pdfDoc, new FileStream(fullDestinyFilePath, FileMode.Create));
            pdfDoc.Open();
            htmlparser.Parse(sr);
            pdfDoc.Close();
        }

Deja un comentario

Archivado bajo Uncategorized

Hello world!


Ahora un blog de desarrollo y arquitectura de software.

😀

1 comentario

Archivado bajo Uncategorized