<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>THE .NET WAY &#187; IIS</title>
	<atom:link href="http://www.thedotnetway.net/tag/iis/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.thedotnetway.net</link>
	<description>El blog Tecnológico de Emilio Torrens y Jordi Cladera</description>
	<lastBuildDate>Thu, 29 Jul 2010 08:27:48 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Buscas el w3wp de un Application Pool?</title>
		<link>http://www.thedotnetway.net/2009/07/21/buscas-el-w3wp-de-un-application-pool/</link>
		<comments>http://www.thedotnetway.net/2009/07/21/buscas-el-w3wp-de-un-application-pool/#comments</comments>
		<pubDate>Tue, 21 Jul 2009 08:56:01 +0000</pubDate>
		<dc:creator>Emilio Torrens</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[IIS]]></category>
		<category><![CDATA[Trucos]]></category>

		<guid isPermaLink="false">http://www.thedotnetway.net/2009/07/21/buscas-el-w3wp-de-un-application-pool/</guid>
		<description><![CDATA[Si tienes un servidor de producción con muchos Aplications Pools en el IIS es complicado saber cual es cual en el Administrador de Tareas (mas si todos se ejecutan con NETWORKSERVICE), el otro día un w3wp se nos ponía en mas de un giga de memoria y necesitaba localizar que aplicación estaba haciendo eso, puedes [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.thedotnetway.net/wp-content/uploads/2009/07/ProcesosW3WP.jpg"><img style="border-bottom: 0px; border-left: 0px; display: inline; margin-left: 0px; border-top: 0px; margin-right: 0px; border-right: 0px" title="ProcesosW3WP" border="0" alt="ProcesosW3WP" align="left" src="http://www.thedotnetway.net/wp-content/uploads/2009/07/ProcesosW3WP_thumb.jpg" width="278" height="162" /></a> Si tienes un servidor de producción con muchos Aplications Pools en el <a href="http://en.wikipedia.org/wiki/Internet_Information_Services" target="_blank">IIS</a> es complicado saber cual es cual en el Administrador de Tareas (mas si todos se ejecutan con NETWORKSERVICE), el otro día un w3wp se nos ponía en mas de un giga de memoria y necesitaba localizar que aplicación estaba haciendo eso, puedes ir parando Pools y ver que pasa o puedes usar el script iisapp.vbs que encontraras en system32, el te dará la información del id de proceso del w3wp y a que Application Pool pertenece.</p>
<p>Aquí el resultado </p>
<p><a href="http://www.thedotnetway.net/wp-content/uploads/2009/07/ResultadoIISAPP.jpg"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="ResultadoIISAPP" border="0" alt="ResultadoIISAPP" src="http://www.thedotnetway.net/wp-content/uploads/2009/07/ResultadoIISAPP_thumb.jpg" width="402" height="191" /></a></p>
<p>Antes de los comentarios, los nombres de los Application Pools no se pueden repetir, he retocado la imagen quitando el nombre de nuestros clientes <img src='http://www.thedotnetway.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  </p>
]]></content:encoded>
			<wfw:commentRss>http://www.thedotnetway.net/2009/07/21/buscas-el-w3wp-de-un-application-pool/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP y Windows</title>
		<link>http://www.thedotnetway.net/2009/05/13/php-y-windows/</link>
		<comments>http://www.thedotnetway.net/2009/05/13/php-y-windows/#comments</comments>
		<pubDate>Wed, 13 May 2009 10:26:59 +0000</pubDate>
		<dc:creator>Emilio Torrens</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[IIS]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[SQLServer]]></category>

		<guid isPermaLink="false">http://www.thedotnetway.net/2009/05/13/php-y-windows/</guid>
		<description><![CDATA[No por programar en PHP tienes que estar casado con Linux pero la verdad es que eso es lo que suele pasar, nosotros mismos hemos tenido proyectos con la parte servidora corriendo en Windows, SQLServer e IIS y el UI en PHP en Linux obligando al cliente a mantener dos tipos de servidores con los [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.thedotnetway.net/wp-content/uploads/2009/05/php-lab.png"><img title="php_lab" style="border-top-width: 0px; display: inline; border-left-width: 1px; border-bottom-width: 0px; margin-left: 0px; margin-right: 0px; border-right-width: 0px" height="95" alt="php_lab" src="http://www.thedotnetway.net/wp-content/uploads/2009/05/php-lab-thumb.png" width="95" align="left" border="0" /></a> </p>
<p>No por programar en <a href="http://es.wikipedia.org/wiki/.php" target="_blank">PHP</a> tienes que estar casado con Linux pero la verdad es que eso es lo que suele pasar, nosotros mismos hemos tenido proyectos con la parte servidora corriendo en Windows, SQLServer e IIS y el UI en PHP en Linux obligando al cliente a mantener dos tipos de servidores con los problemas y gastos que puede generar eso.</p>
<p>El otro día ya estuve escribiendo sobre las ventajas del PHP, rápido y sencillo (por no hablar de la cantidad de programadores que puedes encontrar), por lo que no es descabellado plantear un proyecto con el UI en web en PHP mientras toda la parte servidora la tienes en .NET, con SQLServer como base de datos e IIS como servidor de aplicaciones.</p>
<p>La gente de Microsoft ha preparado un KIT de entrenamiento para los programadores de PHP, en este KIT tienes ejemplos y documentación para usar IIS y SQLServer desde PHP, lo puedes <a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;FamilyID=c8498c9b-a85a-4afa-90c0-593d0e4850cb" target="_blank">descargar desde aquí</a> y encontraras:</p>
<p>PHP &amp; SQL Server Demos.    <br />Integrating SQL Server Geo-Spatial with PHP.     <br />SQL Server Reporting Services and PHP.     <br />PHP &amp; SQL Server Hands On Labs.     <br />Introduction to Using SQL Server with PHP.     <br />Using Full Text Search over Office Documents in PHP.     <br />PHP on Windows Hands On Labs.     <br />IIS Access Control Features for PHP.     <br />Using IIS 7.0 Media Features in a PHP Application.     <br />Troubleshooting PHP.     <br />Migrating PHP Applications to IIS 7.0. </p>
<p>A disfrutarlo <img src='http://www.thedotnetway.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />     </p>
]]></content:encoded>
			<wfw:commentRss>http://www.thedotnetway.net/2009/05/13/php-y-windows/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ASP.NET, IIS, SQL Server 2005 y Cache de Datos</title>
		<link>http://www.thedotnetway.net/2007/05/27/aspnet-iis-sql-server-2005-y-cache-de-datos/</link>
		<comments>http://www.thedotnetway.net/2007/05/27/aspnet-iis-sql-server-2005-y-cache-de-datos/#comments</comments>
		<pubDate>Sun, 27 May 2007 10:11:00 +0000</pubDate>
		<dc:creator>Emilio Torrens</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[ASP.NET]]></category>
		<category><![CDATA[IIS]]></category>
		<category><![CDATA[SQLServer]]></category>

		<guid isPermaLink="false">http://thedotnetway.wordpress.com/2007/05/27/aspnet-iis-sql-server-2005-y-cache-de-datos/</guid>
		<description><![CDATA[Para activar el cache de datos del SQL en el IIS, debemos ejecutar varios comandos en la consola, encontraremos el aspnet_regsql.exe en la carpeta del framework. Para registrar el servidor SQL: aspnet_regsql.exe -S &#34;NombreDelServidorSql&#34; -E -d &#34;NombreDeLaBaseDeDatos&#34; -ed Para cada una de las tablas que queramos cachear: aspnet_regsql.exe -S &#34;NombreDelServidorSql&#34; -E -d &#34;NombreDeLabaseDeDatos&#34; -et -t [...]]]></description>
			<content:encoded><![CDATA[<p>Para activar el cache de datos del SQL en el IIS, debemos ejecutar varios comandos en la consola, encontraremos el aspnet_regsql.exe en la carpeta del framework.</p>
<p>Para registrar el servidor SQL:</p>
<ul>
<li><font color="#2b91af" size="2">aspnet_regsql.exe -S &quot;NombreDelServidorSql&quot; -E -d &quot;NombreDeLaBaseDeDatos&quot; -ed</font> </li>
</ul>
<p>Para cada una de las tablas que queramos cachear:</p>
<ul>
<li><font color="#2b91af" size="2">aspnet_regsql.exe -S &quot;NombreDelServidorSql&quot; -E -d &quot;NombreDeLabaseDeDatos&quot; -et -t &quot;NombreDeLaTabla&quot;</font> </li>
</ul>
<p>Para poder usar el cache en nuestro servicio o aplicacion ASP.NET debemos añadir una seccion en el Web.config</p>
<p> <font color="#a31515" size="2">
<p>&lt;system.web&gt;      <br />&#160;&#160;&#160; &lt;caching&gt;       <br />&#160;&#160;&#160;&#160;&#160; &lt;sqlCacheDependency enabled=&quot;true&quot; pollTime=&quot;1000&quot; &gt;       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;databases&gt;       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;add name=&quot;AliasDeLaBaseDeDatos&quot; connectionStringName=&quot;ClaveDeLaConnecionString&quot; /&gt;       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;/databases&gt;       <br />&#160;&#160;&#160;&#160;&#160; &lt;/sqlCacheDependency&gt;       <br />&#160;&#160;&#160; &lt;/caching&gt;       <br />&lt;/system.web&gt; </p>
<p> </font>
<p>En esta sección definimos el pollTime que es el intervalo, en milisegundos ,en que debe ir a comprobar si las tablas han cambiado, los demas campos creo que estan claros.</p>
<p>Este tema del pollTime no esta muy claro, ya que, aunque la documentacion dice lo que os he puesto, con las pruebas que hice comprobe que el sistema trabaja por notificacion de cambios, osea que vacia el cache cuando detecta que han cambiado los datos &#8230;</p>
<p>Una vez configurado el IIS y el web.config de la Aplicación vamos al codigo.</p>
<p>Podemos crear dependencia del cache sobre una tabla con:</p>
<p> <font size="2">
</p>
<p>   <font color="#2b91af" size="2">SqlCacheDependency</font><font size="2"> cacheDepen = </font><font color="#0000ff" size="2">new</font><font size="2"> </font><font color="#2b91af" size="2">SqlCacheDependency</font><font size="2">(</font><font color="#a31515" size="2">&quot;AliasDeLaBaseDeDatos&quot;</font><font size="2">, </font><font color="#a31515" size="2">&quot;NombreDeLaTabla&quot;</font><font size="2">);</font> </font>
<p><font size="2">O podemos crear dependencia sobre varias tablas con:</font></p>
<p> <font size="2"><font size="2">
</p>
<p>     <font color="#2b91af" size="2">SqlCacheDependency</font><font size="2"> cacheDepen1 = </font><font color="#0000ff" size="2">new</font><font size="2"> </font><font color="#2b91af" size="2">SqlCacheDependency</font><font size="2">(</font><font color="#a31515" size="2">&quot;AliasDeLaBaseDeDatos&quot;</font><font size="2">, </font><font color="#a31515" size="2">&quot;NombreDeLaTabla1&quot;</font><font size="2">);</font> </font>
<p><font color="#2b91af" size="2">SqlCacheDependency</font><font size="2"> cacheDepen2 = </font><font color="#0000ff" size="2">new</font><font size="2"> </font><font color="#2b91af" size="2">SqlCacheDependency</font><font size="2">(</font><font color="#a31515" size="2">&quot;AliasDeLaBaseDeDatos&quot;</font><font size="2">, </font><font color="#a31515" size="2">&quot;NombreDeLaTabla2&quot;</font><font size="2">);</font></p>
</p>
<p>   <font color="#2b91af" size="2">AggregateCacheDependency</font><font size="2"> aggDep = </font><font color="#0000ff" size="2">new</font><font size="2"> </font><font color="#2b91af" size="2">AggregateCacheDependency</font><font size="2">(); </font>
<p>aggDep.Add(cacheDepen1, cacheDepen2);</p>
<p> </font>
<p>Ya que el objecto Cache soporta ambos al crear una entrada:</p>
<p> <font size="2">
<p>_miCache.Add(key, result, cacheDepen , </p>
<p> </font><font color="#2b91af" size="2">Cache</font><font size="2">.NoAbsoluteExpiration,</font><font color="#2b91af" size="2">Cache</font><font size="2">.NoSlidingExpiration, </font><font color="#2b91af" size="2">CacheItemPriority</font><font size="2">.Default, </font><font color="#0000ff" size="2">null</font><font size="2">);</font>
<p><font size="2">ó</font></p>
<p> <font size="2"><font size="2">
<p>_miCache.Add(key, result, aggDep, </p>
<p>   </font><font color="#2b91af" size="2">Cache</font><font size="2">.NoAbsoluteExpiration,</font><font color="#2b91af" size="2">Cache</font><font size="2">.NoSlidingExpiration, </font><font color="#2b91af" size="2">CacheItemPriority</font><font size="2">.Default, </font><font color="#0000ff" size="2">null</font><font size="2">);</font></font>
<p>Si lo que cacheais es el resultado de una sentencia SQL, no hay mayor complicacion, podemos usar como Clave (Key) la misma sentencia o su HashCode, pero si lo que cacheamos son resultados que como peticion tienen clases de parametros, ya es otro tema. </p>
<p>Con el segundo supuesto, para la clave del Cache (key) empeze utilizando el <font size="2">GetHashCode de la clase de peticion, pero me di cuenta de que no funciona para esto, para diferencias istancias de la misma clase de peticion con los mismos valores obtienes diferentes HashCode, asi que para la clave, en este caso, os recomiento utilizar el HashCode de la string del Xml que resulta de serializar la clase, esa fue la unica manera de que me funcionara bien.</font></p>
<p><font size="2">Para recuperar los datos del cache simplemente:</font></p>
<p> <font size="2"><font color="#0000ff" size="2">
<p>object</p>
<p>   </font><font size="2">cachedData = __miCache.Get(key);</font>
<p><font size="2">si el resultado es null, buscar los datos y meterlos en el Cache para la proxima vez <img src='http://www.thedotnetway.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </font></p>
<p> </font>
<p>Mas información sobre el tema en <a class="" href="http://msdn2.microsoft.com/es-es/library/dw21dchd(VS.80).aspx" target="_blank">MSDN</a> en la web del <a class="" href="http://www.elguille.info/colabora/puntoNET/jlopezi_CacheASPNET2.htm" target="_blank">Guille</a> o en <a class="" href="http://quickstarts.asp.net/QuickStartv20/aspnet/doc/caching/default.aspx" target="_blank">ASP.NET</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.thedotnetway.net/2007/05/27/aspnet-iis-sql-server-2005-y-cache-de-datos/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Activar compresi&#243;n en IIS 6.0</title>
		<link>http://www.thedotnetway.net/2007/05/11/activar-compresion-en-iis-60/</link>
		<comments>http://www.thedotnetway.net/2007/05/11/activar-compresion-en-iis-60/#comments</comments>
		<pubDate>Fri, 11 May 2007 10:13:00 +0000</pubDate>
		<dc:creator>Emilio Torrens</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[IIS]]></category>
		<category><![CDATA[Trucos]]></category>

		<guid isPermaLink="false">http://thedotnetway.wordpress.com/2007/05/11/activar-compresion-en-iis-60/</guid>
		<description><![CDATA[IIS 6.0 dispone de compresión gzip. Una vez activada podemos notar una mejora en el rendimiento de hasta un 60%. La carga de CPU no es demasiado alta en comparación con la reducción del tiempo de bajada. Los pasos para activar la compresión son los siguientes: Abrir el IIS Manager en herramientas administrativas. Hacer backup [...]]]></description>
			<content:encoded><![CDATA[<p><a class="" href="http://www.iis.net/" target="_blank">IIS 6.0</a> dispone de compresión <a class="" href="http://www.gzip.org/" target="_blank">gzip</a>. Una vez activada podemos notar una mejora en el rendimiento de hasta un 60%. La carga de CPU no es demasiado alta en comparación con la reducción del tiempo de bajada.</p>
<p>Los pasos para activar la compresión son los siguientes:</p>
<ul>
<li>Abrir el IIS Manager en herramientas administrativas. </li>
<li>Hacer backup de la metabase. (boton derecho en el servidor dentro del IIS Manager y seleccionar Todas las tareas -&gt;Restaurar o realizar copia de seguridad de la configuración). </li>
<li>Activar la compresion dinamica y estatica (boton derecho en el nodo Sitios Web en el IIS Manager en la pestaña Servicio) </li>
<li>Crear una extension de servicio web (Seleccionar Extensiones de se servicio Web en el IIS Manager, la llamamos HTTP Compression y que apunte a c:\windows\system32\inetsrv\gzip.dll) </li>
<li>Modificar el archivo C:\Windows\system32\inetsrv\metabase.xml en el notepad </li>
</ul>
<p>Buscamos el elemento &lt;IIsCompressionScheme del cual habrán dos (deflate y gzip). Añadimos en el atributo HcScriptFileExtensions las extensiones aspx, asmx, y cualquiera que necesitemos, en ambos.</p>
<p>En HcDynamicCompressionLevel establecemos el nivel de compresión que queremos, el rango va de 0 a 10, El nivel recomendado es el 9 cuyo nivel de compresion es practicamente igual al 10 pero la carga de CPU es considerablemente menor. Hay que hacerlo tanto en deflate y gzip.</p>
<ul>
<li>Reseteamos IIS (iisreset desde la linea de comandos) </li>
</ul>
<p>Y listo, </p>
<p>Saludos</p>
]]></content:encoded>
			<wfw:commentRss>http://www.thedotnetway.net/2007/05/11/activar-compresion-en-iis-60/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
