Evento de Microsoft en El Paso

lunes 28 de enero de 2008 | categorías: , | 1 comentarios -- da clic aquí para dejar el tuyo

Dado que no sé si el grupo de usuarios de .NET de El Paso ya pasó a mejor vida, les paso información de un evento que realizará Microsoft este próximo jueves.  Se me hizo interesante, ya que últimamente he estado hablando de IIS 7 y ASP.NET:

MSDN Events: What’s New in IIS7 and Extending ASP.NET 2.0 Application Services

Thursday, January 31, 2008 12:00 PM - 4:00 PM
Welcome Time: 11:30 AM

Theater - Cinemark Tinseltown USA

11855 Gateway West
El Paso Texas 79936
United States

Para registrarse y obtener más detalles sobre el evento, vayan a la siguiente dirección:

http://msevents.microsoft.com/cui/EventDetail.aspx?culture=en-US&EventID=1032359805

Tengan en mente que este evento es en inglés (que igual no es problema).  También tomen en cuenta que aunque la página de registro dice que es de 1PM a 5PM, esto es tiempo del Centro así que sería de 12PM a 5PM tiempo local.

Les resalto los temas que me parecieron interesantes:

Session 1 | Safer, Smarter, Stronger: What’s New for Web Developers in IIS7

  • Authentication methods and integration between ASP.NET and IIS 7
  • Writing IIS managed handlers and modules
  • How the IIS protocol listeners support hosting WCF services on TCP, Named Pipes and more
  • IIS handler permissions, request filtering and administration lists
  • How the XML replacement for the Metdata Config file makes it easy to duplicate Web servers
  • Features and protocols that make IIS 7 secure right out of the box

Session 2 | Extending ASP.NET 2.0 Application Services

  • Membership, role and profile provider overviews
  • How to configure the built-in providers and use the basic login, role and navigation controls
  • How to create and integrate a custom provider
  • Using application services from AJAX and Silverlight clients
  • Using ASP.NET 3.5 client application services from a Windows client.

Espero verlos ahí. smile_shades

¿Dónde quedó el usuario ASPNET en Windows Vista? ¿Y qué $#!N&@2 es eso de los Application Pools?

viernes 25 de enero de 2008 | categorías: , , , | 0 comentarios -- da clic aquí para dejar el tuyo

Hoy aprendí algunas cosas más al continuar con mis aventuras de desarrollo ASP.NET en Windows Vista.  Muchas de estas cosas aparentemente no son nuevas, vienen desde IIS 6 que era la versión incluida con Windows Server 2003, pero yo nunca los usé, así que hasta ahora me vengo enterando.

La primer lección salió cuando andaba buscando el usuario ASPNET de mi máquina para asignarle permisos de escritura sobre un directorio donde mi aplicación permite que los usuarios suban archivos.  Después de un rato de jugar Where's Waldo con el usuario, me convencí que simplemente no existía.  Resulta que el ASP.NET Worker Process—el proceso bajo el cual se ejecuta el código de ASP.NET—corre ahora por default bajo la cuenta NETWORK SERVICE (aunque esto se puede cambiar fácilmente).  Ah, y por cierto, el Worker Process ahora se llama w3wp.exe, en lugar de aspnet_wp.exe.

La segunda lección vino cuando quise correr mi aplicación.  Resulta que si usas módulos HTTP (<httpModules>) en tu web.config, recibirás un mensaje de error porque IIS 7 intenta correr las aplicaciones por default en un Application Pool llamado—duh—DefaultAppPool, y éste tiene un Managed Pipeline Mode puesto a Integrated.

¿Güat?  A ver si me puedo explicar.  Si abres la consola administrativa de IIS y te vas a Application Pools, verás algo como esto:

De cajón, Vista traía los dos primeros—Classic .NET AppPool y DefaultAppPool.  El tercero fue creado cuando instalé SQL Server Reporting Services, así que por ahora ignóralo.

Lo primero que me pregunté fue ¿qué $#!N&@2 demonios es eso de los Application Pools?

Resulta que es una manera muy padre de segregar y asignar una aplicación Web—o más correctamente su Application Domain—a un Worker Process determinado.  Un Pool puede tener varios AppDomains, y estos estarán separados de los que corran en otros pools. Considera este ejemplo:

 

Aquí tenemos tres aplicaciones de ASP.NET, cada una con su directorio virtual.  Las primeras dos están asignadas al primer Application Pool, y la tercera aplicación está asignada al segundo.  Esto es EXCELENTE por varias razones:

¿Que pasaba antes si una falla en una de las aplicaciones web hacía que se reciclara el Worker Process?  Pues todas las aplicaciones se "reiniciaban"—botando posiblemente a las sesiones y todo el show—porque los Application Domains están corriendo en el mismo proceso ejecutable. Me ha pasado. Teníamos una applicación Web corriendo en el mismo servidor que un servicio Web (en una máquina con Windows 2000 si mal no recuerdo), y de vez en cuando la aplicación hacía que se reciclara el Worker Process—maldito Crystal Reports—llevándose entre las patas al Web Service.  Ahora es posible asilar ese tipo de fallas.

¿O qué pasaría si quiero correr una aplicación de ASP.NET v1.x en el mismo servidor que una de ASP.NET v2.x?  Un Worker Process solo puede correr una versión del .NET Framework, hasta donde sé, así que con Application Pools ahora puedes lograrlo.

Y más relevante para el problema que yo tenía, IIS 7 tiene una manera distinta de manejar los httpModules—llamado Managed Pipeline Mode. DefaultAppPool usa Integrated. Así que lo que tenía que hacer en mi caso era asignar el directorio virtual de mi aplicación al Classic .NET AppPool que utiliza el modo Classic, para no tener que cambiar la configuración (y posiblemente código) de mi aplicación.

Si inspeccionas las opciones avanzadas de un Application Pool te das cuenta que puedes configurar cosas interesantes. 

Las que me llamaron la atención fueron:

  • .NET Framework Version. Para seleccionar qué versión quieres utilizar para las aplicaciones Web que corren en el Pool, o si no quieres permitir que corra código administrado (p.ej. una aplicación de ASP clásico o PHP que no tenga nada que ver con .NET).
  • Managed Pipeline ModeIntegrated utiliza el modo IIS 7, donde la configuración de los httpModules están centralizados y supuestamente tiene varios beneficios que aún no conozco; Classic permite que cada aplicación web mantenga su configuración.
  • Identity.  La cuenta de usuario y bajo el cual corre el Worker Process. Esto afecta directamente los permisos de seguridad de las aplicaciones en el Pool.  Los valores posibles son: NetworkService, LocalService, LocalSystem, SpecificUser; este último por si quieres especificar una cuenta creada por ti.
  • Identity Specific User Credentials.  Para poner las "credenciales" (el password pues) del usuario si usas Identity=SpecificUser.
  • CPU Limit, Limit Interval y Limit Action.  Sirven para limitar el porcentaje de CPU que consume el Worker Process en un tiempo determinado y hacer algo si se excede, como por ejemplo, matarlo.
  • Private Memory Limit y Virtual Memory Limit.  Sirven para limitar la memoria real y virtual que utiliza el Worker Process. ¿Alguna vez le has pegado a un System.OutOfMemoryException? Yo si, y no es divertido.

Una vez que comencé a entender este rollo, asignar mi aplicación al Pool correcto fue súper sencillo.  Simplemente te vas a las opciones avanzadas de tu directorio virtual y lo cambias.

 

Enjoy smile_shades

Cómo configurar IIS 7 en Windows Vista para desarrollar con Visual Studio 2005 y SQL Server 2005

martes 22 de enero de 2008 | categorías: , , , , , | 0 comentarios -- da clic aquí para dejar el tuyo

Aunque Windows Vista ya tiene más del año que salió, apenas hasta estos días pude migrar mi máquina primaria de trabajo a este sistema operativo—solo digamos que la empresa para la que chambeo es muuuuuuy cautelosa con este tipo de cambios.  Y aunque también ya salió Visual Studio 2008, aún tengo que utilizar la versión 2005.

Desarrollo principalmente aplicaciones ASP.NET y también necesito tener SQL Server 2005 Developer instalado localmente para correr tanto la base de datos como Reporting Services. 

Pero al intentar instalar estas herramientas me topé inmediatamente con los cambios en la manera que instalas IIS en Windows Vista.  Ya me habían platicado que IIS 7 era más modular, pero no me habían dicho qué tanto.  Por default, IIS ni siquiera viene habilitado, así que lo primero que tienes que hacer es instalarlo. 

Es sencillo, te vas a Control Panel > Programs > Turn Windows features on or off.

De las opciones que aparecen, palomea (osea dale clic en el checkbox) a lo siguiente, en este orden:

  1. Internet Information Services.  Esto selecciona automáticamente lo necesario para correr IIS.
  2. IIS > WWW Services > Application Development Features > ASP.NET.  Esto selecciona automáticamente lo necesario para correr aplicaciones de ASP.NET.
  3. IIS > Web Management Tools > IIS 6 Management Compatibility > IIS Metabase and IIS 6 configuration compatibility.  Este componente es necesario para Visual Studio 2005.
  4. Ya que andas por ahí, selecciona IIS 6 WMI Compatibility.  Este lo necesita SQL Server 2005.
  5. IIS > WWW Services > Common Http Features > HTTP Redirection.  Este también lo necesita SQL Server.

Da clic en OK, y se instalarán los componentes seleccionados.

Como puedes ver, solo necesitas 1, 2 y 3 para desarrollar ASP.NET con Visual Studio 2005.  Y si necesitas SQL Server 2005, agregas las opciones 3, y 4.

Si intentas instalar SQL Server sin lo anterior, es muy probable que recibas una advertencia como la siguiente:

Enjoy smile_shades

Bill Gates’ last day at Microsoft (video)

sábado 12 de enero de 2008 | categorías: | 0 comentarios -- da clic aquí para dejar el tuyo

Hay que verlo para creerlo... smile_tongue

A video spoof shown during the CES 2008 keynote by Bill Gates about his last full day at Microsoft in July starring himself, Brian Williams, Steve Ballmer, Matthew McConaugheyr [sic], Robbie Bach, Jay-Z, Bono, Steven Spielberg, George Clooney, Jon Stewart, Kevin Turner, Hillary Clinton, Barack Obama, Al Gore, Ray Ozzie and Craig Mundie [...] Amazing who they can call for a guest appearance in the name of Bill Gates.

Bill Gates’ last day at Microsoft (video) - istartedsomething