Que pasa cuando detengo, inicio o reciclo un sitio web o los pool de aplicaciones en el IIS.

Publicado en IIS con etiquetas , , , , el Febrero 6, 2010 por Alex

Deteniendo un sitio Web:

En el IIS 7 no se tiene la opción de pausar el sitio a web asi que lo único que podemos hacer es detenerlo con esto conseguimos que el sitio deje de escuchar a nuevos request , y para cualquiera que se quiera conectar al sitio web será como si este no existiera, aun asi las aplicaciones cargadas en los worker process que dan servicio al sito web permanecerán si ser afectados , esto nos da la oportunidad de evitar que nuestro sitio web reciba nuevas peticiones sin afectar el estado de las aplicaciones, por lo que al iniciar de nuevo el sitio web se continuara con el procesamiento de las peticiones que se estaban realizando.

> %windir%\system32\inetsrv\AppCmd Stop Site MySite

Deteniendo un pool de aplicaciones:

Con esto logramos que el iis de la orden de apagar todos los worker process que estaban sirviendo a las aplicaciones que trabajaban con ese pool esto impide por supuesto que se puedan iniciar nuevos worker process y que se pierda el estado de las aplicaciones hospedadas por dichos worker process .

A momento de apagarse los worker process estos deben de drenar todos los request que estuviesen manejando, por otro lado si después del tiempo limite configurado para el pool ( shutdownTimeLimit ) todos los woker process no se han apagado serán forzado a hacerlo.

Mientras el pool este detenido todas las peticiones que se hagan a las aplicaciones de dicho pool devolverán un error 503.

> %windir%\system32\inetsrv\AppCmd Stop Apppool MyAppPool

Arrancando un sitio web:

Con esto logramos que nuestro sitio web sea capaz de escuchar peticiones de nuevo y reanudar las aplicaciones que tenia cargadas en los worker process.

> %windir%\system32\inetsrv\AppCmd Start Site MySite

Arrancando el pool de aplicaciones:

Con esto logramos habilitar al iis para crear nuevos worker process a medida que se necesario.

> %windir%\system32\inetsrv\AppCmd Start Apppool MyAppPool

Reciclando el pool de aplicaciones:

Esto produce el apagado de todos los worker process en el pool pero permite la creación de nuevos worker process en función de los nuevos request que reciba la aplicación.

Cuando usar ASP.NET MVC

Publicado en MVC, Test Drive Development, arquitectura con etiquetas , , el Febrero 3, 2010 por Alex

El framework ASP.NET MVC fue creado por Microsoft con la idea de proveer a los desarrolladores de aplicaciones web mayor control sobre el html, crear URLs intuitivas de manera mas potente, lo cual ayuda a posicionar mejor las paginas asp.net en los motores de búsqueda, mantener el SoC (separation of concerns) de una manera mas clara y limpia de manera que las aplicaciones sean mas fáciles de mantener y extenderse,  y por ultimo y uno de los aspectos mas importante el ASP.NET MVC nos permite llevar un desarrollo guiado por pruebas (for test-driven development) facilitándonos la creación y ejecución de las pruebas unitarias.

Ahora bien la idea de ASP.NET MVC no es ser un sustituto para las tradicionales aplicaciones basadas en web forms sino aportarnos otra opción mas al momento de realizar nuestros proyectos web por lo tanto la única manera de poder decidirnos entre uno y otro es analizar sus ventajas y desventajas y en base a eso tomar nuestra decisión.
Seguir leyendo

Mantener las estadísticas actualizadas en Sql Server.

Publicado en SqlServer, rendimiento con etiquetas , , , el Enero 29, 2010 por Alex

Las estadísticas son uno de los factores más importantes de una base de datos, ya que contiene información acerca de cómo se distribuyen los datos en los objetos de base de datos (tablas, índices, etc.) El hecho de que las estadísticas no estén actualizadas es una de las razones por la que no se genere un plan de ejecución optimo y por lo tanto que nuestras consultas contra base de datos no tengan el mejor rendimiento.

Para saber cuándo fue la última vez que se actualizo alguna estadística se puede ejecutar la siguiente consulta :

Seguir leyendo

Plantillas de Sql Server Profiler

Publicado en SqlServer, rendimiento con etiquetas , , , el Enero 24, 2010 por Alex

Cuando utilizamos  el Sql Server Profiler  este nos da la opción de utilizar plantillas ya predefinidas  que podrían adaptarse a nuestras necesidades.  A continuación les dejo una tabla que explica de manera resumida cuando es conveniente  utilizar estas plantillas y los eventos que captura.
Seguir leyendo

Introducción a Scrum y por que debes usarlo

Publicado en Estandares, Metodologias de Desarrollo, Test Drive Development con etiquetas , el Enero 24, 2010 por Alex

La historia de Scrum nace en japon  en 1986 debido a un estudio que esperaba desarrollar procesos exitosos en la creación de nuevos productos, pero no fue hasta 1993 cuando se realizo el primer proyecto de desarrollo de software basado en Scrum hasta que en 2001 un grupo de personas decidieron realizar el manifestó agil, cuyos fundamentos exponen lo siguiente:

  • Individuos e interacciones más que procesos y herramientas.
  • Software que funciona más que documentación exhaustiva.
  • Colaboración con el cliente más que negociación de contratos.
  • Responder ante el cambio más que seguimiento de un plan.

Seguir leyendo

Limitando la cantidad de memoria utilizada por el SQL Server

Publicado en SqlServer con etiquetas , , , el Enero 17, 2010 por Alex

Limitar la memoria que puede usar nuestro servidor SQL Server es muy útil en los casos en que dicho servidor también preste otros servicios como por ejemplo ser servidor de archivos o necesite correr otros servicios que demanden cierta cantidad de memoria.

Los pasos son los siguientes.
Seguir leyendo

Vulnerabilidades web

Publicado en Seguridad con etiquetas , el Enero 17, 2010 por Alex

La empresa Cenzic realizo recientemente un reporte sobre la seguridad de las aplicaciones web, el reporte puede ser visto aquí en formato pdf.

vulnerabilidades web por clases.

Fundamentos de clúster de servidor

Publicado en Aplicaciones Distribuidas, Escalabilidad, arquitectura con etiquetas , , el Diciembre 10, 2009 por Alex

En Windows Server 2008, se puede configurar tres tipos de grupos de servidores para el equilibrio de carga, escalabilidad y alta disponibilidad. En primer lugar, un grupo round-robin de distribución es un conjunto de equipos que utiliza DNS para proporcionar equilibrio de carga  con los requisitos de configuración mínimos. A continuación, una Network Load Balancing (NLB) (también llamado una granja NLB) es un grupo de servidores que se utilizan no sólo para proporcionar equilibrio de carga, sino también para aumentar la escalabilidad. Por último, un clúster de conmutación por error (failover cluster) puede utilizarse para aumentar la disponibilidad de una aplicación o servicio en el caso de una falla en el servidor.

Seguir leyendo

Sql Azure la base de datos en la nube

Publicado en Asp.net, SqlServer con etiquetas , el Noviembre 23, 2009 por Alex
SQL Azure nos permite desarrollar bases de datos relacionales en la nube construida sobre la tecnología SQL Server, esto nos permite construir aplicaciones de mediano tamaño que puedan escalar fácilmente y que tenga una alta disponibilidad, SQL Azure tiene completo soporte para T-SQL ademas que nos libra de la necesidad de instalar software o realizar la administración física de la base de datos, esto al mismo tiempo se traduce en una disminución de los costos de despliegue y mantenimiento.

Seguir leyendo

Comandos útiles en IIS utilizando AppCmd

Publicado en IIS con etiquetas , el Noviembre 4, 2009 por Alex

appcmd_backup

Devuelve una lista  de los  Web sites en el servidor local

AppCmd list site

Agrega un nuevo Web site llamado TestSite01

AppCmd add site /name:TestSite01

Devuelve una lista con las peticiones actuales del servidor Web

AppCmd list request

Devuelve el contenido completo del archivo de configuración del servidor Web en formato XML

AppCmd list config

Crea un backup de la configuración del IIS

AppCmd add backup “BackupName”

Restaura un backup de la configuración del IIS

AppCmd restore backup “BackupName”

Devuelve una lista de los backup de configuración del IIS que han sido creados

AppCmd list backups

Mas comandos aquí.