<?xml version="1.0" encoding="UTF-8" standalone="no"?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:georss="http://www.georss.org/georss" xmlns:media="http://search.yahoo.com/mrss/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" version="2.0">

<channel>
	<title/>
	<atom:link href="https://willyxoft.wordpress.com/category/net/feed/" rel="self" type="application/rss+xml"/>
	<link>https://willyxoft.wordpress.com</link>
	<description>Software, Servicios, Seguridad y más... bajo .NET</description>
	<lastBuildDate>Wed, 17 Aug 2011 04:13:56 +0000</lastBuildDate>
	<language>es</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<site xmlns="com-wordpress:feed-additions:1">599683</site><cloud domain="willyxoft.wordpress.com" path="/?rsscloud=notify" port="80" protocol="http-post" registerProcedure=""/>
<image>
		<url>https://secure.gravatar.com/blavatar/247410cf2ff8aa720f4f71e112755f449d5ea5c3fabb9ba43580cb25d88d53de?s=96&amp;d=https%3A%2F%2Fs2.wp.com%2Fi%2Fwebclip.png</url>
		<title>.NET – WillyXoft</title>
		<link>https://willyxoft.wordpress.com</link>
	</image>
	<atom:link href="https://willyxoft.wordpress.com/osd.xml" rel="search" title="WillyXoft" type="application/opensearchdescription+xml"/>
	<atom:link href="https://willyxoft.wordpress.com/?pushpress=hub" rel="hub"/>
	<item>
		<title>Ataque Padding Oracle en ASP.NET</title>
		<link>https://willyxoft.wordpress.com/2010/09/22/vulnerabilidad-padding-oracle-aspnet/</link>
					<comments>https://willyxoft.wordpress.com/2010/09/22/vulnerabilidad-padding-oracle-aspnet/#respond</comments>
		
		<dc:creator><![CDATA[Willy Mejia]]></dc:creator>
		<pubDate>Thu, 23 Sep 2010 03:49:21 +0000</pubDate>
				<category><![CDATA[ASP.NET]]></category>
		<category><![CDATA[Seguridad]]></category>
		<guid isPermaLink="false">http://willyxoft.wordpress.com/2010/09/22/vulnerabilidad-padding-oracle-aspnet/</guid>

					<description><![CDATA[Durante la conferencia de seguridad ekoparty, el pasado 17 de septiembre, Juliano Rizzo  y Thai Duong demostraron cómo realizar ataques “Padding Oracle” a sitios web ASP.NET explotando una vulnerabilidad del framework. Con ello el atacante puede descifrar cualquier información sensible guardada del lado cliente, e incluso descargar archivos “prohibidos” como web.config y tener acceso a sus datos sensibles, por ejemplo: cadenas de conexión, credenciales de seguridad, etc.  Ante ello Scott Guthrie escribió un post sobre dicha vulnerabilidad, mientras que Microsoft lanzó el Aviso de Seguridad (2416728) que describe la vulnerabilidad que afecta a todas las versiones de ASP.NET. La vulnerabilidad afecta a todas las versiones de ASP.NET desde 1 hasta 4 y afecta a todos los frameworks de desarrollo de ASP.NET (ASP.NET WebForms, ASP.NET MVC,  etc.). Incluso productos basados en ASP.NET se ven afectados... <a href="https://willyxoft.wordpress.com/2010/09/22/vulnerabilidad-padding-oracle-aspnet/">Seguir leyendo <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[<p>Durante la conferencia de seguridad <a href="http://www.ekoparty.org/" target="_blank">ekoparty</a>, el pasado 17 de septiembre, Juliano Rizzo (@julianor) y Thai Duong (@thaidn) demostraron cómo realizar ataques “Padding Oracle” a sitios web ASP.NET explotando una vulnerabilidad del framework. Con ello el atacante puede descifrar cualquier información sensible guardada del lado cliente, e incluso descargar archivos “prohibidos” como web.config y tener acceso a sus datos sensibles, por ejemplo: cadenas de conexión, credenciales de seguridad, etc.</p>
<blockquote>
<p>En resumen, se puede descifrar las cookies, los “ViewState”, tickets de autenticación, contraseñas de membrecía, datos de usuario, y cualquier otra cosa cifrada usando la API del framework</p>
<p>&#8211; Juliano Rizzo</p>
</blockquote>
<p>Ante ello <a href="http://weblogs.asp.net/scottgu/archive/2010/09/18/important-asp-net-security-vulnerability.aspx" target="_blank">Scott Guthrie escribió un post</a> sobre dicha vulnerabilidad, mientras que Microsoft lanzó el <a href="http://www.microsoft.com/technet/security/advisory/2416728.mspx" target="_blank">Aviso de Seguridad (2416728)</a> que describe la vulnerabilidad que afecta a todas las versiones de ASP.NET. La vulnerabilidad afecta a todas las versiones de ASP.NET desde 1.x hasta el 4.0 y afecta a todos los frameworks de desarrollo de ASP.NET (ASP.NET WebForms, ASP.NET MVC,&#160; etc.). Por ende productos basados en ASP.NET, como <a href="http://blogs.msdn.com/b/sharepoint/archive/2010/09/21/security-advisory-2416728-vulnerability-in-asp-net-and-sharepoint.aspx" target="_blank">SharePoint</a>, <a href="http://blogs.msdn.com/b/bharry/archive/2010/09/23/security-vulnerability.aspx" target="_blank">Team Foundation Server</a>, entre otros, se ven afectados también.</p>
<p><strong>El “Padding Oracle”</strong></p>
<p>Serge Vaudenay, profesor del Laboratorio de Seguridad y Criptografía (LASEC) del Instituto Federal Suizo de Tecnología (EPFL), publicó en 2002 el documento &quot;<a href="http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.134.3005&amp;rep=rep1&amp;type=pdf" target="_blank">Security Flaws Induced by CBC Padding Applications to SSL, IPSEC, WTLS&#8230;</a>&quot; [PDF], donde señala que varios sistemas de &quot;<strong>relleno</strong>&quot; (padding) de cifrado utilizados en sistemas de entrada de longitud variable pueden introducir grandes fallos de seguridad.</p>
<p>Cuando un mensaje cifrado de entrada de longitud variable se descifra basado en el algoritmo <a href="http://www.rfc-editor.org/rfc/rfc2040.txt" target="_blank">RFC 2040</a>, el receptor tiene que determinar lo que es <em>relleno</em>, si el relleno es correcto, entonces lo descarta. Pero el RFC 2040 no especifica lo que el receptor debe hacer si el relleno no es correcto. Esto conduce a un ataque que utilice un <em>oráculo</em> para cualquier boque de secuencia que le diga si el relleno de la secuencia CBC-descifrada correspondiente es correcta de acuerdo al algoritmo RFC 2040.</p>
<p>Según Vaudenay, esta vulnerabilidad puede afectar a protocolos como SSL, IPSec, WTLS, SSH, existiendo la posibilidad de descifrar los datos cifrados sin tener la clave secreta. Él demuestra cómo funciona el ataque y sugiere una posible vía para solucionar la vulnerabilidad.</p>
<p><strong>¿Como funciona?</strong></p>
<p>Se puede consultar este artículo: <a href="http://www.gdssecurity.com/l/b/2010/09/14/automated-padding-oracle-attacks-with-padbuster/" target="_blank">Automated Padding Oracle Attacks with PadBuster</a>, que también muestra cómo funcionan los algoritmos explotados.</p>
<p>En resumen, los algoritmos de cifrado trabajan sobre bloques de datos (de 8 o 16 bytes por lo general), los bytes restantes son de &quot;<strong>relleno</strong>&quot; (padding). Por ejemplo, una palabra de 6 letras &quot;BANANA&quot;, se rellenará con dos bytes para convertirse en el bloque de 8 bytes.</p>
<p><a href="http://www.gdssecurity.com/l/po_fig1.png" target="_blank"><img border="0" src="https://i0.wp.com/lh4.ggpht.com/_Qbax2DGZEkU/TJX1p6P3jYI/AAAAAAAAB-o/UPJkI99t7iI/po_fig1%5B27%5D.png" width="500" height="277" /></a></p>
<p>Se le denomina &quot;<strong>Oracle</strong>&quot; al mecanismo dentro de un sistema de cifrado capaz de proporcionar una respuesta <em>Válido</em> o <em>Inválido</em> para un determinado texto cifrado. Por lo tanto, el &quot;<strong>Padding Oracle</strong>&quot; es un mecanismo, capaz de responder, si el relleno del texto cifrado es válido o no.</p>
<p>Los algoritmos de cifrado construidos en Microsoft .NET Framework, disparan un <em>System.Security.Cryptography.CryptographicException</em> con el mensaje &quot;<em>Padding is invalid and cannot be removed&quot;</em> en caso de que el relleno no sea válido. Así que ese es nuestro Padding Oracle a utilizar…</p>
<p><strong>El ataque</strong></p>
<p>El siguiente video muestra cómo se puede tirar una instalación de DotNetNuke, al obtener la clave de cifrado y cifrar sus propias cookies SuperUser:</p>
<iframe class="youtube-player" width="640" height="360" src="https://www.youtube.com/embed/yghiC_U2RaM?version=3&#038;rel=1&#038;showsearch=0&#038;showinfo=1&#038;iv_load_policy=1&#038;fs=1&#038;hl=es&#038;autohide=2&#038;wmode=transparent" allowfullscreen="true" style="border:0;" sandbox="allow-scripts allow-same-origin allow-popups allow-presentation allow-popups-to-escape-sandbox"></iframe>
<p>Lo cual podríamos resumir a lo siguiente:</p>
<ul>
<li>
<p>El atacante localiza una cadena Base64, que suele ser un texto cifrado. En ASP.NET podría obtenerse fácilmente de la URL del WebResource.axd o de una cookie de autenticación.</p>
</li>
<li>
<p>El atacante cambia un byte del texto cifrado y lo envía al oráculo, preguntando &quot;¿es válido?&quot;, hasta que el byte es descifrado. Las respuestas &quot;Vaildo / Invalido&quot; son simplemente entendidas por el examen de las respuestas del servidor, por ejemplo, el código de error 500 significa que el texto no es válido y los 404 que es válido pero no se pudo descifrar.        </p>
<p>El ataque no está en función del código de error en sí, sino que basta vigilar cualquier comportamiento anormal. Incluso si el sitio web devuelve la misma página de error en todos los casos, el atacante podría hacer uso de las diferencias de tiempo, según lo declarado por Thai Duong.</p>
</li>
</ul>
<ul>
<li>
<p>Después de conseguir con éxito la clave secreta ASP.NET, la <strong>machineKey</strong>, el atacante puede crear sus propias &quot;cookies&quot; y comenzar a usar el sistema como administrador o bien podría descargar sus archivos sensibles, por ejemplo, web.config.</p>
<p>Adicionalmente, el atacante podría utilizar la vulnerabilidad para cifrar su propio sistema de cifrado <strong>sin tener la clave de cifrado original</strong>.</p>
</li>
</ul>
<blockquote>
<p>Dado que HTTP es un protocolo sin estado, los desarrolladores web deben manejar los estados en el servidor, o empujarlos al cliente. Por motivos de rendimiento y escalabilidad, muchos desarrolladores web tienden a ir con este último método. Quieren mantener al estado como un secreto, y recurrir a la criptografía, que es la herramienta adecuada. Sin embargo, la usan indebidamente, es decir, sin aplicar un MAC para el texto cifrado, ni utilizar un modo de cifrado de bloque autenticado, haciendo sus sistemas vulnerables</p>
<p>&#8211; Juliano Rizzo</p>
</blockquote>
<p>NOTA: Si bien este post se centra en el ataque dirigido a la plataforma ASP.NET, el ataque Padding Oracle no es exclusivo de dicha plataforma, de hecho un primer ataque fue dirigido hacia la plataforma JSF, específicamente a MyFaces, cuyo video se puede ver a continuación:</p>
<iframe class="youtube-player" width="640" height="360" src="https://www.youtube.com/embed/euujmKDxmC4?version=3&#038;rel=1&#038;showsearch=0&#038;showinfo=1&#038;iv_load_policy=1&#038;fs=1&#038;hl=es&#038;autohide=2&#038;wmode=transparent" allowfullscreen="true" style="border:0;" sandbox="allow-scripts allow-same-origin allow-popups allow-presentation allow-popups-to-escape-sandbox"></iframe>
<p>Así mismo se la lanzado otra <a href="http://www.ampliasecurity.com/blog/2010/09/28/a_padding_oracle_attack_implemented_in_javascript/" target="_blank">implementación en JavaScript</a> y nada descarta que en el futuro se implementen otros exploits para otros objetivos…</p>
<p><strong>Protegiéndose</strong></p>
<p>Scott Guthrie a dicho que su equipo está trabajando en un nuevo parche de seguridad que se publicará como parte de la actualización Windows lo más pronto posible. Mientras tanto los profesionales de TI y desarrolladores necesitan proteger sus propias aplicaciones mediante las siguientes medidas.</p>
<ul>
<li>
<p>Nunca permita que su aplicación devuelva la página amarilla de error (aka YSOD) cuando se produzca una excepción, esto es de por sí malo ya que permitirá a los usuarios finales examinar las excepciones al detalle. Por ello, el solo encender la opción &lt;customeErrors&gt; no es suficiente si solo enviará un mensaje YSOD</p>
</li>
<li>
<p>Nunca guarde información sensible en cookies, ViewState o cualquier otro estado del lado cliente, porque siempre habrá una oportunidad que sea filtrado a usuarios malintencionados. Considere la posibilidad de almacenar datos en el servidor</p>
</li>
</ul>
<ul>
<li>
<p>Lea y aplique el paseo descrito en el post de Scott Guthrie: <a href="http://weblogs.asp.net/scottgu/archive/2010/09/18/important-asp-net-security-vulnerability.aspx" target="_blank"><strong>Important: ASP.NET Security Vulnerability</strong></a>, que muestra cómo redirigir todos los errores de página y añadir un tiempo de retraso al azar; si bien <a href="http://blogs.microsoft.co.il/blogs/linqed/archive/2010/09/19/padding-oracle-asp-net-vulnerability-explanation.aspx" target="_blank">no es suficiente</a>, hará las cosas más difíciles para el atacante y lo confundirá más. Así mismo lea la actualización: <a href="http://weblogs.asp.net/scottgu/archive/2010/09/24/update-on-asp-net-vulnerability.aspx" target="_blank"><strong>Update on ASP.NET Vulnerability</strong></a> y las P&amp;R: <a href="http://weblogs.asp.net/scottgu/archive/2010/09/20/frequently-asked-questions-about-the-asp-net-security-vulnerability.aspx" target="_blank"><strong>Frequently Asked Questions about the ASP.NET Security Vulnerability</strong></a></p>
</li>
<li>
<p>Adicionalmente asegúrese que el servidor de su aplicación se puede defender contra ataques <a href="http://en.wikipedia.org/wiki/Denial-of-service_attack">DoS</a>. La vulnerabilidad expuesta inunda el servidor con miles de peticiones. La defensa de los servidores web y sus aplicaciones contra ataques de denegación de servicio es siempre un requisito a tener en cuenta cuando se implementa un servidor web. Para ello puede utilizar cortafuegos, routers, ISA o el <a href="http://www.iis.net/download/DynamicIPRestrictions">IIS</a>, así mismo a nivel de hardware. Consulte al respecto con el soporte técnico de su servicio de host</p>
</li>
</ul>
<p><strong><font color="#ff0000">[Actualización &#8211; 28 de Septiembre]</font></strong></p>
<p>Microsoft acaba de publicar el boletín de seguridad <a href="http://www.microsoft.com/technet/security/bulletin/MS10-070.mspx" target="_blank">MS10-070</a> anunciando el lanzamiento de la actualización de seguridad para hacer frente a la vulnerabilidad de seguridad de ASP.NET. La actualización de seguridad está programada para ser lanzada hoy martes 28 de septiembre a través del Centro de descarga de Microsoft, y en unos días a través de Windows Update y Windows Server Update Services. </p>
<p>El boletín tiene por objeto que los administradores estén mejor preparados una vez que la actualización sea liberada. Puede aprender más acerca de la actualización de seguridad en el <a title="Out of Band Release to Address Microsoft Security Advisory 2416728" href="http://blogs.technet.com/b/msrc/archive/2010/09/27/out-of-band-release-to-address-microsoft-security-advisory-2416728.aspx" target="_blank">Microsoft Security Response Center</a>. También se llevará a cabo una transmisión especial hoy a las 1:00 PM PDT (3:00 PM México), donde se presentará información sobre el boletín; si está interesado en asistir, haga clic <a href="https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032464130&amp;Culture=en-US" target="_blank">aquí</a> para registrarse.</p>
<p>&#160;</p>
<p><strong>Mas Info:</strong></p>
<ul>
<li>
<p>Padding Oracle Attack</p>
<ul>
<li>
<p><a href="http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.134.3005&amp;rep=rep1&amp;type=pdf" target="_blank">Security Flaws Induced by CBC Padding Applications to SSL, IPSEC, WTLS&#8230;</a> [PDF] (Serge Vaudenay, 2002)</p>
</li>
<li>
<p><a href="http://usenix.org/events/woot10/tech/full_papers/Rizzo.pdf" target="_blank">Practical Padding Oracle Attacks</a> [PDF]</p>
</li>
<li>
<p><a href="http://netifera.com/research/" target="_blank">Padding Oracle Exploit Tool (POET) </a></p>
</li>
<li>
<p><a href="http://www.gdssecurity.com/l/b/2010/09/14/automated-padding-oracle-attacks-with-padbuster/" target="_blank">Automated Padding Oracle Attacks with PadBuster</a></p>
</li>
<li>
<p><a href="http://www.ampliasecurity.com/blog/2010/09/28/a_padding_oracle_attack_implemented_in_javascript/" target="_blank">A Padding Oracle Attack Implemented In Javascript</a>&#160;<font color="#ff0000"><strike>¡Nuevo!</strike></font></p>
</li>
<li>
<p><a href="http://www.gdssecurity.com/l/b/2010/10/04/padbuster-v0-3-and-the-net-padding-oracle-attack/" target="_blank">PadBuster v0.3 and the .NET Padding Oracle Attack</a>&#160;<font color="#ff0000">¡Nuevo!</font></p>
</li>
</ul>
</li>
<li>
<p><a href="http://www.troyhunt.com/2010/09/fear-uncertainty-and-and-padding-oracle.html" target="_blank">Fear, uncertainty and and the padding oracle exploit in ASP.NET</a></p>
</li>
<li>
<p>ScottGu’s Blog:</p>
<ul>
<li>
<p><a href="http://weblogs.asp.net/scottgu/archive/2010/09/18/important-asp-net-security-vulnerability.aspx" target="_blank">Important: ASP.NET Security Vulnerability</a></p>
</li>
<li>
<p><a href="http://weblogs.asp.net/scottgu/archive/2010/09/20/frequently-asked-questions-about-the-asp-net-security-vulnerability.aspx" target="_blank">Frequently Asked Questions about the ASP.NET Security Vulnerability</a></p>
</li>
<li>
<p><a href="http://weblogs.asp.net/scottgu/archive/2010/09/24/update-on-asp-net-vulnerability.aspx">Update on ASP.NET Vulnerability</a></p>
</li>
<li>
<p><a href="http://weblogs.asp.net/scottgu/archive/2010/09/27/asp-net-security-update-shipping-tuesday-sept-28th.aspx" target="_blank">ASP.NET Security Update Shipping Tuesday, Sept 28th</a> </p>
</li>
<li>
<p><a href="http://weblogs.asp.net/scottgu/archive/2010/09/28/asp-net-security-update-now-available.aspx" target="_blank">ASP.NET Security Update Now Available</a>&#160; <font color="#ff0000"><strike>¡Nuevo!</strike></font></p>
</li>
<li>
<p><a href="http://weblogs.asp.net/scottgu/archive/2010/09/30/asp-net-security-fix-now-on-windows-update.aspx" target="_blank">ASP.NET Security Fix Now on Windows Update</a><font color="#ff0000"><strong>&#160;</strong>¡Nuevo!</font></p>
</li>
</ul>
</li>
<li>
<p><a href="http://blogs.microsoft.co.il/blogs/linqed/archive/2010/09/19/padding-oracle-asp-net-vulnerability-explanation.aspx" target="_blank">“Padding Oracle” ASP.NET Vulnerability Explanation</a></p>
</li>
<li>
<p><a href="http://www.acunetix.com/blog/news/check-application-vulnerable-asp-net-padding-oracle-vulnerability/" target="_blank">How to check if your application is vulnerable to the ASP.NET Padding Oracle Vulnerability</a></p>
</li>
<li>
<p><a href="http://blog.dotsmart.net/2010/09/22/asp-net-padding-oracle-detector/" target="_blank">ASP.NET Padding Oracle Detector</a></p>
</li>
<li>
<p>The Microsoft Security Response Center (MSRC):</p>
<ul>
<li>
<p><a href="http://blogs.technet.com/b/msrc/archive/2010/09/17/security-advisory-2416728-released.aspx" target="_blank">Security Advisory 2416728 Released</a></p>
</li>
<li>
<p><a href="http://blogs.technet.com/b/msrc/archive/2010/09/20/update-to-security-advisory-2416728.aspx" target="_blank">Update to Security Advisory 2416728</a></p>
</li>
<li>
<p><a href="http://blogs.technet.com/b/msrc/archive/2010/09/24/security-advisory-2416728-workaround-update.aspx" target="_blank">Security Advisory 2416728 &#8211; Workaround Update</a></p>
</li>
<li>
<p><a href="http://blogs.technet.com/b/msrc/archive/2010/09/27/out-of-band-release-to-address-microsoft-security-advisory-2416728.aspx" target="_blank">Out of Band Release to Address Microsoft Security Advisory 2416728</a></p>
</li>
<li>
<p><a href="http://blogs.technet.com/b/msrc/archive/2010/09/28/ms10-070-released-out-of-band-today.aspx">MS10-070 Released Out-of-Band Today</a>&#160;<font color="#ff0000"><strike>¡Nuevo!</strike></font></p>
</li>
</ul>
</li>
<li>
<p><a href="http://www.microsoft.com/technet/security/advisory/2416728.mspx" target="_blank">Microsoft Security Advisory (2416728)</a> =&gt; <a href="http://www.microsoft.com/technet/security/bulletin/MS10-070.mspx" target="_blank">Microsoft Security Bulletin MS10-070</a>&#160;<font color="#ff0000"><strike>¡Nuevo!</strike></font></p>
</li>
<li>
<p><a href="http://www.microsoft.com/technet/security/bulletin/ms10-sep.mspx" target="_blank">Microsoft Security Bulletin Summary for September 2010</a> <font color="#ff0000"><strike>¡Nuevo!</strike></font></p>
</li>
</ul>
]]></content:encoded>
					
					<wfw:commentRss>https://willyxoft.wordpress.com/2010/09/22/vulnerabilidad-padding-oracle-aspnet/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1997</post-id>
		<media:content medium="image" url="https://2.gravatar.com/avatar/2a63ebd12229e293b69372f6ab56afe07fc43adcb6e2f8a591fa5caf44a3477a?s=96&amp;d=wavatar&amp;r=PG">
			<media:title type="html">WillyXoft</media:title>
		</media:content>

		<media:content medium="image" url="http://lh4.ggpht.com/_Qbax2DGZEkU/TJX1p6P3jYI/AAAAAAAAB-o/UPJkI99t7iI/po_fig1%5B27%5D.png"/>
	</item>
		<item>
		<title>Ejecutar solo una instancia (C#)</title>
		<link>https://willyxoft.wordpress.com/2010/01/27/ejecutar-solo-una-instancia-csharp/</link>
					<comments>https://willyxoft.wordpress.com/2010/01/27/ejecutar-solo-una-instancia-csharp/#comments</comments>
		
		<dc:creator><![CDATA[Willy Mejia]]></dc:creator>
		<pubDate>Thu, 28 Jan 2010 01:06:50 +0000</pubDate>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[winforms]]></category>
		<category><![CDATA[WPF]]></category>
		<guid isPermaLink="false">http://willyxoft.wordpress.com/2010/01/27/ejecutar-solo-una-instancia-c/</guid>

					<description><![CDATA[Para prevenir que sea ejecutada más de una instancia de una aplicación Windows o WPF con C# (incluso cuando se realice una copia del archivo ejecutable) podríamos utilizar algo como lo siguiente: private static bool FirstInstance { get { bool &#8230; <a href="https://willyxoft.wordpress.com/2010/01/27/ejecutar-solo-una-instancia-csharp/">Seguir leyendo <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[<p>Para prevenir que sea ejecutada más de una instancia de una aplicación Windows o WPF con C# (incluso cuando se realice una copia del archivo ejecutable) podríamos utilizar algo como lo siguiente:</p>
<pre class="code"><span style="color:blue;">private static bool </span>FirstInstance
{
    <span style="color:blue;">get
    </span>{
        <span style="color:blue;">bool </span>created;
        <span style="color:blue;">string </span>name = <span style="color:#2b91af;">Assembly</span>.GetEntryAssembly().FullName;
        <span style="color:green;">// created will be True if the current thread creates and owns the mutex.
        // Otherwise created will be False if a previous instance already exists.
        </span><span style="color:#2b91af;">Mutex </span>mutex = <span style="color:blue;">new </span><span style="color:#2b91af;">Mutex</span>(<span style="color:blue;">true</span>, name, <span style="color:blue;">out </span>created);
        <span style="color:blue;">return </span>created;
    }
}</pre>
<p><strong>Nota</strong>: Para una mayor certidumbre se podría hacer uso de una cadena GUID en ‘name’.</p>
<p>Cuando la primera instancia crea el Mutex pasa a ser su propietario y la variable created se le asigna el valor True. Cuando una nueva instancia se ejecuta intenta tomar posesión del Mutex, pero dado que solo un hilo puede ser propietario de mismo (y primera instancia ya lo es) la nueva no puede tomar posesión del Mutex, por lo cual el valor de created permanece en False, misma que se regresa para indicar si existe (o no) una instancia de la aplicación en ejecución.</p>
<p>Así pues la propiedad <strong>FirstInstance</strong> la colocaremos en la clase principal de nuestra aplicación WinForm (“Program.cs”) o bien de nuestra aplicación WPF (“App.xaml.cs”) para ser utilizada según corresponda:</p>
<p><strong>WinForm (Program.cs):</strong></p>
<pre class="code">[<span style="color:#2b91af;">STAThread</span>]
<span style="color:blue;">static void </span>Main()
{
    <span style="color:blue;">if </span>(FirstInstance)
    {
        <span style="color:#2b91af;">Application</span>.EnableVisualStyles();
        <span style="color:#2b91af;">Application</span>.SetCompatibleTextRenderingDefault(<span style="color:blue;">false</span>);
        <span style="color:#2b91af;">Application</span>.Run(<span style="color:blue;">new </span><span style="color:#2b91af;">Form1</span>());
    }
    <span style="color:blue;">else
    </span>{
        <span style="color:#2b91af;">MessageBox</span>.Show(<span style="color:#a31515;">&quot;Application is already running.&quot;</span>);
        <span style="color:#2b91af;">Application</span>.Exit();
    }
}</pre>
<p><strong>WPF (App.xaml.cs):</strong></p>
<pre class="code"><span style="color:blue;">protected override void </span>OnStartup(<span style="color:#2b91af;">StartupEventArgs </span>e)
{
    <span style="color:blue;">if </span>(FirstInstance)
        <span style="color:blue;">base</span>.OnStartup(e);
    <span style="color:blue;">else
    </span>{
        <span style="color:#2b91af;">MessageBox</span>.Show(<span style="color:#a31515;">&quot;Application is already running.&quot;</span>);
        <span style="color:#2b91af;">Application</span>.Current.Shutdown();
    }
}</pre>
<p>Adicionalmente, usando la clase System.Diagnostics.Process se puede obtener la ventana principal y activarla mediante una llamada a la API SetForegroundWindow, tal como se muestra en: <a href="http://www.mvps.org/emorcillo/es/codigo/grl/previnst.shtml" target="_blank">Comprobar si hay una instancia previa de nuestra aplicación</a>, escrito en VB.NET por Eduardo Morcillo.</p>
<p>&#160;</p>
<p><strong>Usando WindowsFormsApplicationBase de VB</strong></p>
<p>Otra opción sería recurrir al Modelo de Aplicaciones de Visual Basic (aka My) para crear un gestor de instancias mediante el <a href="http://msdn.microsoft.com/library/microsoft.visualbasic.applicationservices.windowsformsapplicationbase.aspx" target="_blank">WindowsFormsApplicationBase</a> (el cual además nos ofrece el evento <a href="http://msdn.microsoft.com/library/microsoft.visualbasic.applicationservices.windowsformsapplicationbase.onstartupnextinstance.aspx" target="_blank">OnStartupNextInstance</a>) tal como se muestra a continuación para Windows Forms con C#:</p>
<p><strong>Nota</strong>: No es necesario traducir el siguiente código para una aplicación Windows Forms con VB. En ese caso solo basta seguir las instrucciones de la segunda mitad del post: <a href="https://willyxoft.wordpress.com/2006/01/14/ejecutar-solamente-una-instancia/" target="_blank">Ejecutar solamente una instancia</a> (VB 2005+).</p>
<p><strong>Program.cs</strong></p>
<pre class="code"><span style="color:blue;">using </span>System;
<span style="color:blue;">using </span>System.Windows.Forms;
<span style="color:blue;">using </span>Microsoft.VisualBasic.ApplicationServices;

<span style="color:blue;">namespace </span>WinForm1
{
    <span style="color:blue;">public static class </span><span style="color:#2b91af;">Program
    </span>{
        [<span style="color:#2b91af;">STAThread</span>]
        <span style="color:blue;">public static void </span>Main(<span style="color:blue;">string</span>[] args)
        {
            <span style="color:#2b91af;">Application</span>.EnableVisualStyles();
            <span style="color:#2b91af;">Application</span>.SetCompatibleTextRenderingDefault(<span style="color:blue;">false</span>);
            <span style="color:#2b91af;">SingleInstanceManager </span>manager = <span style="color:blue;">new </span><span style="color:#2b91af;">SingleInstanceManager</span>();
            manager.Run(args);
        }
    }

    <span style="color:green;">// Using VB bits to detect single instances and process accordingly:
    //  * OnStartup is fired when the first instance loads
    //  * OnStartupNextInstance is fired when the application is re-run again
    //    NOTE: it is redirected to this instance thanks to IsSingleInstance
    </span><span style="color:blue;">public class </span><span style="color:#2b91af;">SingleInstanceManager </span>: <span style="color:#2b91af;">WindowsFormsApplicationBase
    </span>{
        <span style="color:#2b91af;">SingleInstanceApplication </span>app;

        <span style="color:blue;">public </span>SingleInstanceManager()
        {
            <span style="color:blue;">this</span>.IsSingleInstance = <span style="color:blue;">true</span>;
        }

        <span style="color:blue;">protected override bool </span>OnStartup(Microsoft.VisualBasic.ApplicationServices.<span style="color:#2b91af;">StartupEventArgs </span>e)
        {
            <span style="color:green;">// First time app is launched
            </span>app = <span style="color:blue;">new </span><span style="color:#2b91af;">SingleInstanceApplication</span>();
            app.Run();
            <span style="color:blue;">return false</span>;
        }

        <span style="color:blue;">protected override void </span>OnStartupNextInstance(<span style="color:#2b91af;">StartupNextInstanceEventArgs </span>eventArgs)
        {
            <span style="color:green;">// Subsequent launches            
            </span><span style="color:blue;">base</span>.OnStartupNextInstance(eventArgs);
            app.Activate();
        }
    }

    <span style="color:blue;">public class </span><span style="color:#2b91af;">SingleInstanceApplication
    </span>{
        <span style="color:blue;">protected </span><span style="color:#2b91af;">Form </span>mainForm;

        <span style="color:blue;">public void </span>Activate()
        {
            <span style="color:green;">// Reactivate application's main window            
            </span>mainForm.Activate();
        }    

        <span style="color:blue;">public void </span>Run()
        {
            <span style="color:#2b91af;">Application</span>.Run(mainForm = <span style="color:blue;">new </span><span style="color:#2b91af;">Form1</span>());
        }
    }
}</pre>
<p>Para un ejemplo con <strong>WPF</strong> usando <strong>WindowsFormsApplicationBase</strong> tanto con VB como con C# ver: <a href="http://msdn.microsoft.com/library/ms771662.aspx" target="_blank">WPF: Single Instance Detection Sample</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://willyxoft.wordpress.com/2010/01/27/ejecutar-solo-una-instancia-csharp/feed/</wfw:commentRss>
			<slash:comments>12</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1965</post-id>
		<media:content medium="image" url="https://2.gravatar.com/avatar/2a63ebd12229e293b69372f6ab56afe07fc43adcb6e2f8a591fa5caf44a3477a?s=96&amp;d=wavatar&amp;r=PG">
			<media:title type="html">WillyXoft</media:title>
		</media:content>
	</item>
		<item>
		<title>Roadmap de EntLib 5.0</title>
		<link>https://willyxoft.wordpress.com/2010/01/21/entlib-5-roadmap/</link>
					<comments>https://willyxoft.wordpress.com/2010/01/21/entlib-5-roadmap/#respond</comments>
		
		<dc:creator><![CDATA[Willy Mejia]]></dc:creator>
		<pubDate>Thu, 21 Jan 2010 19:47:57 +0000</pubDate>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[dotNet]]></category>
		<category><![CDATA[EntLib]]></category>
		<category><![CDATA[Unity]]></category>
		<guid isPermaLink="false">http://willyxoft.wordpress.com/2010/01/21/entlib-5-roadmap/</guid>

					<description><![CDATA[Para quien no sepa que es EntLib: Microsoft Enterprise Library (aka EntLib) es una colección de componentes de software reutilizables (conocidos como “Application Blocks”) diseñados para ayudar a los desarrolladores de software de la plataforma .NET a lidiar con los &#8230; <a href="https://willyxoft.wordpress.com/2010/01/21/entlib-5-roadmap/">Seguir leyendo <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[<p>Para quien no sepa que es EntLib: </p>
<p>Microsoft Enterprise Library (aka EntLib) es una colección de componentes de software reutilizables (conocidos como “Application Blocks”) diseñados para ayudar a los desarrolladores de software de la plataforma .NET a lidiar con los problemas comunes en el desarrollo empresarial tales como registro, validación, acceso a datos, manejo de excepciones, y muchos otros. Los application blocks son un tipo de guías directivas, proporcionadas en forma de código fuente, casos de prueba, y documentación que se pueden utilizar &quot;tal cual&quot;, o bien ampliarse o modificarse por los desarrolladores para utilizarse en proyectos de desarrollo. </p>
<p>Unity Application Block (o simplemente Unity) es un contenedor DI (dependency injection) ligero y extensible, que puede utilizarse de forma independiente (existiendo una versión para Silverlight) como integralmente con EntLib. </p>
<p><strong>Mayor información en:</strong> </p>
<ul>
<li><a href="http://msdn.microsoft.com/library/cc467894.aspx" target="_blank">Microsoft Enterprise Library</a> </li>
<li><a href="http://msdn.microsoft.com/library/dd203101.aspx" target="_blank">Unity Application Block</a> </li>
</ul>
<p>A continuación el diagrama del Roadmap para <strong>EntLib 5.0</strong> y Unity 2.0.</p>
<p><a href="http://blogs.msdn.com/blogfiles/agile/WindowsLiveWriter/AnnouncingEnterpriseLibrary5.0a.0Roadmap_10852/RevisedRoadMapv5_2.png" target="_blank"><img src="https://i0.wp.com/blogs.msdn.com/blogfiles/agile/WindowsLiveWriter/AnnouncingEnterpriseLibrary5.0a.0Roadmap_10852/RevisedRoadMapv5_2.png" width="500" height="285" /></a></p>
<p>La imagen habla por si misma, pero para que quede mas claro:</p>
<ul>
<li>Primera Beta en Febrero, solo para VS2008 SP1 </li>
<li>Segunda Beta en Marzo, tanto para VS2008 SP1 como VS2010 RC (a liberarse en Febrero) </li>
<li>El RTW se espera sea lanzado en Abril (a la par de VS2010) </li>
</ul>
<p><strong>Mayor información en:</strong> </p>
<ul>
<li><a href="http://blogs.msdn.com/agile/archive/2010/01/20/announcing-enterprise-library-5-0-and-unity-2-0-roadmap.aspx">Announcing Enterprise Library 5.0 and Unity 2.0 Roadmap</a> </li>
</ul>
]]></content:encoded>
					
					<wfw:commentRss>https://willyxoft.wordpress.com/2010/01/21/entlib-5-roadmap/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1927</post-id>
		<media:content medium="image" url="https://2.gravatar.com/avatar/2a63ebd12229e293b69372f6ab56afe07fc43adcb6e2f8a591fa5caf44a3477a?s=96&amp;d=wavatar&amp;r=PG">
			<media:title type="html">WillyXoft</media:title>
		</media:content>

		<media:content medium="image" url="http://blogs.msdn.com/blogfiles/agile/WindowsLiveWriter/AnnouncingEnterpriseLibrary5.0a.0Roadmap_10852/RevisedRoadMapv5_2.png"/>
	</item>
		<item>
		<title>Migrar de VB6 a .NET</title>
		<link>https://willyxoft.wordpress.com/2009/12/15/migrar-de-vb6-a-net/</link>
					<comments>https://willyxoft.wordpress.com/2009/12/15/migrar-de-vb6-a-net/#comments</comments>
		
		<dc:creator><![CDATA[Willy Mejia]]></dc:creator>
		<pubDate>Tue, 15 Dec 2009 22:24:18 +0000</pubDate>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Visual Studio]]></category>
		<guid isPermaLink="false">http://willyxoft.wordpress.com/2009/12/15/migrar-de-vb6-a-net/</guid>

					<description><![CDATA[Tal como ya lo había mencionado hace años, existen las siguientes opciones cuando se lidian con aplicaciones VB6 legadas: Dejarla como está &#8211; Si la aplicación rara vez es actualizada o modificada y/o aún “funciona bien” tal y como está… &#8230; <a href="https://willyxoft.wordpress.com/2009/12/15/migrar-de-vb6-a-net/">Seguir leyendo <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[<p>Tal como ya lo había <a href="https://willyxoft.wordpress.com/2006/05/22/utilizar-net-desde-vb6/">mencionado hace años</a>, existen las siguientes opciones cuando se lidian con aplicaciones VB6 legadas:</p>
<ul>
<li><strong>Dejarla como está </strong>&#8211; Si la aplicación rara vez es actualizada o modificada y/o aún “funciona bien” tal y como está… </li>
<li><strong>Extenderla con .NET</strong> (aka <a href="http://msdn.microsoft.com/vbrun/ms788241.aspx" target="_blank">VB Fusion</a>) &#8211; Añadiéndole nuevas funcionalidades utilizando el .NET Framework. Se pueden añadir WinForms y controles a una aplicación VB6 con la ayuda de <a href="http://download.microsoft.com/documents/uk/msdn/vb6/Interop_Toolkit_Whitepaper.pdf" target="_blank">Interop Form Toolkit 2.0</a> (PDF). </li>
<li><strong>Actualizarla a .NET</strong> &#8211; Lo que puede abordarse de dos formas:
<ul>
<li><strong>Migrándola a VB.NET </strong>&#8211; Con la ayuda de una herramienta de migración que convierta gran parte del código VB6 a su equivalente código .NET. </li>
<li><strong>Reescribiéndola &#8211; </strong>Reescribir manualmente el código entero en .NET (en cuyo caso no solo a VB.NET sino a C#, o bien incluso a otro lenguaje/plataforma). Este es un enfoque viable cuando la aplicación VB6 inicial fue mal escrita y se desea una reingeniería y/o reescritura de la misma, o la aplicación necesita un cambio importante para satisfacer las nuevas necesidades; o bien el código fuente ya no se encuentra disponible. </li>
</ul>
</li>
</ul>
<p>Otra posible opción es <strong>remplazarla</strong>, si es que existe una aplicación empaquetada o un servicio que provea la misma funcionalidad. No obstante no es viable en la mayoría de las aplicaciones VB6, puesto que se tratan de “soluciones a la medida”.</p>
<p>Si la <strong>migración</strong> es el camino por recorrer, existen tres herramientas útiles:</p>
<ul>
<li><a href="http://msdn.microsoft.com/library/0zc22a8x.aspx" target="_blank">Microsoft Visual Basic Upgrade Wizard</a>, incluido en Visual Studio 2003-2008 y que funciona bien con proyectos pequeños –y algunos medianos.</li>
<li><a href="http://www.artinsoft.com/pr_vbcompanion.aspx" target="_blank">Visual Basic Upgrade Companion</a> de ArtinSoft, que de hecho es el fabricante del asistente incluido en Visual Studio, pero que también ofrece otras herramientas y servicios para migraciones mas complejas. </li>
<li><a href="http://www.vbmigration.com/" target="_blank">Visual Basic Migration Partner</a> de Code Architects, que también ofrece herramientas y servicios de migración.</li>
</ul>
<p>Recientemente Microsoft ha publicado un <a href="http://www.microsoft.com/casestudies/Case_Study_Detail.aspx?casestudyid=4000006181" target="_blank">caso de estudio</a> destacando el éxito de la migración de 950,000 líneas de código VB6 a .NET. El proceso fue dirigido por <a href="http://www.sisworld.com/dbf/main.sis" target="_blank">SiS</a>, una compañía austriaca de TI, usando <a href="http://www.vbmigration.com/" target="_blank">Visual Basic Migration Partner</a> durante un período de 9 meses. El proyecto fue un sistema ERP construido a lo largo de 10 años y que constaba de 33 aplicaciones.</p>
<ul>
<li>25,000 líneas de código “difíciles” fueron tomadas como prototipo de migración, las cuales “tomó 2.5 horas el obtener un proyecto que compile y se ejecute usando VB Migration Partner, y 13 horas con la de su competidor&quot; (ouch! Artinsoft) dijo Otto Wiegele, Chief Executive Officer de SIS </li>
<li>El esfuerzo requerido para el proyecto incluyen 3,650 horas-desarrollador para migrar el código, 3,400 horas para la revisión de código y refactorización, y 1,300 horas para pruebas </li>
<li>Tres desarrolladores migraron 950,000 líneas de código de Visual Basic 6.0 a. NET Framework en sólo nueve meses </li>
<li>Costo para el cliente final fue € 750,000 contra un estimado de 3 a 5 millones de euros que habría costado implementar un sistema ERP comercial </li>
</ul>
<h4>Mayor información:</h4>
<ul>
<li><a href="http://msdn.microsoft.com/vbrun/default.aspx" target="_blank">VBRun: VB6 Resource Center</a> </li>
<li><a href="http://msdn.microsoft.com/en-gb/dd408373.aspx" target="_blank">Secure your Visual Basic 6.0 investment with Microsoft .NET</a> </li>
<li><a href="http://www.microsoft.com/casestudies/Case_Study_Detail.aspx?casestudyid=4000006181" target="_blank">Consultants Migrate 950,000 Lines of Visual Basic Code to .NET Framework in Nine Months</a> </li>
</ul>
]]></content:encoded>
					
					<wfw:commentRss>https://willyxoft.wordpress.com/2009/12/15/migrar-de-vb6-a-net/feed/</wfw:commentRss>
			<slash:comments>5</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1763</post-id>
		<media:content medium="image" url="https://2.gravatar.com/avatar/2a63ebd12229e293b69372f6ab56afe07fc43adcb6e2f8a591fa5caf44a3477a?s=96&amp;d=wavatar&amp;r=PG">
			<media:title type="html">WillyXoft</media:title>
		</media:content>
	</item>
		<item>
		<title>Silverlight 4 Beta</title>
		<link>https://willyxoft.wordpress.com/2009/11/24/silverlight-4-beta/</link>
					<comments>https://willyxoft.wordpress.com/2009/11/24/silverlight-4-beta/#respond</comments>
		
		<dc:creator><![CDATA[Willy Mejia]]></dc:creator>
		<pubDate>Tue, 24 Nov 2009 05:00:00 +0000</pubDate>
				<category><![CDATA[NetFx4]]></category>
		<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[Visual Studio]]></category>
		<guid isPermaLink="false">http://willyxoft.wordpress.com/2009/11/24/silverlight-4-beta/</guid>

					<description><![CDATA[Durante el PDC, Scott Guthrie presentó la versión beta para desarrolladores de Silverlight 4. Ver Day Two: Steven Sinofsky, Scott Guthrie &#38; Kurt DelBene. Para esta beta no hay runtime para el usuario final y las herramientas están destinados únicamente &#8230; <a href="https://willyxoft.wordpress.com/2009/11/24/silverlight-4-beta/">Seguir leyendo <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[<p><img style="display:inline;margin:0 10px 10px 0;" align="left" src="https://i0.wp.com/weblogs.asp.net/blogs/lduveau/sl4bloglogo_0DE0BF1F.png" width="120" height="118" /> Durante el PDC, <strong>Scott Guthrie</strong> presentó la versión beta para desarrolladores de <strong>Silverlight 4</strong>.</p>
<p>Ver <a href="http://microsoftpdc.com/Sessions/KEY02" target="_blank">Day Two: Steven Sinofsky, Scott Guthrie &amp; Kurt DelBene</a>.</p>
<p>Para esta beta no hay runtime para el usuario final y las herramientas están destinados únicamente a los desarrolladores sin licencia Go-Live –por lo que me parece más un CTP…</p>
<h4>Descargas</h4>
<ul>
<li><a href="http://msdn.microsoft.com/en-us/vstudio/dd582936.aspx" target="_blank">Visual Studio 2010 Beta 2</a> o <a href="http://go.microsoft.com/fwlink/?LinkID=167874" target="_blank">Visual Web Developer Express 2010 Beta 2</a> </li>
<li><a href="http://go.microsoft.com/fwlink/?LinkID=177508" target="_blank">Silverlight 4 Tools for Visual Studio 2010 Beta 2</a> </li>
<li><a href="http://go.microsoft.com/fwlink/?LinkId=169446" target="_blank">Expression Blend for. NET Preview 4</a> </li>
</ul>
<p>Silverlight 4 (Beta) requiere Visual Studio 2010 (Beta 2), el cual puede ser instalado lado a lado con Visual Studio 2008 SP1. Favor de <a href="http://blogs.msdn.com/amyd/archive/2009/10/21/visual-studio-2010-and-silverlight-3-sdk.aspx" target="_blank">leer el problema conocido en la instalación de Visual Studio 2010, si ya tiene el Silverlight 3 SDK instalado</a>.</p>
<p>Descargas adicionales:</p>
<ul>
<li><a href="http://go.microsoft.com/fwlink/?LinkID=167824" target="_blank">Silverlight 4 SDK CHM</a> (o bien lea la <a href="http://go.microsoft.com/fwlink/?LinkID=111305" target="_blank">documentación On-line</a>) </li>
<li><a href="http://silverlight.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=36060" target="_blank">Silverlight 4 Beta Toolkit</a> </li>
<li><a href="http://smf.codeplex.com" target="_blank">Silverlight Media Framework</a> </li>
<li>Runtimes de desarrollo: <a href="http://silverlight.dlservice.microsoft.com/download/F/6/5/F653F7FD-AD4D-411D-8B1F-9C4B1BD69881/Silverlight_Developer.exe">Windows</a> y <a href="http://silverlight.dlservice.microsoft.com/download/F/6/5/F653F7FD-AD4D-411D-8B1F-9C4B1BD69881/Silverlight_Developer.dmg">Mac</a> * </li>
<li><a href="http://go.microsoft.com/fwlink/?LinkID=169408" target="_blank">Silverlight SDK 4</a> * </li>
<li><a href="http://go.microsoft.com/fwlink/?LinkId=169231" target="_blank">WCF RIA Services</a> (anteriormente .NET RIA Services) * </li>
</ul>
<p>* Incluido en Silverlight 4 Tools for VS2010.</p>
<h4>Recursos</h4>
<ul>
<li><a href="http://go.microsoft.com/fwlink/?LinkId=177698" target="_blank">&quot;What&#8217;s New in Silverlight 4&quot;</a> por Papa John </li>
<li><a href="http://www.codeworks.it/public/docs/Silverlight4eng.pdf" target="_blank">Silverlight 4: &quot;What’s New&quot;</a> [pdf] por Corrado Cavalli </li>
<li>Channel9: <a href="http://channel9.msdn.com/learn/courses/Silverlight4/" target="_blank">Silverlight 4 Training Course</a>
<ul>
<li><a href="http://go.microsoft.com/fwlink/?LinkId=177699" target="_blank">&quot;What&#8217;s New in Silverlight 4 Beta&quot;</a> </li>
</ul>
</li>
<li>PDC’09:
<ul>
<li><a href="http://microsoftpdc.com/Sessions/P09-11" target="_blank">Microsoft Silverlight 4 Overview</a> </li>
<li><a href="http://microsoftpdc.com/Sessions/CL20" target="_blank">Improving and Extending the Sandbox with Microsoft Silverlight 4</a> </li>
<li><a href="http://microsoftpdc.com/Sessions/CL19" target="_blank">Building Line of Business Applications with Microsoft Silverlight 4</a> </li>
</ul>
</li>
<li>Silverlight.net:
<ul>
<li><a href="http://silverlight.net/getstarted/silverlight-4-beta/" target="_blank">Silverlight 4 Beta Information</a> </li>
<li><a href="http://silverlight.net/learn/videos/silverlight-4-beta-videos/" target="_blank">Videos de aprendizaje de Silverlight 4</a> </li>
<li><a href="http://silverlight.net/learn/handsonlabs" target="_blank">Silverlight Hand On Labs</a> </li>
</ul>
</li>
<li>Foros <a href="http://forums.silverlight.net/forums/59.aspx" target="_blank">Silverlight 4 beta</a> y <a href="http://forums.silverlight.net/forums/53.aspx" target="_blank">WCF RIA Services</a> </li>
<li>Blogs de <a href="http://timheuer.com/" target="_blank">Tim Heuer</a>, <a href="http://blogs.silverlight.net/blogs/jesseliberty/" target="_blank">Jesse Liberty</a>, <a href="http://johnpapa.net" target="_blank">Papa John</a>, <a href="http://www.adamkinney.com" target="_blank">Adam Kinney</a> y <a href="http://www.silverlight.net/community/blogarchive/microsoft/1/" target="_blank">Silverlight Community</a> </li>
<li>En castellano, el blog de <a href="http://rdiazconcha.com/" target="_blank">Rodrigo Díaz Concha</a>. </li>
</ul>
<h4><a name="whatsnew"></a>¿Qué hay de nuevo en Silverlight 4 Beta?</h4>
<p>Además de los recursos listados, en el blog de <strong>Tim Heuer</strong> encontramos un extenso post al respecto (<a href="http://timheuer.com/blog/archive/2009/11/18/whats-new-in-silverlight-4-complete-guide-new-features.aspx" target="_blank">Silverlight 4 Beta – A guide to the new features</a>) que lista las novedades:</p>
<ul>
<li><a href="http://timheuer.com/blog/archive/2009/11/18/whats-new-in-silverlight-4-complete-guide-new-features.aspx#tools" target="_blank">Tooling</a> </li>
<li><a href="http://timheuer.com/blog/archive/2009/11/18/whats-new-in-silverlight-4-complete-guide-new-features.aspx#printing" target="_blank">Printing API</a> </li>
<li><a href="http://timheuer.com/blog/archive/2009/11/18/whats-new-in-silverlight-4-complete-guide-new-features.aspx#rightclick" target="_blank">Right-click event handling</a> </li>
<li><a href="http://timheuer.com/blog/archive/2009/11/18/whats-new-in-silverlight-4-complete-guide-new-features.aspx#webcam" target="_blank">Webcam/microphone access</a> </li>
<li><a href="http://timheuer.com/blog/archive/2009/11/18/whats-new-in-silverlight-4-complete-guide-new-features.aspx#mousehweel" target="_blank">Mouse wheel support</a> </li>
<li><a href="http://timheuer.com/blog/archive/2009/11/18/whats-new-in-silverlight-4-complete-guide-new-features.aspx#richtext" target="_blank">RichTextArea Control</a> </li>
<li><a href="http://timheuer.com/blog/archive/2009/11/18/whats-new-in-silverlight-4-complete-guide-new-features.aspx#commands" target="_blank">ICommand support</a> </li>
<li><a href="http://timheuer.com/blog/archive/2009/11/18/whats-new-in-silverlight-4-complete-guide-new-features.aspx#clipboard" target="_blank">Clipboard API</a> </li>
<li><a href="http://timheuer.com/blog/archive/2009/11/18/whats-new-in-silverlight-4-complete-guide-new-features.aspx#htmlhost" target="_blank">HTML Hosting with WebBrowser</a> </li>
<li><a href="http://timheuer.com/blog/archive/2009/11/18/whats-new-in-silverlight-4-complete-guide-new-features.aspx#elevated" target="_blank">Elevated trust applications</a> </li>
<li><a href="http://timheuer.com/blog/archive/2009/11/18/whats-new-in-silverlight-4-complete-guide-new-features.aspx#localfiles" target="_blank">Local file access</a> </li>
<li><a href="http://timheuer.com/blog/archive/2009/11/18/whats-new-in-silverlight-4-complete-guide-new-features.aspx#com" target="_blank">COM interop</a> </li>
<li><a href="http://timheuer.com/blog/archive/2009/11/18/whats-new-in-silverlight-4-complete-guide-new-features.aspx#toast" target="_blank">Notification (“toast”) API</a> </li>
<li><a href="http://timheuer.com/blog/archive/2009/11/18/whats-new-in-silverlight-4-complete-guide-new-features.aspx#netauth" target="_blank">Network authentication</a> </li>
<li><a href="http://timheuer.com/blog/archive/2009/11/18/whats-new-in-silverlight-4-complete-guide-new-features.aspx#xdomain" target="_blank">Cross-domain Networking changes</a> </li>
<li><a href="http://timheuer.com/blog/archive/2009/11/18/whats-new-in-silverlight-4-complete-guide-new-features.aspx#fullscreen" target="_blank">Keyboard access in full screen mode</a> </li>
<li><a href="http://timheuer.com/blog/archive/2009/11/18/whats-new-in-silverlight-4-complete-guide-new-features.aspx#texttrim" target="_blank">Text trimming</a> </li>
<li><a href="http://timheuer.com/blog/archive/2009/11/18/whats-new-in-silverlight-4-complete-guide-new-features.aspx#viewbox" target="_blank">ViewBox</a> </li>
<li><a href="http://timheuer.com/blog/archive/2009/11/18/whats-new-in-silverlight-4-complete-guide-new-features.aspx#bidi-rtl" target="_blank">Right-to-left, BiDi and complex script</a> </li>
<li><a href="http://timheuer.com/blog/archive/2009/11/18/whats-new-in-silverlight-4-complete-guide-new-features.aspx#offlinedrm" target="_blank">Offline DRM</a> </li>
<li><a href="http://timheuer.com/blog/archive/2009/11/18/whats-new-in-silverlight-4-complete-guide-new-features.aspx#h264drm" target="_blank">H.264 protected content</a> </li>
<li><a href="http://timheuer.com/blog/archive/2009/11/18/whats-new-in-silverlight-4-complete-guide-new-features.aspx#droptarget" target="_blank">Silverlight as a drop target</a> </li>
<li>Data binding
<ul>
<li><a href="http://timheuer.com/blog/archive/2009/11/18/whats-new-in-silverlight-4-complete-guide-new-features.aspx#idataerrorinfo" target="_blank">IDataErrorInfo and Async Validation</a> </li>
<li><a href="http://timheuer.com/blog/archive/2009/11/18/whats-new-in-silverlight-4-complete-guide-new-features.aspx#dobind" target="_blank">DependencyObject Binding</a> </li>
<li><a href="http://timheuer.com/blog/archive/2009/11/18/whats-new-in-silverlight-4-complete-guide-new-features.aspx#stringformat" target="_blank">StringFormat, TargetNullValue, FallbackValue</a> </li>
</ul>
</li>
<li><a href="http://timheuer.com/blog/archive/2009/11/18/whats-new-in-silverlight-4-complete-guide-new-features.aspx#mef" target="_blank">Managed Extensibility Framework (MEF)</a> </li>
<li><a href="http://timheuer.com/blog/archive/2009/11/18/whats-new-in-silverlight-4-complete-guide-new-features.aspx#datagrid" target="_blank">DataGrid enhancements</a> </li>
<li><a href="http://timheuer.com/blog/archive/2009/11/18/whats-new-in-silverlight-4-complete-guide-new-features.aspx#fluidui" target="_blank">Fluid UI support in items controls</a> </li>
<li><a href="http://timheuer.com/blog/archive/2009/11/18/whats-new-in-silverlight-4-complete-guide-new-features.aspx#implicit-style" target="_blank">Implicit theming</a> </li>
<li><a href="http://timheuer.com/blog/archive/2009/11/18/whats-new-in-silverlight-4-complete-guide-new-features.aspx#google-chrome" target="_blank">Google Chrome support</a> </li>
</ul>
]]></content:encoded>
					
					<wfw:commentRss>https://willyxoft.wordpress.com/2009/11/24/silverlight-4-beta/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1648</post-id>
		<media:content medium="image" url="https://2.gravatar.com/avatar/2a63ebd12229e293b69372f6ab56afe07fc43adcb6e2f8a591fa5caf44a3477a?s=96&amp;d=wavatar&amp;r=PG">
			<media:title type="html">WillyXoft</media:title>
		</media:content>

		<media:content medium="image" url="http://weblogs.asp.net/blogs/lduveau/sl4bloglogo_0DE0BF1F.png"/>
	</item>
		<item>
		<title>Esquema HTML 5 para VWD 2008</title>
		<link>https://willyxoft.wordpress.com/2009/11/19/html5-para-vwd2008/</link>
					<comments>https://willyxoft.wordpress.com/2009/11/19/html5-para-vwd2008/#respond</comments>
		
		<dc:creator><![CDATA[Willy Mejia]]></dc:creator>
		<pubDate>Thu, 19 Nov 2009 09:01:30 +0000</pubDate>
				<category><![CDATA[Visual Studio]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[vs2008]]></category>
		<category><![CDATA[vwd2008]]></category>
		<category><![CDATA[webdev]]></category>
		<guid isPermaLink="false">http://willyxoft.wordpress.com/2009/11/19/html5-para-vwd2008/</guid>

					<description><![CDATA[El equipo Microsoft de Visual Web Developer ha creado un nuevo esquema de Intellisense el cual se puede agregar a VS 2008 o VWD Express 2008 para así disponer de Intellisense y validación para los elementos HTML 5. Nota: El &#8230; <a href="https://willyxoft.wordpress.com/2009/11/19/html5-para-vwd2008/">Seguir leyendo <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[<p><!-- tweetmeme button BEGIN -->  </p>
<div><a href="http://api.tweetmeme.com/share?source=willyxoft&amp;url=https://willyxoft.wordpress.com/2009/11/19/html5-para-vwd2008/"><img loading="lazy" style="display:inline;margin:0 10px 10px;" border="0" align="right" src="https://i0.wp.com/api.tweetmeme.com/imagebutton.gif" width="51" height="61" /></a></div>
<p> <!-- tweetmeme button END -->  </p>
<p>El equipo Microsoft de Visual Web Developer ha creado un nuevo esquema de Intellisense el cual se puede agregar a VS 2008 o VWD Express 2008 para así disponer de Intellisense y validación para los elementos HTML 5. </p>
<p><strong>Nota</strong>: El esquema es solo para el “marcado” (tags) HTML, aún no para el DOM2 para el Intellisense de Javascript.</p>
<p>Para instalarlo, dirigirse a: <a href="http://blogs.msdn.com/webdevtools/archive/2009/11/18/html-5-intellisense-and-validation-schema-for-visual-studio-2008-and-visual-web-developer.aspx" target="_blank">HTML 5 intellisense and validation schema for Visual Studio 2008 and Visual Web Developer</a>, descargar el adjunto: <a href="http://blogs.msdn.com/webdevtools/attachment/9924922.ashx">html5.zip</a> y seguir las instrucciones, las cuales se reducen a copiar el archivo <strong>html_5.xsd</strong> a “%ProgramFiles%\Microsoft Visual Studio 9.0\Common7\Packages\schemas\html” y combinar el archivo <strong>*.REG</strong> correspondiente al tipo de S.O. y edición de VS 2008.</p>
<p>Una vez realizado lo anterior, podremos seleccionar “HTML 5” en el cuadro desplegable de esquemas de validación, y los elementos HTML 5 aparecerán en el Intellisense y la ventana de propiedades.</p>
<p><img loading="lazy" style="display:inline;border-width:0;" title="vwd_html5" border="0" alt="vwd_html5" src="https://willyxoft.wordpress.com/wp-content/uploads/2009/11/vwd_html5.png?w=500&#038;h=419" width="500" height="419" /></p>
<p>Si se preguntan ¿en que browser podemos probar HTML 5? La respuesta la podemos leer en: <a href="http://www.deepbluesky.com/blog/-/browser-support-for-css3-and-html5_72/" target="_blank">Browser support for CSS3 and HTML5</a>.</p>
<blockquote>
<p><font color="#ff0000"><strong>Actualización (23-Nov):</strong></font> El equipo de VWD ya ha corregido la información y los archivos *.reg erróneos para VWD Express 2008, por lo que, si descargan el archivo <a href="http://blogs.msdn.com/webdevtools/attachment/9924922.ashx">html5.zip</a> actualizado, ya no es necesario hacer lo que sigue a continuación.</p>
</blockquote>
<p> <span id="more-1572"></span>  </p>
<p><font color="#ff0000"><strong>[ATENCIÓN]</strong></font> </p>
<p>El post original indica que si contamos con un S.O. de 32 bit y VWD Express 2008, habría que cambiar en el path “Microsoft Visual Studio 9.0” por “Microsoft Visual Web Developer”, lo cual al menos en mi caso no fue necesario. Es decir, aún con VWD Express 2008 utilice el path indicado para VS 2008.</p>
<p>Por otra parte, también existe un error en el archivo *.REG correspondiente (HTML-5-Schema-Reg-x86-VWD.reg), mismo que se tiene que editar para que funcione correctamente. </p>
<p>La corrección consiste en cambiar “VisualWebDeveloper” por “VWDExpress” en la clave de registro: </p>
<p>[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualWebDeveloper\9.0\Packages\{1B437D20-F8FE-11D2-A6AE-00104BCC7269}\Schemas\Schema 23]</p>
<p>De modo que el archivo HTML-5-Schema-Reg-x86-VWD.reg finalmente queda de la siguiente forma:</p>
<div style="border-bottom:silver 1px solid;text-align:left;border-left:silver 1px solid;background-color:#f0f6fc;width:92%;display:block;direction:ltr;white-space:pre;overflow:auto;border-top:silver 1px solid;cursor:text;border-right:silver 1px solid;margin:2ex 0;padding:1ex 1ex 2ex;">
<pre>Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VWDExpress\9.0\Packages\{1B437D20-F8FE-11D2-A6AE-00104BCC7269}\Schemas\Schema 23]
&quot;File&quot;=&quot;html\\html_5.xsd&quot;
&quot;Friendly Name&quot;=&quot;HTML 5&quot;
&quot;URI&quot;=&quot;http://schemas.microsoft.com/intellisense/html-5&quot;</pre>
</div>
<p>Guardamos el archivo y lo combinamos en el Registro de Windows. </p>
<p><strong>Nota</strong>: Supongo que ésta misma corrección debe hacerse en el archivo para 64-bit, pero no lo puedo asegurar.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://willyxoft.wordpress.com/2009/11/19/html5-para-vwd2008/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1572</post-id>
		<media:content medium="image" url="https://2.gravatar.com/avatar/2a63ebd12229e293b69372f6ab56afe07fc43adcb6e2f8a591fa5caf44a3477a?s=96&amp;d=wavatar&amp;r=PG">
			<media:title type="html">WillyXoft</media:title>
		</media:content>

		<media:content medium="image" url="http://api.tweetmeme.com/imagebutton.gif?url=https://willyxoft.wordpress.com/2009/11/19/html5-para-vwd2008/"/>

		<media:content medium="image" url="https://willyxoft.wordpress.com/wp-content/uploads/2009/11/vwd_html5.png">
			<media:title type="html">vwd_html5</media:title>
		</media:content>
	</item>
		<item>
		<title>Guía SDL 4.1a</title>
		<link>https://willyxoft.wordpress.com/2009/11/13/guia-seguridad-sdl-4-1a/</link>
					<comments>https://willyxoft.wordpress.com/2009/11/13/guia-seguridad-sdl-4-1a/#respond</comments>
		
		<dc:creator><![CDATA[Willy Mejia]]></dc:creator>
		<pubDate>Fri, 13 Nov 2009 16:31:28 +0000</pubDate>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Seguridad]]></category>
		<guid isPermaLink="false">http://willyxoft.wordpress.com/2009/11/13/guia-seguridad-sdl-4-1a/</guid>

					<description><![CDATA[Guía orientativa de Seguridad: SDL (Security Development Lifecycle) versión 4.1a Como parte de su compromiso con un ecosistema informático más seguro y confiable, Microsoft lanza la guía orientativa del proceso SDL ver. 4.1a. Los responsables de TI y los desarrolladores &#8230; <a href="https://willyxoft.wordpress.com/2009/11/13/guia-seguridad-sdl-4-1a/">Seguir leyendo <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[<p><strong>Guía orientativa de Seguridad:      <br />SDL (Security Development Lifecycle) versión 4.1a</strong></p>
<p>Como parte de su compromiso con un ecosistema informático más seguro y confiable, Microsoft lanza la guía orientativa del proceso SDL ver. 4.1a. Los responsables de TI y los desarrolladores de software pueden aprovechar este contenido para mejorar e informar su propio software de seguridad y los programas de garantía de privacidad. </p>
<p>Además, ésta guía incluye <em>SDL for Agile Development </em>(SDL para Desarrollo Ágil).</p>
<blockquote>
<p>Some examples of every-sprint requirements include:</p>
<ul>
<li>Run analysis tools daily or per build (see Tooling and Automation later in this Agile-SDL section). </li>
<li>Threat model all new features (see Threat Modeling: The Cornerstone of the SDL). </li>
<li>Ensure that each project member has completed at least one security training course in the past year (see Security Education). </li>
<li>Use filtering and escaping libraries around all Web output. </li>
<li>Use only strong crypto in new code (AES, RSA, and SHA-256 or better). </li>
</ul>
<p>For a complete list of the every-sprint requirements as followed by Microsoft SDL-Agile teams, see Appendix P.</p>
<p><img loading="lazy" style="display:inline;border-width:0;" title="sdl-agile" border="0" alt="sdl-agile" src="https://willyxoft.wordpress.com/wp-content/uploads/2009/11/sdlagile.png?w=480&#038;h=508" width="480" height="508" /> </p>
</blockquote>
<h4>+ info y descargas</h4>
<ul>
<li><a href="http://adtmag.com/articles/2009/11/09/ms-updates-sdl-for-agile.aspx" target="_blank">[ADT] Security Development Lifecycle Gets an Agile Update</a> </li>
<li><a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=d045a05a-c1fc-48c3-b4d5-b20353f97122&amp;displaylang=en" target="_blank">Download Microsoft Security Development Lifecycle (SDL) &#8211; Version 4.1a</a> </li>
<li><a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=79866b28-b03b-4bbb-91d2-0ed3f966dede&amp;displaylang=en" target="_blank">Download Microsoft SDL Process Template for Visual Studio Team System</a> </li>
<li><a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=A48CCCB1-814B-47B6-9D17-1E273F65AE19&amp;displaylang=en" target="_blank">Download SDL Threat Modeling Tool 3.1</a> </li>
<li><a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=7C75F87F-F210-4EE0-A6D9-65D8A6DDD1B7&amp;displaylang=en" target="_blank">Security Considerations for Client and Cloud Applications</a> </li>
</ul>
]]></content:encoded>
					
					<wfw:commentRss>https://willyxoft.wordpress.com/2009/11/13/guia-seguridad-sdl-4-1a/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1537</post-id>
		<media:content medium="image" url="https://2.gravatar.com/avatar/2a63ebd12229e293b69372f6ab56afe07fc43adcb6e2f8a591fa5caf44a3477a?s=96&amp;d=wavatar&amp;r=PG">
			<media:title type="html">WillyXoft</media:title>
		</media:content>

		<media:content medium="image" url="https://willyxoft.wordpress.com/wp-content/uploads/2009/11/sdlagile.png">
			<media:title type="html">sdl-agile</media:title>
		</media:content>
	</item>
		<item>
		<title>Cambios en WCF 4.0 Beta 2</title>
		<link>https://willyxoft.wordpress.com/2009/11/05/cambios-en-wcf-4-0-beta-2/</link>
					<comments>https://willyxoft.wordpress.com/2009/11/05/cambios-en-wcf-4-0-beta-2/#respond</comments>
		
		<dc:creator><![CDATA[Willy Mejia]]></dc:creator>
		<pubDate>Thu, 05 Nov 2009 08:36:28 +0000</pubDate>
				<category><![CDATA[NetFx4]]></category>
		<category><![CDATA[WCF]]></category>
		<category><![CDATA[WF]]></category>
		<guid isPermaLink="false">http://willyxoft.wordpress.com/2009/11/05/cambios-en-wcf-4-0-beta-2/</guid>

					<description><![CDATA[Ya se encuentra disponible para su descarga la lista de cambios de “rompimiento” entre la Beta 1 y la Beta 2 de WCF y WF para .NET 4.0 Beta 2 (en inglés). Entre los cambios listados se encuentran: La característica &#8230; <a href="https://willyxoft.wordpress.com/2009/11/05/cambios-en-wcf-4-0-beta-2/">Seguir leyendo <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[<p>Ya se encuentra disponible para su descarga la lista de <a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=6a038bea-d85b-47bb-ad4f-82b0257103ce&amp;displaylang=en" target="_blank">cambios de “rompimiento” entre la Beta 1 y la Beta 2 de WCF y WF para .NET 4.0 Beta 2</a> (en inglés).</p>
<p>Entre los cambios listados se encuentran: </p>
<ul>
<li>La característica de seguridad que afecta tokens SAML ha cambiado su comportamiento predeterminado. </li>
<li>El codificador de burbuja (Blob encoder) fue rebautizado como codificador de flujo de bytes (ByteStream encoder). Mas aún funciona de la misma forma.</li>
<li>El canal de transporte Local &quot;en el dominio de aplicación&quot; ha sido retirado. Utilice las canalizaciones por nombres en su lugar. </li>
<li>Cuando se agrega colecciones de comportamientos a nivel de sitio o de máquina, las conductas se fusionaran con las configuraciones de comportamiento a nivel de sistema del mismo nombre. Anteriormente, sólo se obtenían los comportamientos configurados directamente por la aplicación si existía un conflicto de nombres. </li>
</ul>
<p><strong>Descarga</strong>: <a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=6a038bea-d85b-47bb-ad4f-82b0257103ce&amp;displaylang=en" target="_blank">Breaking Changes between .NET Framework 4 Beta1 and Beta2 for Windows Communication (WCF) and Windows Workflow Foundation (WF)</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://willyxoft.wordpress.com/2009/11/05/cambios-en-wcf-4-0-beta-2/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1455</post-id>
		<media:content medium="image" url="https://2.gravatar.com/avatar/2a63ebd12229e293b69372f6ab56afe07fc43adcb6e2f8a591fa5caf44a3477a?s=96&amp;d=wavatar&amp;r=PG">
			<media:title type="html">WillyXoft</media:title>
		</media:content>
	</item>
		<item>
		<title>Nueva expresión de código en ASP.NET 4.0</title>
		<link>https://willyxoft.wordpress.com/2009/11/04/expresion-codigo-aspnet-4/</link>
					<comments>https://willyxoft.wordpress.com/2009/11/04/expresion-codigo-aspnet-4/#respond</comments>
		
		<dc:creator><![CDATA[Willy Mejia]]></dc:creator>
		<pubDate>Wed, 04 Nov 2009 19:51:26 +0000</pubDate>
				<category><![CDATA[ASP.NET]]></category>
		<category><![CDATA[NetFx4]]></category>
		<guid isPermaLink="false">http://willyxoft.wordpress.com/2009/11/04/expresion-codigo-aspnet-4/</guid>

					<description><![CDATA[Algunos sitios ASP.NET (especialmente con ASP.NET MVC) dependen del uso de expresiones de código &#60;%= expresion %&#62; (aka &#34;code nuggets&#34;) para escribir algún texto en el response. Cuando utilizamos estas expresiones, es fácil olvidar &#34;codificar&#34; el texto en HTML (HTML &#8230; <a href="https://willyxoft.wordpress.com/2009/11/04/expresion-codigo-aspnet-4/">Seguir leyendo <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[<p><!-- tweetmeme button BEGIN -->  </p>
<div><a href="http://api.tweetmeme.com/share?source=willyxoft&amp;url=https://willyxoft.wordpress.com/2009/11/04/expresion-codigo-aspnet-4/"><img loading="lazy" style="display:inline;margin:0 10px 10px;" border="0" align="right" src="https://i0.wp.com/api.tweetmeme.com/imagebutton.gif" width="51" height="61" /></a></div>
<p> <!-- tweetmeme button END --></p>
<p>Algunos sitios ASP.NET (especialmente con ASP.NET MVC) dependen del uso de expresiones de código &lt;%= expresion %&gt; (aka &quot;code nuggets&quot;) para escribir algún texto en el response. Cuando utilizamos estas expresiones, es fácil olvidar &quot;codificar&quot; el texto en HTML (HTML Encoding). Si el texto viene por una entrada de datos del usuario, esto deja la puerta abierta a un ataque XSS (Cross Site Scripting).</p>
<p>Con ASP.NET 4.0 se introduce la siguiente nueva sintaxis para expresiones de código:</p>
<pre><strong>&lt;%: expresion %&gt;</strong></pre>
<p>(observa el cambio de &quot;=&quot; por &quot;:&quot;)</p>
<p>Esta nueva sintaxis realiza &quot;codificación&quot; HTML de forma predeterminada cuando escribe hacia el response, por lo que esta nueva expresión se traduce a:</p>
<pre><strong>&lt;%= HttpUtility.HtmlEncode(expresion) %&gt;</strong></pre>
<p></p>
<p>Así por ejemplo &lt;%: Request[&quot;UserInput&quot;] %&gt; realizará HTML Encode al valor de Request[&quot;UserInput&quot;].</p>
<p>El objetivo de ésta característica es el que sea posible remplazar todas las instancias de la vieja sintaxis con la nueva. No obstante, existen casos en que el texto a poner en la salida está pensado para que se entienda como HTML, o bien ya ha sido previamente &quot;codificado&quot;, y en cuyo caso se realizaría una doble &quot;codificación&quot;.</p>
<p>Para esos casos, ASP.NET 4.0 introduce también una nueva interfaz: IHtmlString, junto con una implementación concreta: HtmlString. Las instancias de este tipo permitirán indicar que el valor devuelto ya ha sido &quot;codificada&quot; (o bien que ya a sido examinado) para desplegarse como HTML, por lo que entonces el valor ya no será &quot;codificado&quot;. Por ejemplo:</p>
<pre>&lt;%: new HtmlString(&quot;&lt;strong&gt;HTML que no será encoded&lt;/strong&gt;&quot;) %&gt;</pre>
<p></p>
<p>Los métodos auxiliares de ASP.NET MVC 2 han sido actualizados para trabajar con esta nueva sintaxis por lo que no son doblemente &quot;codificados&quot;, pero únicamente cuando se ejecuta en ASP.NET 4.0. Esta nueva sintaxis no funciona cuando la aplicación utiliza ASP.NET 3.5 SP1 (que en realidad usa el motor de ASP.NET 2.0).</p>
<p>Así mismo, esta sintaxis no realiza JavaScript Encoding, como cuando se crean cadenas JavaScript basadas en entradas de datos del usuario.</p>
<h5>Mayor información:</h5>
<ul>
<li><a href="http://haacked.com/archive/2009/09/25/html-encoding-code-nuggets.aspx" target="_blank">ASP.NET 4’s new HTML Encoding code block syntax</a> </li>
<li><a href="http://haacked.com/archive/2009/11/03/html-encoding-nuggets-aspnetmvc2.aspx" target="_blank">Html Encoding Nuggets With ASP.NET MVC 2</a> </li>
</ul>
]]></content:encoded>
					
					<wfw:commentRss>https://willyxoft.wordpress.com/2009/11/04/expresion-codigo-aspnet-4/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1449</post-id>
		<media:content medium="image" url="https://2.gravatar.com/avatar/2a63ebd12229e293b69372f6ab56afe07fc43adcb6e2f8a591fa5caf44a3477a?s=96&amp;d=wavatar&amp;r=PG">
			<media:title type="html">WillyXoft</media:title>
		</media:content>

		<media:content medium="image" url="http://api.tweetmeme.com/imagebutton.gif?url=https://willyxoft.wordpress.com/2009/11/04/expresion-codigo-aspnet-4/"/>
	</item>
		<item>
		<title>Spec Explorer</title>
		<link>https://willyxoft.wordpress.com/2009/10/27/spec-explorer/</link>
					<comments>https://willyxoft.wordpress.com/2009/10/27/spec-explorer/#respond</comments>
		
		<dc:creator><![CDATA[Willy Mejia]]></dc:creator>
		<pubDate>Tue, 27 Oct 2009 23:42:28 +0000</pubDate>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Visual Studio]]></category>
		<guid isPermaLink="false">http://willyxoft.wordpress.com/2009/10/27/spec-explorer/</guid>

					<description><![CDATA[Pruebas Basadas en Modelos con Spec Explorer Las pruebas de sistema profundas, consistentes y extensibles sigue siendo uno de los mayores retos en la creación y mantenimiento de sistemas de software. La herramienta Spec Explorer liberada por Microsoft DevLabs ataca &#8230; <a href="https://willyxoft.wordpress.com/2009/10/27/spec-explorer/">Seguir leyendo <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[<h4><strong>Pruebas Basadas en Modelos con Spec Explorer</strong></h4>
<p><!-- tweetmeme button BEGIN -->  </p>
<div><a href="http://api.tweetmeme.com/share?source=willyxoft&amp;url=https://willyxoft.wordpress.com/2009/10/27/spec-explorer/"><img loading="lazy" style="display:inline;margin:0 10px 10px;" border="0" align="right" src="https://i0.wp.com/api.tweetmeme.com/imagebutton.gif" width="51" height="61" /></a></div>
<p> <!-- tweetmeme button END --></p>
<p>Las pruebas de sistema profundas, consistentes y extensibles sigue siendo uno de los mayores retos en la creación y mantenimiento de sistemas de software. La herramienta Spec Explorer liberada por <a href="http://msdn.microsoft.com/devlabs" target="_blank">Microsoft DevLabs</a> ataca el problema utilizando técnicas de <em>Model-Based Testing</em> (Pruebas basadas en Modelos).</p>
<div><img title="Spec" alt="spec" src="https://i0.wp.com/i.msdn.microsoft.com/ee692301.spec_explorer%28en-us%2CMSDN.10%29.png" /></div>
<h5><b>¿Qué es Spec Explorer?</b></h5>
<p>Spec Explorer es una herramienta de desarrollo de software para la avanzada especificación basada en modelos y las pruebas de conformidad.</p>
<p>Spec Explorer 2010 es una herramienta que extienda a Visual Studio para modelar el comportamiento del software, analizar dicho comportamiento mediante la visualización gráfica, verificar el modelo, y la generación de código de prueba a partir de los modelos. El comportamiento es modelado de dos maneras: escribiendo reglas de máquinas en C# y por la definición de escenarios como patrones de acción en un estilo de expresiones regulares. Una de las características principales de Spec Explorer es la capacidad de componer modelos escritos en estos dos estilos. Esta técnica permite a los usuarios el “rebanar” los casos de prueba de grandes máquinas de estado mediante la definición de escenarios relevantes, de esa forma lucha contra notorio problema de explosión de estado-espacio dominante en las pruebas basadas en modelos. Spec Explorer también soporta las pruebas de interacción combinatoria con un rico conjunto de características.</p>
<p>Los conjuntos de pruebas generados se pueden ejecutar de forma independiente, en el framework de pruebas de Visual Studio u otros framework de pruebas unitarias.</p>
<p><b><a href="http://kxacog.blu.livefilestore.com/y1paD6Bv3V6nPohVlQN1b9iN2thKrU2jhkGVyLbm53BjlbMX9owxWYGRZz030oPqt_Ce0LKDgtqJKLKRQvUHT5FtA/SpecExplorer.jpg" target="_blank"><img loading="lazy" title="Spec Explorer" border="0" alt="Spec Explorer" src="https://i0.wp.com/kxacog.blu.livefilestore.com/y1pRxmYaC0-H4BYTIJppgSlPKzcibpTxFc2vRCXkTNeayvdJtfKhxi1e0PUCVwi5rKGIBUJE3k-MHxw972nArjY4g/SpecExplorerSmall.jpg" width="500" height="384" /></a>&#160;</b></p>
<h5><strong>¿Qué componentes tiene Spec Explorer?</strong></h5>
<p>Spec Explorer se compone de:</p>
<ul>
<li>Los lenguajes de modelado de software <a href="http://research.microsoft.com/specsharp/" target="_blank">Spec#</a> y <a href="http://research.microsoft.com/en-us/projects/asml/" target="_blank">AsmL</a>. </li>
<li>Un verificador de modelo de estado-explícito, que permite al usuario buscar en el (posiblemente infinito) espacio de todas las posibles secuencias de llamadas a métodos que 1) no violan las condiciones previas y posteriores y los invariantes de los contratos del sistema y 2) son relevantes para el conjunto de propiedades de prueba especificadas por el usuario. </li>
<li>Un motor de recorrido, que se desenrolla la resultante máquina de estados finitos para producir pruebas de comportamiento que cubren todas las transiciones explorado. </li>
<li>Un motor transversal que permite a los usuarios el asociar acciones del modelo con los métodos de una implementación escrita en un lenguaje .NET. Tanto las implementaciones administradas como las no administrados pueden ser probadas si se utilizan las características de interoperabilidad .NET. </li>
<li>Un verificador de conformidad que ejecuta las pruebas de comportamiento generados. Alternativamente, Spec Explorer admite un modo &quot;al-vuelo&quot; donde la derivación de la prueba (a través de la verificación del modelo y de recorrido transversal) y la verificación de la conformidad de la implementación ocurren juntas. </li>
</ul>
<h5><b>¿Por qué utilizarlo?</b></h5>
<p>Spec Explorer ayuda a los equipos de desarrollo a crear casos de prueba más rápidamente, a garantizar la predictibilidad de la cobertura de requisitos y soportar el ciclo de vida de administración de los proyectos y las actualizaciones de software.</p>
<p>Las características únicas de Spec Explorer hacen que sea más fácil de aprender que otras herramientas de pruebas basadas en modelo. Los ingenieros sin ningún conocimiento de modelado pueden crear modelos de sistemas y características para generar pruebas en corto tiempo. Estudios sobre un proyecto a gran escala con más de 300 conjuntos de prueba han demostrado una ganancia en la productividad del 42% en promedio sobre los conjuntos de pruebas creados manualmente.</p>
<p>Spec Explorer ha sido adaptado en función de la retroalimentación de los equipos dentro de Microsoft, ahora Microsoft solicita los comentarios del exterior para garantizar que Spec Explorer satisface las necesidades de los clientes que trabajan en una variedad de proyectos.</p>
<h5>Mayor información:</h5>
<ul>
<li><a href="http://msdn.microsoft.com/en-us/devlabs/ee692301.aspx" target="_blank">DevLabs: Spec Explorer</a> </li>
<li><a href="http://research.microsoft.com/en-us/projects/SpecExplorer/" target="_blank">MS Research: Spec Explorer</a> </li>
<li><a href="http://social.msdn.microsoft.com/Forums/en-US/specexplorer/threads" target="_blank">Spec Explorer Forum</a> </li>
<li><a href="http://blogs.msdn.com/SpecExplorer" target="_blank">Spec Explorer Blog</a> </li>
</ul>
]]></content:encoded>
					
					<wfw:commentRss>https://willyxoft.wordpress.com/2009/10/27/spec-explorer/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1379</post-id>
		<media:content medium="image" url="https://2.gravatar.com/avatar/2a63ebd12229e293b69372f6ab56afe07fc43adcb6e2f8a591fa5caf44a3477a?s=96&amp;d=wavatar&amp;r=PG">
			<media:title type="html">WillyXoft</media:title>
		</media:content>

		<media:content medium="image" url="http://api.tweetmeme.com/imagebutton.gif?url=https://willyxoft.wordpress.com/2009/10/27/spec-explorer/"/>

		<media:content medium="image" url="http://i.msdn.microsoft.com/ee692301.spec_explorer(en-us,MSDN.10).png">
			<media:title type="html">Spec</media:title>
		</media:content>

		<media:content medium="image" url="http://kxacog.blu.livefilestore.com/y1pRxmYaC0-H4BYTIJppgSlPKzcibpTxFc2vRCXkTNeayvdJtfKhxi1e0PUCVwi5rKGIBUJE3k-MHxw972nArjY4g/SpecExplorerSmall.jpg">
			<media:title type="html">Spec Explorer</media:title>
		</media:content>
	</item>
	</channel>
</rss>