JASoft.org

El blog de José Manuel Alarcón Aguín. Programación web y mucho más...

MENÚ - JASoft: JM Alarcón

Cómo determinar qué aplicación Web está fuera de control en nuestro servidor

Imagínate la situación: tu servidor web alberga decenas de aplicaciones Web. de repente un día notas que el servidor está al límite de sus posibilidades, con el procesador al 100% todo el tiempo, y sin saber porqué. Abres el administrador de tareas del servidor y ves que un proceso W3WP.exe es el que está haciéndose con el procesador. Así que una de tus aplicaciones Web está desmadrada y se empieza a comer todos los recursos de proceso, haciendo que las demás vayan cada vez más lentas. Pero hay decenas de w3wp.exe funcionando porque tienes decenas de aplicaciones, así que ¿cómo diablos averiguas cuál de ellas es la aplicación problemática? Vale, lo primero es averiguar el identificador del proceso que se está comiendo los recursos del procesador oniéndolo al 100% todo el tiempo. Para ello, en el administrador de tareas (CTRL+MAYS+ESC) vas al menú Ver·Seleccionar Columnas y añades este campo a la lista de procesos, ya que no viene por defecto: Una vez que ya sabes el identificador... [Más]

CompilationMode: evitar la compilación de páginas ASPX para mejorar la escalabilidad en sitios con miles de ellas

El otro día os comentaba las diferencias entre los proyectos de tipo Sitio Web y Aplicación Web en Visual Studio, y las implicaciones que ello tenía a la hora de trabajar, para ayudaros a decidir entre uno u otro. Una de las "pegas" que le ponía al modelo de sitios Web era que al generarse una DLL por cada página y control, al final podíamos acabar con problemas de rendimiento por tener que haber cargado todas esas DLL en el proceso de la aplicación. He puesto "pegas" entre comillas porque realmente desde mi punto de vista esta posible situación más que un problema es un exotismo, puesto que no me imagino ninguna aplicación Web realista que tenga miles de páginas (hablo de varios miles) y que no esté dotada del agún mecanismo de generación automática de páginas. De hecho el único sistema que he visto que pudiera provocar esta situación es un sistema gestor de contenidos creado para un organismo oficial por una conocida empresa de consultoría (de cuyo nombre no quiero acordarme) y qu... [Más]

Vídeo en Channel9 en Español: bibliotecas cliente de AJAX y JavaScript en Visual Studio 2008

Ya está disponible en Channel9 un nuevo vídeo que he hecho sobre las bibliotecas del lado cliente de AJAX y un montón d cuestiones relacionadas con JavaScript en Visual Studio 2008. Enseño a llamar a servicios Web desde JavaScript, cómo generar biblitecas .js con soporte para Intellisense en Visual Studio, y unas cuantas cosas más. Se ve con una calidad estupenda, pero debes ponerlo a pantalla completa usando el botón de la derecha que aparece en la parte de abajo cuando pasas por encima con el ratón (el que tiene las flechas en esta figura): Pulsa la imagen para ir la página del vídeo Puedes verlo en streaming directamente desde la página (necesitarás Silverlight 2.0) o bien descargártelo en diversos formatos: En la página podrás encontrar otros vídeos intereantes, muchos de los cuales los han hecho también otros tutores de campusMVP, como Unai Zorrilla, Bruno Capuano, o Alberto Población. Seguro que dentro de poco habrá alguno más de los míos, de los que os iré informando... [Más]

Sitios Web o Aplicaciones Web en Visual Studio 2005/2008: ¿cuál utilizar?

Como seguramente sabrás, con la aparición de Visual Studio 2005 el modelo de troyectos Web cambió completamente. Se pasó de un modelo "code-behind" a un modelo "code-beside" (que ahora explicaré con calma), y la estructura de aplicaciones anteriores dejó de ser compatible con ASP.NET 2.0. Esto hacía complicado, sobre todo, la migración de las aplicaciones desde ASP.NET 1.x a las nuevas versiones, y desató muchas protestas (aunque muchos protestaron simplemente por inmovilismo y reticencia al cambio). Ante ello Microsoft respondió unos meses después sacando los Visual Studio 2005 Web Application Projects. Éstos añadían compatibilidad con el modelo anterior a Visual Studio 2005, y de hecho se convirtió en una parte estándar del entorno al salir el Service Pack de VS2005. Ahora forman parte integrada desde el principio de Visual Studio 2008 también. A la hora de crear un proyecto nuevo para la Web podemos elegir entre crear un sitio Web (opción por defecto): o crear un proyecto de tip... [Más]

Impresionante editor de informes basado en Web

Hoy me he encontrado con un producto que me ha parecido, a simple vista, impresionante. Se trata de Stimulsoft Reports Designer.Web. Se trata de un complemento para el produto de generación de informes que tiene esta empresa -para mi hasta ahora desconocida- y que permite hacer la edición directa de los informes en cualquier navegador. Funciona en Internet Explorer, Firefox, Opera, Safari, etc... ya que estña hecho en Flash. Tiene todo tipo de detalles, empezando por la interfaz de usuario. Os dejo algunas capturas:   No dejes de probarlo on-line. El producto es comercial pero tiene un precio, en mi opinión, muy razonable y creo que merece la pena echarle un vistazo.

Modificar la salida de los controles Web sin heredar de ellos

Ya he escrito en otras ocasiones sobre la cuestión de modificar la salida de las páginas ASPX y los controles, para poder modificarla a nuestra voluntad sin necesidad de tener acceso al código fuente (ver enlaces al final del post). En esta ocasión voy a comentar una característica muy poco conocida de los controles que permite modificar su salida directamente, sin necesidad de heredar de ellos (técnica habitual) ni otras técnicas complicadas. Lo que haremos será sacar provecho a un método de la clase System.Web.UI.Control supuestamente pensado sólo para uso interno, pero que Microsoft ha dejado como público y por lo tanto acesible directamente a cualquiera. Se trata del método SetRenderMethodDelegate. Éste permite asignar un delegado de una función de tipo RenderMethod que sustituirá al método de renderizado del control en cuestión. El método propio que definamos para asignar con SetRenderMethodDelegate toma dos parámetros: un HtmlTextWriter que utilizaremos para generar la salida d... [Más]

Vídeo en Channel9 en Español: Mejorar el rendimiento de la descarga de librerías Javascript

Ya está disponible en Channel9 mi vídeo sobre cómo optimizar la descarga de archivos .js en aplicaciones Web gracias a la característica específica incluida a tal efecto en el SP1 de .NET 3.5. Se ve con una calidad estupenda, pero debes ponerlo a pantalla completa usando el botón de la derecha que aparece en la parte de abajo cuando pasas por encima con el ratón (el que tiene las flechas en esta figura): Pulsa la imagen para ir la página del vídeo Puedes verlo en streaming directamente desde la página (necesitarás Silverlight 2.0) o bien descargártelo en diversos formatos: En la página podrás encontrar otros vídeos intereantes, muchos de los cuales los han hecho también otros tutores de campusMVP, como Unai Zorrilla o Alberto Población. Dentro de poco habrá alguno que otro más de los míos, de los que os iré informando aquí... ¡Qué os sea útil!

Llamadas asíncronas a servicios Web: la sobrecarga menos conocida

Hoy en uno de los cursos de campusMVP un alumno me ha hecho una pregunta cuya respuesta creo que puede interesar a más de uno. Se refería a la llamada asíncrona a servicios Web y una segunda sobrecarag de los métodos xxxxAsync que toma un parámetro adicional. como es sabido cuando definimos un servicio Web y lo consumimos desde una aplicación cliente es posible hacer llamadas asíncronas al mismo para dejar que se siga ejecutando la aplicaicón sin necesidad de quedar con el hilo a la espera de que terminen operaciones largas en dicho servicio. Desde .NET 2.0 esto es muy sencillo ya que el proxy que se genera para llamar al servicio añade para cada método un método adicional con el mismo nombre y seguido de la palabra "Async" de modo que podamos utilizarlo para hacer la llamada asíncrona. así, si tenemo sun método GetdatosFromClientes, podemos llamarlo asíncronamente con GetdatosFromClientesAsync. Nota: Ojo porque si la referencia al servicio Web la añadimos usando WCF para generar el ... [Más]

Azure: el primer "sistema operativo" de Microsoft para la nube

Hoy, durante la ceremonia de apertura la Microsoft PDC en Los Angeles Microsoft ha anunciado Azure, su primer sistema operativo desarrollado específicamente para ejecutarse "en la nube" (de forma remota). Se trata de una API de servicios albergados en los Data Center de Microsoft que permitirá dotar a nuestras aplicaciones de múltiples funcionalidades obtenidas directamente desde la Red. Según Ray Ozzie, arquitecto jefe de software, Azure combina perfectamente las capacidades de programación para la nube con el almacenamiento, los servicios de infraestructura de red y los servicios alojados dentro de un único centro que se encarga de mantener la propia Microsoft. Azure se programará con las herramientas y lenguajes que ya conocemos (.NET Framework y Visual Studio). Los servicios de la plataforma Azure se componen de varios componentes: Azure, componente necesario para el alojamiento, la gestión, el almacenamiento y las comunicaciones escalables. Los servicio... [Más]