<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Blog de Jorge Pedraza</title>
	<atom:link href="http://jorgepedraza.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://jorgepedraza.wordpress.com</link>
	<description>MVP  ASP/ASP.NET</description>
	<lastBuildDate>Wed, 25 Jan 2012 04:34:58 +0000</lastBuildDate>
	<language>es</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='jorgepedraza.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Blog de Jorge Pedraza</title>
		<link>http://jorgepedraza.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://jorgepedraza.wordpress.com/osd.xml" title="Blog de Jorge Pedraza" />
	<atom:link rel='hub' href='http://jorgepedraza.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Unicidad de Acceso de Usuario en ASP.NET</title>
		<link>http://jorgepedraza.wordpress.com/2012/01/23/unicidad-de-acceso-de-usuario-en-asp-net/</link>
		<comments>http://jorgepedraza.wordpress.com/2012/01/23/unicidad-de-acceso-de-usuario-en-asp-net/#comments</comments>
		<pubDate>Mon, 23 Jan 2012 10:44:06 +0000</pubDate>
		<dc:creator>JorgePedraza</dc:creator>
				<category><![CDATA[Aplicaciones Web]]></category>
		<category><![CDATA[Seguridad]]></category>
		<category><![CDATA[login;logon;logueo;ASPNET;Autenticacion]]></category>

		<guid isPermaLink="false">https://jorgepedraza.wordpress.com/?p=1149</guid>
		<description><![CDATA[Hola, el presente artículo tiene como finalidad resaltar una técnica fácil y sencilla de implementar para validar la unicidad de acceso de cuentas de usuarios contra determinada solución ASP.NET. La idea principal es reproducir y validar el escenario de cuando uno o más usuarios inician sesión con una misma cuenta de usuario (Login y Password) [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jorgepedraza.wordpress.com&amp;blog=6317667&amp;post=1149&amp;subd=jorgepedraza&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Hola, el presente artículo tiene como finalidad resaltar una técnica fácil y sencilla de implementar para validar la unicidad de acceso de cuentas de usuarios contra determinada solución ASP.NET.</p>
<p>La idea principal es reproducir y validar el escenario de cuando uno o más usuarios inician sesión con una misma cuenta de usuario (Login y Password) de forma <u>concurrente</u> o <u>recurrente</u>, contra determinada sitio web de ASP.NET a través de la autenticación por formulario.     </p>
<p>Un ejemplo clásico de esto es el sistema Login <font color="#0000ff">Windows Live&#160; ID de Hotmail</font>, el cual lleva un mecanismo bien estructurado para permitir múltiples variantes de Login con una determinada cuenta de usuario.</p>
<p>Entonces a continuación se detalla la técnica.     <br /><strong>Requisitos</strong>:     <br />1.&#160;&#160;&#160; Microsoft Visual Studio 2010 con SP 1     <br />2.&#160;&#160;&#160; Experiencia con Lenguaje Visual Basic 2010 o C# 2010     <br />3.&#160;&#160;&#160; Conocimiento fundamental de Autenticación por formulario de ASP.NET</p>
<p><strong>Elementos claves de la técnica de Unicidad</strong>:     <br />1.&#160;&#160;&#160; Soporte de Autenticación por formulario de ASP.NET     <br />2.&#160;&#160;&#160; Objeto <strong>Application</strong> de ASP.NET     <br />3.&#160;&#160;&#160; Objeto <strong>Session</strong> de ASP.NET     <br />4.&#160;&#160;&#160; Propiedad <strong>SessionID</strong> del Objeto Session (<strong>HttpSessionState</strong>)</p>
<p><strong>Descripción de la técnica de Unicidad</strong>:     <br />Por defecto la técnica se enfoca en mantener un registro de los usuarios autenticados de forma global a través de objeto <strong>Application</strong> para ser usado en combinación con el Objeto <strong>Session</strong> de cada usuario anónimamente único.     <br />Para estos se inicia con el formulario <strong>Login.aspx</strong>, donde una vez validado el usuario se procede a usar el siguiente fragmento de código:</p>
<p><font color="#0000ff">Dim</font> iduser <font color="#0000ff">As String</font> = “1”     <br /><font color="#0000ff">Dim</font> cadusuario <font color="#0000ff">As String</font> = “Demo”</p>
<p>Me.Session(&quot;usuario&quot;) = cadusuario    <br />Me.Session(&quot;id_usuario&quot;) = iduser</p>
<p>Application.Lock()    <br /><font color="#0000ff">If</font> Application.Item(iduser) <font color="#0000ff">Is Nothing Then</font>     <br />&#160;&#160;&#160; Application.Add(iduser, <font color="#0000ff">Me</font>.Session.SessionID.ToString)     <br /><font color="#0000ff">Else</font>     <br />&#160;&#160;&#160; Application.Item(iduser) = <font color="#0000ff">Me</font>.Session.SessionID.ToString     <br /><font color="#0000ff">End If</font>     <br />Application.UnLock()     <br />System.Web.Security.<font color="#9b00d3">FormsAuthentication</font>.RedirectFromLoginPage(cadusuario, False) </p>
<p>&#160;</p>
<p>Ahora desde determinada página formulario <strong>WebForm</strong> o página maestra <strong>Site.Master</strong> se puede usar el evento <strong>Init</strong> para colocar el siguiente código:</p>
<p><font color="#0000ff">If</font> Session(&quot;id_usuario&quot;) <font color="#0000ff">Is Nothing OrElse</font> Application(Session(&quot;id_usuario&quot;)) &lt;&gt; <font color="#0000ff">Me</font>.Session.SessionID.ToString() <font color="#0000ff">Then</font>     <br />&#160;&#160; &#8216;CerrarSesion()     <br />&#160;&#160; lblmensajemain.Text = &quot;Atención otro usuario ha iniciado sesión con la actual cuenta de Usuario, consulte con el Administrador&quot;     <br /><font color="#0000ff">End If</font>     </p>
<p>Finalmente se concreta la técnica, la cual puede llegar a ofrecer a los usuarios una <u>advertencia o cierre abrupto</u> de la sesión dejando en teoría solo la última sesión activa valida vinculado con determinada cuenta de usuario autenticado.     </p>
<p><strong><u>Nota Importante</u></strong>: Esta técnica fue probado en diferentes navegadores, entornos y frecuencias de tiempo, el cual ha obtenido excelente resultado. De toda manera si usted presenta alguna anomalía, por favor póngase en contacto conmigo para estudiar toda alternativa de reestructuración de la misma.</p>
<p><strong>Código fuente</strong>: </p>
<ul>
<li><a href="https://skydrive.live.com/embed?cid=180D91520E7E6619&amp;resid=180D91520E7E6619%21822&amp;authkey=AD22RGrmRN1xToU" target="_blank">WebAppUniqueUser</a> (ASP.NET 4.0, Visual Basic 2010) </li>
</ul>
<p><strong>En Resumen</strong>: </p>
<p>Esta alternativa permite construir soluciones Web más escalable y segura sin necesidad de recurrir a complejo mecanismo de persistencias de datos, para hacer seguimiento de sesiones de usuarios autenticados de forma consistente.</p>
<p><strong>Enlaces de Interés</strong>:</p>
<ol>
<li><a href="http://msdn.microsoft.com/en-us/library/ah635ck5.aspx" target="_blank">HttpSessionState Class</a> </li>
<li><a href="http://msdn.microsoft.com/query/dev10.query?appId=Dev10IDEF1&amp;l=EN-US&amp;k=k(SYSTEM.WEB.SESSIONSTATE.HTTPSESSIONSTATE.SESSIONID);k(TargetFrameworkMoniker-%22.NETFRAMEWORK%2cVERSION%3dV4.0%22);k(DevLang-VB)&amp;rd=true" target="_blank">HttpSessionState.SessionID Property</a> </li>
<li><a href="http://msdn.microsoft.com/en-us/library/system.web.httpapplicationstate.aspx" target="_blank">HttpApplicationState Class</a> </li>
<li><a href="http://msdn.microsoft.com/en-us/library/ie/xdt4thhy.aspx" target="_blank">How to: Implement Simple Forms Authentication</a> </li>
</ol>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jorgepedraza.wordpress.com/1149/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jorgepedraza.wordpress.com/1149/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jorgepedraza.wordpress.com/1149/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jorgepedraza.wordpress.com/1149/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/jorgepedraza.wordpress.com/1149/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/jorgepedraza.wordpress.com/1149/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/jorgepedraza.wordpress.com/1149/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/jorgepedraza.wordpress.com/1149/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jorgepedraza.wordpress.com/1149/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jorgepedraza.wordpress.com/1149/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jorgepedraza.wordpress.com/1149/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jorgepedraza.wordpress.com/1149/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jorgepedraza.wordpress.com/1149/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jorgepedraza.wordpress.com/1149/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jorgepedraza.wordpress.com&amp;blog=6317667&amp;post=1149&amp;subd=jorgepedraza&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://jorgepedraza.wordpress.com/2012/01/23/unicidad-de-acceso-de-usuario-en-asp-net/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/fd1a8a01c04bb6ff99fb99673ebfcaac?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jorgepedraza</media:title>
		</media:content>
	</item>
		<item>
		<title>Transformaci&#243;n de Web.Config</title>
		<link>http://jorgepedraza.wordpress.com/2011/12/12/transformacin-de-web-config/</link>
		<comments>http://jorgepedraza.wordpress.com/2011/12/12/transformacin-de-web-config/#comments</comments>
		<pubDate>Mon, 12 Dec 2011 10:45:41 +0000</pubDate>
		<dc:creator>JorgePedraza</dc:creator>
				<category><![CDATA[Aplicaciones Web]]></category>
		<category><![CDATA[Web.Config;VS2010;ASPNET;Transformar;Transformacion]]></category>

		<guid isPermaLink="false">https://jorgepedraza.wordpress.com/?p=1140</guid>
		<description><![CDATA[&#160; Hola la presente de este articulo es para resaltar de forma rápida y precisa la característica Transformación de Web.Config disponible dentro de Visual Studio 2010. Índices: Requisitos. Transformación de Web.Config. Como funciona Transformación de Web.Config. Pasos Claves para Transformar Web.Config. Transformar Web.Config basado en Perfil personalizado. Código fuente. Enlaces de Referencia. 1. Requisitos: Visual [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jorgepedraza.wordpress.com&amp;blog=6317667&amp;post=1140&amp;subd=jorgepedraza&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>&#160;</p>
<p>Hola la presente de este articulo es para resaltar de forma rápida y precisa la característica <u>Transformación de Web.Config</u> disponible dentro de <strong>Visual Studio 2010</strong>.</p>
<p><strong><u>Índices</u>:</strong></p>
<ol>
<li>Requisitos. </li>
<li>Transformación de Web.Config. </li>
<li>Como funciona Transformación de Web.Config. </li>
<li>Pasos Claves para Transformar Web.Config. </li>
<li>Transformar Web.Config basado en Perfil personalizado. </li>
<li>Código fuente. </li>
<li>Enlaces de Referencia. </li>
</ol>
<p><strong><u>1. Requisitos</u>:</strong></p>
<ul>
<li>Visual Studio 2010 </li>
<li>Conocimientos sobre desarrollo ASP.NET 2.0 o Superior </li>
</ul>
<p><strong><u>2. Transformación de Web.Config</u>:</strong></p>
<p>Es una característica equipada dentro de Visual Studio 2010 el cual permitir mantener diferentes versiones de <strong>Web.Config</strong> dentro de un proyecto del tipo ASP.NET para usar de forma selectiva en la fase de <strong>implementación</strong> de dicho proyecto.</p>
<p><strong><u>3. Como funciona Transformación de Web.Config</u>:</strong></p>
<p>Dentro de un proyecto ASP.NET desde Visual Studio 2010, se puede encontrar por defecto 3 archivos Web.Config anidados (Web.Config, Web.Debug.Config, Web.Release.Config), donde los dos últimos mencionado contiene ConnectionStrings por defecto <u>en comentarios</u>, para los cuales se encuentra atributos especiales (xdt:Transform=&quot;SetAttributes&quot; y xdt:Locator=&quot;Match(name)&quot;) dentro de su elemento. </p>
<p>Entonces la idea principal es quitar los comentarios del ConnectionStrings de cada Web.Config y hacer coincidir su nombre (<u><strong>name</strong></u>) para realizar la actualización de valores de <strong>ConnectionString</strong> en la fase de implementación de acuerdo al perfil de construcción establecido, por ejemplo (<strong>Debug</strong> o <strong>Release</strong>). </p>
<p><strong><u>4. Pasos claves para Transformar Web.Config</u>:</strong></p>
<table border="0" cellspacing="0" cellpadding="2" width="600">
<tbody>
<tr>
<td valign="top" width="299">1. Identificar y configurar las versiones por defecto del Web.Config con los <u>ConnectionStrings</u> deseados.</td>
<td valign="top" width="299">2. Publicar Solución seleccionado determinado Perfil de publicación.</td>
</tr>
<tr>
<td valign="top" width="299"><a href="http://jorgepedraza.files.wordpress.com/2011/12/paso1.jpg"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;" title="Paso1" border="0" alt="Paso1" src="http://jorgepedraza.files.wordpress.com/2011/12/paso1_thumb.jpg?w=244&#038;h=157" width="244" height="157" /></a></td>
<td valign="top" width="299"><a href="http://jorgepedraza.files.wordpress.com/2011/12/paso2.jpg"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;" title="Paso2" border="0" alt="Paso2" src="http://jorgepedraza.files.wordpress.com/2011/12/paso2_thumb.jpg?w=244&#038;h=174" width="244" height="174" /></a></td>
</tr>
<tr>
<td valign="top" width="299">&nbsp;</td>
<td valign="top" width="299">&nbsp;</td>
</tr>
<tr>
<td valign="top" width="299">3. Pulsar Botón <strong>Publish</strong> (Publicar) para genera resultado final bajo el modo de generación, en este caso <strong>Debug</strong>.</td>
<td valign="top" width="299">4. Verificar el Web.Config dentro del resultado de publicación.</td>
</tr>
<tr>
<td valign="top" width="299"><a href="http://jorgepedraza.files.wordpress.com/2011/12/paso3.jpg"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;" title="Paso3" border="0" alt="Paso3" src="http://jorgepedraza.files.wordpress.com/2011/12/paso3_thumb.jpg?w=244&#038;h=153" width="244" height="153" /></a></td>
<td valign="top" width="299"><a href="http://jorgepedraza.files.wordpress.com/2011/12/paso4.jpg"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;" title="Paso4" border="0" alt="Paso4" src="http://jorgepedraza.files.wordpress.com/2011/12/paso4_thumb.jpg?w=244&#038;h=65" width="244" height="65" /></a></td>
</tr>
<tr>
<td valign="top" width="299">&nbsp;</td>
<td valign="top" width="299">&nbsp;</td>
</tr>
</tbody>
</table>
<p><u></u></p>
<p><u><strong></strong></u></p>
<p><u><strong>5. Transformar Web.Config basado en Perfil personalizado:</strong></u></p>
<table border="0" cellspacing="0" cellpadding="2" width="600">
<tbody>
<tr>
<td valign="top" width="299">1. Crear un perfil de construcción, por ejemplo llamado <strong>Inicio</strong>.</td>
<td valign="top" width="299">2. Pulsar botón derecho del ratón sobre el Web.Config raíz, luego se da clic sobre la opción <strong>Add Config Transforms</strong>.</td>
</tr>
<tr>
<td valign="top" width="299"><a href="http://jorgepedraza.files.wordpress.com/2011/12/perfil1.jpg"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;" title="Perfil1" border="0" alt="Perfil1" src="http://jorgepedraza.files.wordpress.com/2011/12/perfil1_thumb.jpg?w=244&#038;h=137" width="244" height="137" /></a></td>
<td valign="top" width="299"><a href="http://jorgepedraza.files.wordpress.com/2011/12/perfil2.jpg"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;" title="Perfil2" border="0" alt="Perfil2" src="http://jorgepedraza.files.wordpress.com/2011/12/perfil2_thumb.jpg?w=244&#038;h=136" width="244" height="136" /></a></td>
</tr>
<tr>
<td valign="top" width="299">&#160;</td>
<td valign="top" width="299">&#160;</td>
</tr>
<tr>
<td valign="top" width="299">3. Identificar y configurar el archivo Web.Inicio.Config, con el ConnectionString deseado.</td>
<td valign="top" width="299">4. Publicar (<strong>Publish</strong>) el resultado final basado en el Perfil de construcción <strong>Inicio</strong> y verificar el Web.Config dentro del resultado de publicación.</td>
</tr>
<tr>
<td valign="top" width="299"><a href="http://jorgepedraza.files.wordpress.com/2011/12/perfil3.jpg"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;" title="Perfil3" border="0" alt="Perfil3" src="http://jorgepedraza.files.wordpress.com/2011/12/perfil3_thumb.jpg?w=244&#038;h=176" width="244" height="176" /></a></td>
<td valign="top" width="300"><a href="http://jorgepedraza.files.wordpress.com/2011/12/perfil4.jpg"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;" title="Perfil4" border="0" alt="Perfil4" src="http://jorgepedraza.files.wordpress.com/2011/12/perfil4_thumb.jpg?w=244&#038;h=107" width="244" height="107" /></a></td>
</tr>
</tbody>
</table>
<p>Recuerde que para continuar la ejecución y prueba normal del proyecto, se sugiere usar el perfil de construcción tanto <strong>Debug</strong> o <strong>Release</strong>.</p>
<p><strong><u>6. Código Fuente</u>:</strong></p>
<ul>
<li><a href="https://skydrive.live.com/embed?cid=180D91520E7E6619&amp;resid=180D91520E7E6619%21819&amp;authkey=AEegGsFu1uP2cv0" target="_blank">TransformarWebConfig</a> </li>
</ul>
<p><strong><u>7. Enlaces de Referencia</u>:</strong></p>
<ul>
<li><a href="http://msdn.microsoft.com/en-us/library/dd465318.aspx" target="_blank">How to: Transform Web.config When Deploying a Web Application Project</a> </li>
<li><a href="http://msdn.microsoft.com/en-us/library/dd465326.aspx" target="_blank">Web.config Transformation Syntax for Web Application Project Deployment</a> </li>
<li><a href="http://msdn.microsoft.com/en-us/vstudio/ff801895" target="_blank">How Do I: Use the web.Config Transforms in Visual Studio 2010?</a> (Video) </li>
<li><a href="http://msdn.microsoft.com/en-us/library/dd465342.aspx" target="_blank">How to: Disable Web.config Transformation</a> </li>
</ul>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jorgepedraza.wordpress.com/1140/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jorgepedraza.wordpress.com/1140/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jorgepedraza.wordpress.com/1140/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jorgepedraza.wordpress.com/1140/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/jorgepedraza.wordpress.com/1140/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/jorgepedraza.wordpress.com/1140/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/jorgepedraza.wordpress.com/1140/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/jorgepedraza.wordpress.com/1140/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jorgepedraza.wordpress.com/1140/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jorgepedraza.wordpress.com/1140/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jorgepedraza.wordpress.com/1140/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jorgepedraza.wordpress.com/1140/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jorgepedraza.wordpress.com/1140/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jorgepedraza.wordpress.com/1140/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jorgepedraza.wordpress.com&amp;blog=6317667&amp;post=1140&amp;subd=jorgepedraza&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://jorgepedraza.wordpress.com/2011/12/12/transformacin-de-web-config/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/fd1a8a01c04bb6ff99fb99673ebfcaac?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jorgepedraza</media:title>
		</media:content>

		<media:content url="http://jorgepedraza.files.wordpress.com/2011/12/paso1_thumb.jpg" medium="image">
			<media:title type="html">Paso1</media:title>
		</media:content>

		<media:content url="http://jorgepedraza.files.wordpress.com/2011/12/paso2_thumb.jpg" medium="image">
			<media:title type="html">Paso2</media:title>
		</media:content>

		<media:content url="http://jorgepedraza.files.wordpress.com/2011/12/paso3_thumb.jpg" medium="image">
			<media:title type="html">Paso3</media:title>
		</media:content>

		<media:content url="http://jorgepedraza.files.wordpress.com/2011/12/paso4_thumb.jpg" medium="image">
			<media:title type="html">Paso4</media:title>
		</media:content>

		<media:content url="http://jorgepedraza.files.wordpress.com/2011/12/perfil1_thumb.jpg" medium="image">
			<media:title type="html">Perfil1</media:title>
		</media:content>

		<media:content url="http://jorgepedraza.files.wordpress.com/2011/12/perfil2_thumb.jpg" medium="image">
			<media:title type="html">Perfil2</media:title>
		</media:content>

		<media:content url="http://jorgepedraza.files.wordpress.com/2011/12/perfil3_thumb.jpg" medium="image">
			<media:title type="html">Perfil3</media:title>
		</media:content>

		<media:content url="http://jorgepedraza.files.wordpress.com/2011/12/perfil4_thumb.jpg" medium="image">
			<media:title type="html">Perfil4</media:title>
		</media:content>
	</item>
		<item>
		<title>Usando WorkFlows desde ASP.NET 4.0</title>
		<link>http://jorgepedraza.wordpress.com/2011/11/14/usando-workflows-desde-asp-net-4-0/</link>
		<comments>http://jorgepedraza.wordpress.com/2011/11/14/usando-workflows-desde-asp-net-4-0/#comments</comments>
		<pubDate>Mon, 14 Nov 2011 10:33:55 +0000</pubDate>
		<dc:creator>JorgePedraza</dc:creator>
				<category><![CDATA[Aplicaciones Web]]></category>
		<category><![CDATA[WorkFlow;WF;ASPNET;WFASPNET]]></category>

		<guid isPermaLink="false">https://jorgepedraza.wordpress.com/2011/11/14/usando-workflows-desde-asp-net-4-0/</guid>
		<description><![CDATA[&#160; Hola la presente de este articulo es para resalta de forma general el tema de WorkFlow con un enfoque sobre aplicaciones Web de ASP.NET. Índices: WorkFlow Estilos de Creación de WorkFlow. Elementos de un WorkFlow. Motor de tiempo de ejecución del WorkFlow Pasos básico para iniciar solución ASP.NET con WorkFlow Descripción Solución de Ejemplo [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jorgepedraza.wordpress.com&amp;blog=6317667&amp;post=1073&amp;subd=jorgepedraza&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>&#160;</p>
<p>Hola la presente de este articulo es para resalta de forma general el tema de <strong>WorkFlow</strong> con un enfoque sobre aplicaciones Web de <strong>ASP.NET</strong>.</p>
<p><strong>Índices</strong>:</p>
<ol>
<li>WorkFlow </li>
<li>Estilos de Creación de WorkFlow. </li>
<li>Elementos de un WorkFlow. </li>
<li>Motor de tiempo de ejecución del WorkFlow </li>
<li>Pasos básico para iniciar solución ASP.NET con WorkFlow </li>
<li>Descripción Solución de Ejemplo Test WorkFlow ASP.NET </li>
<li>Descripción Solución de Ejemplo Hosting WorkFlow in ASP.NET </li>
<li>Códigos Fuentes. </li>
<li>Puntos de Interés de WorkFlow para su estudio.
<ol><!--EndFragment--></ol>
</li>
<li>En Resumen. </li>
<li>Enlaces de Referencia </li>
</ol>
<p><strong>1. WorkFlow</strong>: Flujo de Trabajo</p>
<p>Un WorkFlow es un conjunto de unidades de trabajos elementales llamadas actividades que están almacenadas como un modelo que describe un proceso real. Los WorkFlow proporcionan una manera de describir el orden de ejecución y las relaciones de dependencia entre las partes de trabajo de ejecución corta o prolongada. Este trabajo pasa a través del modelo desde el principio hasta el final y las actividades pueden ser ejecutadas por personas o por funciones de sistema.</p>
<p><strong>2. Estilos de Creación de WorkFlow</strong></p>
<ul>
<li><u>WorkFlow Secuencial</u>: Este WorkFlow consta de un conjunto de actividades que se ejecuta de forma secuencial, uno por uno hasta que finalice la última actividad. También a dicho WorkFlow se puede agregar actividades compuesta por defecto o personalizada. <strong>Ejemplo de WorkFlow Secuencial</strong>: </li>
</ul>
<p align="center"><img src="http://i.msdn.microsoft.com/dynimg/IC30608.gif" /></p>
<ul>
<li><u>WorkFlow Maquina de Estado</u>: Este WorkFlow consta de un conjunto de Estados. Cada estado puede recibir un determinado conjunto de eventos. Basado en un evento, es posible una transición a otro Estado. El WorkFlow de máquina de Estado tiene un estado Inicial y puede tener un estado final. Cuando se realiza una transición al estado final, se completa el WorkFlow. <strong>Ejemplo de WorkFlow Maquina de Estado</strong>: </li>
</ul>
<p align="center"><img src="http://i.msdn.microsoft.com/dynimg/IC68719.gif" /></p>
<p><strong>3. Elementos de un WorkFlow:</strong></p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top">Elementos de <strong>WF 4</strong></td>
<td valign="top">Descripción</td>
</tr>
<tr>
<td valign="top">Control Flow (<strong>Flujo de Control</strong>)</td>
<td valign="top">
<table border="1" cellspacing="1" cellpadding="1">
<tbody>
<tr>
<td valign="top"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;" title="DoWhile" border="0" alt="DoWhile" src="http://jorgepedraza.files.wordpress.com/2011/11/dowhile1.jpg?w=83&#038;h=19" width="83" height="19" /></td>
<td valign="top">Ejecuta una actividad contenida, mientras una condición es true.</td>
</tr>
<tr>
<td valign="top"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;" title="ForEachT" border="0" alt="ForEachT" src="http://jorgepedraza.files.wordpress.com/2011/11/foreacht1.jpg?w=95&#038;h=18" width="95" height="18" /></td>
<td valign="top">Recorre una lista y ejecuta un actividad contenida para cada elemento en la lista.</td>
</tr>
<tr>
<td valign="top"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;" title="IF" border="0" alt="IF" src="http://jorgepedraza.files.wordpress.com/2011/11/if1.jpg?w=45&#038;h=21" width="45" height="21" /></td>
<td valign="top">Ejecuta Actividades contenidas basado en una condición especificada.</td>
</tr>
<tr>
<td valign="top"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;" title="Parallel" border="0" alt="Parallel" src="http://jorgepedraza.files.wordpress.com/2011/11/parallel1.jpg?w=66&#038;h=14" width="66" height="14" /></td>
<td valign="top">Ejecuta Actividades contenidas en paralelo.</td>
</tr>
<tr>
<td valign="top"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;" title="ParallelForEach" border="0" alt="ParallelForEach" src="http://jorgepedraza.files.wordpress.com/2011/11/parallelforeach1.jpg?w=128&#038;h=19" width="128" height="19" /></td>
<td valign="top">Recorre una lista y ejecuta una actividad contenida en paralelo para cada elemento en la lista.</td>
</tr>
<tr>
<td valign="top"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;" title="Pick" border="0" alt="Pick" src="http://jorgepedraza.files.wordpress.com/2011/11/pick1.jpg?w=56&#038;h=15" width="56" height="15" /></td>
<td valign="top">Suministra un modelado de flujo de control basado en evento en un WorkFlow</td>
</tr>
<tr>
<td valign="top"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;" title="PickBranch" border="0" alt="PickBranch" src="http://jorgepedraza.files.wordpress.com/2011/11/pickbranch1.jpg?w=80&#038;h=19" width="80" height="19" /></td>
<td valign="top">Rama en una actividad Pick </td>
</tr>
<tr>
<td valign="top"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;" title="Sequence" border="0" alt="Sequence" src="http://jorgepedraza.files.wordpress.com/2011/11/sequence1.jpg?w=85&#038;h=21" width="85" height="21" /></td>
<td valign="top">Un flujo de control que ejecuta actividades secuencialmente.</td>
</tr>
<tr>
<td valign="top"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;" title="SwitchT" border="0" alt="SwitchT" src="http://jorgepedraza.files.wordpress.com/2011/11/switcht1.jpg?w=85&#038;h=20" width="85" height="20" /></td>
<td valign="top">
<p>Ejecuta uno de sus hijos en función del resultado de una expresión</p>
</td>
</tr>
<tr>
<td valign="top"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;" title="While" border="0" alt="While" src="http://jorgepedraza.files.wordpress.com/2011/11/while1.jpg?w=60&#038;h=19" width="60" height="19" /></td>
<td valign="top">Ejecuta una actividad contenida, mientras una condición es true.</td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
<td valign="top">Flowchart (<strong>Diagrama de Flujo</strong>)</td>
<td valign="top">
<table border="1" cellspacing="1" cellpadding="1">
<tbody>
<tr>
<td valign="top"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;" title="FlowChart2" border="0" alt="FlowChart2" src="http://jorgepedraza.files.wordpress.com/2011/11/flowchart21.jpg?w=82&#038;h=18" width="82" height="18" /></td>
<td valign="top">Permite modelado de procesos con una sola ruta de ejecución y bucles hacia los puntos previos de ejecuciones.</td>
</tr>
<tr>
<td valign="top"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;" title="FlowDecision" border="0" alt="FlowDecision" src="http://jorgepedraza.files.wordpress.com/2011/11/flowdecision1.jpg?w=91&#038;h=17" width="91" height="17" /></td>
<td valign="top">Rama condicional en un diagrama de flujo (Flowchart)</td>
</tr>
<tr>
<td valign="top"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;" title="FlowSwitch" border="0" alt="FlowSwitch" src="http://jorgepedraza.files.wordpress.com/2011/11/flowswitch1.jpg?w=114&#038;h=14" width="114" height="14" /></td>
<td valign="top">Selecciona el próximo nodo in Diagrama de flujo (Flowchart) dependiendo sobre el valor de una expresión.</td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
<td valign="top">State Machine (<strong>Maquina de estado</strong>)</td>
<td valign="top">
<table border="1" cellspacing="1" cellpadding="1">
<tbody>
<tr>
<td valign="top"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;" title="State" border="0" alt="State" src="http://jorgepedraza.files.wordpress.com/2011/11/state1.jpg?w=60&#038;h=17" width="60" height="17" /></td>
<td valign="top">Representa un estado en una maquina de estado.</td>
</tr>
<tr>
<td valign="top"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;" title="StateMachine2" border="0" alt="StateMachine2" src="http://jorgepedraza.files.wordpress.com/2011/11/statemachine21.jpg?w=99&#038;h=21" width="99" height="21" /></td>
<td valign="top">Permite modelado de procesos con un enfoque orientado a eventos</td>
</tr>
<tr>
<td valign="top"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;" title="FinalState" border="0" alt="FinalState" src="http://jorgepedraza.files.wordpress.com/2011/11/finalstate1.jpg?w=85&#038;h=20" width="85" height="20" /></td>
<td valign="top">Representa un estado final una maquina de estado.</td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
<td valign="top">Messaging (<strong>Mensajería</strong>)</td>
<td valign="top">
<table border="1" cellspacing="1" cellpadding="1">
<tbody>
<tr>
<td valign="top"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;" title="CorrelationScope" border="0" alt="CorrelationScope" src="http://jorgepedraza.files.wordpress.com/2011/11/correlationscope1.jpg?w=117&#038;h=19" width="117" height="19" /></td>
<td valign="top">Ejecuta un conjunto de actividades de mensajerías debajo de la misma correlación.</td>
</tr>
<tr>
<td valign="top"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;" title="InitializeCorrelation" border="0" alt="InitializeCorrelation" src="http://jorgepedraza.files.wordpress.com/2011/11/initializecorrelation1.jpg?w=130&#038;h=19" width="130" height="19" /></td>
<td valign="top">Inicializa una nueva correlación.</td>
</tr>
<tr>
<td valign="top"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;" title="Receive" border="0" alt="Receive" src="http://jorgepedraza.files.wordpress.com/2011/11/receive1.jpg?w=75&#038;h=11" width="75" height="11" /></td>
<td valign="top">Recibe un mensaje Windows Communications Foundation (WCF).</td>
</tr>
<tr>
<td valign="top"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;" title="ReceiveAndSendReply" border="0" alt="ReceiveAndSendReply" src="http://jorgepedraza.files.wordpress.com/2011/11/receiveandsendreply1.jpg?w=147&#038;h=11" width="147" height="11" /></td>
<td valign="top">Recibe un mensaje Windows Communications Foundation (WCF) y envía una respuesta al remitente. </td>
</tr>
<tr>
<td valign="top"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;" title="Send" border="0" alt="Send" src="http://jorgepedraza.files.wordpress.com/2011/11/send1.jpg?w=58&#038;h=17" width="58" height="17" /></td>
<td valign="top">Envía un mensaje Windows Communications Foundation (WCF).</td>
</tr>
<tr>
<td valign="top"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;" title="SendAndReceiveReply" border="0" alt="SendAndReceiveReply" src="http://jorgepedraza.files.wordpress.com/2011/11/sendandreceivereply1.jpg?w=145&#038;h=13" width="145" height="13" /></td>
<td valign="top">Envía un mensaje Windows Communications Foundation (WCF) y espera por un respuesta.</td>
</tr>
<tr>
<td valign="top"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;" title="TransactedReceiveScope" border="0" alt="TransactedReceiveScope" src="http://jorgepedraza.files.wordpress.com/2011/11/transactedreceivescope1.jpg?w=153&#038;h=18" width="153" height="18" /></td>
<td valign="top">Envía un mensaje Windows Communications Foundation (WCF) con transacción y ejecuta actividades debajo de esa transacción.</td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
<td valign="top">Runtime (<strong>Tiempo de Ejecución</strong>)</td>
<td valign="top">
<table border="1" cellspacing="1" cellpadding="1">
<tbody>
<tr>
<td valign="top"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;" title="Persist" border="0" alt="Persist" src="http://jorgepedraza.files.wordpress.com/2011/11/persist1.jpg?w=66&#038;h=16" width="66" height="16" /></td>
<td valign="top">Guarda un WorkFlow.</td>
</tr>
<tr>
<td valign="top"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;" title="TerminateWorkFlow" border="0" alt="TerminateWorkFlow" src="http://jorgepedraza.files.wordpress.com/2011/11/terminateworkflow1.jpg?w=125&#038;h=18" width="125" height="18" /></td>
<td valign="top">Termina la ejecución de un WorkFlow</td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
<td valign="top">Primitives (<strong>Primitivos</strong>)</td>
<td valign="top">
<table border="1" cellspacing="1" cellpadding="1">
<tbody>
<tr>
<td valign="top"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;" title="Assign" border="0" alt="Assign" src="http://jorgepedraza.files.wordpress.com/2011/11/assign1.jpg?w=76&#038;h=11" width="76" height="11" /></td>
<td valign="top">Asigna un valor a una variable o argumento.</td>
</tr>
<tr>
<td valign="top"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;" title="Delay" border="0" alt="Delay" src="http://jorgepedraza.files.wordpress.com/2011/11/delay1.jpg?w=62&#038;h=18" width="62" height="18" /></td>
<td valign="top">Ejecuta un retardo para una cantidad especificada de tiempo.</td>
</tr>
<tr>
<td valign="top"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;" title="InvokeMethod" border="0" alt="InvokeMethod" src="http://jorgepedraza.files.wordpress.com/2011/11/invokemethod1.jpg?w=105&#038;h=17" width="105" height="17" /></td>
<td valign="top">Invoca un método sobre un tipo o objeto CLR.</td>
</tr>
<tr>
<td valign="top"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;" title="WriteLine" border="0" alt="WriteLine" src="http://jorgepedraza.files.wordpress.com/2011/11/writeline1.jpg?w=84&#038;h=21" width="84" height="21" /></td>
<td valign="top">Escribe texto a un TextWriter.</td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
<td valign="top">Transaction (<strong>Transacción</strong>)</td>
<td valign="top">
<table border="1" cellspacing="1" cellpadding="1">
<tbody>
<tr>
<td valign="top"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;" title="CancellationScope" border="0" alt="CancellationScope" src="http://jorgepedraza.files.wordpress.com/2011/11/cancellationscope1.jpg?w=127&#038;h=18" width="127" height="18" /></td>
<td valign="top">Ejecuta una actividad contenida y permite proveer una lógica de cancelación.</td>
</tr>
<tr>
<td valign="top"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;" title="CompensableActivity" border="0" alt="CompensableActivity" src="http://jorgepedraza.files.wordpress.com/2011/11/compensableactivity1.jpg?w=135&#038;h=18" width="135" height="18" /></td>
<td valign="top">Defina una unidad de trabajo el cual puede ser compensada o confirmada en cualquier punto después de la finalización correcta.</td>
</tr>
<tr>
<td valign="top"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;" title="Compensate" border="0" alt="Compensate" src="http://jorgepedraza.files.wordpress.com/2011/11/compensate1.jpg?w=97&#038;h=21" width="97" height="21" /></td>
<td valign="top">Invoca el manejador de compensación de una actividad de compensación. </td>
</tr>
<tr>
<td valign="top"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;" title="Confirm" border="0" alt="Confirm" src="http://jorgepedraza.files.wordpress.com/2011/11/confirm1.jpg?w=73&#038;h=15" width="73" height="15" /></td>
<td valign="top">Invoca el manejador de confirmación de una actividad de compensación. </td>
</tr>
<tr>
<td valign="top"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;" title="TransactionScope" border="0" alt="TransactionScope" src="http://jorgepedraza.files.wordpress.com/2011/11/transactionscope1.jpg?w=120&#038;h=20" width="120" height="20" /></td>
<td valign="top">Ejecuta una actividad contenida debajo de una transacción.</td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
<td valign="top">Collection (<strong>Colección</strong>)</td>
<td valign="top">
<table border="1" cellspacing="1" cellpadding="1">
<tbody>
<tr>
<td valign="top"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;" title="AddToCollectionT" border="0" alt="AddToCollectionT" src="http://jorgepedraza.files.wordpress.com/2011/11/addtocollectiont1.jpg?w=141&#038;h=20" width="141" height="20" /></td>
<td valign="top">Agrega un elemento a una colección.</td>
</tr>
<tr>
<td valign="top"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;" title="ClearCollectionT" border="0" alt="ClearCollectionT" src="http://jorgepedraza.files.wordpress.com/2011/11/clearcollectiont1.jpg?w=130&#038;h=24" width="130" height="24" /></td>
<td valign="top">Limpia una colección.</td>
</tr>
<tr>
<td valign="top"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;" title="ExistsInCollection" border="0" alt="ExistsInCollection" src="http://jorgepedraza.files.wordpress.com/2011/11/existsincollection1.jpg?w=141&#038;h=19" width="141" height="19" /></td>
<td valign="top">Retorno true Sí un elemento existe en la colección.</td>
</tr>
<tr>
<td valign="top"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;" title="RemoveFromCollectionT" border="0" alt="RemoveFromCollectionT" src="http://jorgepedraza.files.wordpress.com/2011/11/removefromcollectiont1.jpg?w=165&#038;h=19" width="165" height="19" /></td>
<td valign="top">Remueve un elemento de una colección.</td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
<td valign="top">Error Handling (<strong>Control de Errores</strong>)</td>
<td valign="top">
<table border="1" cellspacing="1" cellpadding="1">
<tbody>
<tr>
<td valign="top"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;" title="Rethrow" border="0" alt="Rethrow" src="http://jorgepedraza.files.wordpress.com/2011/11/rethrow1.jpg?w=78&#038;h=20" width="78" height="20" /></td>
<td valign="top">Vuelve a producir una excepción en un Catch.</td>
</tr>
<tr>
<td valign="top"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;" title="Throw" border="0" alt="Throw" src="http://jorgepedraza.files.wordpress.com/2011/11/throw1.jpg?w=67&#038;h=22" width="67" height="22" /></td>
<td valign="top">Lanza una excepción en un WorkFlow.</td>
</tr>
<tr>
<td valign="top"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;" title="TryCatch" border="0" alt="TryCatch" src="http://jorgepedraza.files.wordpress.com/2011/11/trycatch1.jpg?w=87&#038;h=20" width="87" height="20" /></td>
<td valign="top">Proporciona manejos de errores en un WorkFlow.</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
<p><strong>4. Motor de tiempo de ejecución del WorkFlow:</strong></p>
<ul>
<li>
<div align="left">Una clase <a href="http://msdn.microsoft.com/es-es/library/system.activities.workflowinvoker.aspx" target="_blank">WorkflowInvoker</a>, que invoca el flujo de trabajo como si se tratara de un método.</div>
</li>
<li>Una clase <a href="http://msdn.microsoft.com/es-es/library/system.activities.workflowapplication.aspx" target="_blank">WorkflowApplication</a> para el control explícito de la ejecución de una única instancia de flujo de trabajo.Una </li>
<li>Una clase <a href="http://msdn.microsoft.com/es-es/library/system.servicemodel.workflowservicehost.aspx" target="_blank">WorkflowServiceHost</a> para las interacciones basadas en mensajes en escenarios de varias instancias. </li>
</ul>
<p>Cada una de estas clases ajusta el tiempo de ejecución de la actividad principal, representado como una clase <a href="http://msdn.microsoft.com/es-es/library/system.activities.activityinstance.aspx" target="_blank">ActivityInstance</a> responsable de la ejecución de la actividad. Puede haber varios objetos <strong>ActivityInstance</strong> ejecutándose simultáneamente dentro de un dominio de aplicación.</p>
<p>Los tres objetos de interacción de host anteriores se crean a partir de un árbol de actividades al que se hace referencia como programa de flujo de trabajo. Con estos tipos o con un host personalizado que ajuste la clase <strong>ActivityInstance</strong>, los flujos de trabajo se pueden ejecutar dentro de cualquier proceso de Windows, incluidos las <u>aplicaciones de consola</u>, <u>las aplicaciones basadas en formularios</u>, los <u>Servicios de Windows</u>,<strong><u> los Sitios web de ASP.NET</u></strong> y los <u>servicios de Windows Communication Foundation (WCF)</u>.</p>
<p align="center"><img src="http://i.msdn.microsoft.com/dynimg/IC210400.gif" /> </p>
<p><strong>5. Pasos básico para iniciar solución ASP.NET con WorkFlow :</strong></p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top">1. Crear Proyecto ASP.NET Web Application</td>
<td valign="top">2. Agregar Nuevo elemento <strong>Activity </strong>de WorkFlow llamado <u>ActivityAritmetica</u> al proyecto ASP.NET</td>
<td valign="top">3. Diseñar y Desarrollar WorkFlow para dar operación aritmética a dos numero.</td>
</tr>
<tr>
<td valign="top"><a href="http://jorgepedraza.files.wordpress.com/2011/11/paso1.jpg"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;" title="Paso1" border="0" alt="Paso1" src="http://jorgepedraza.files.wordpress.com/2011/11/paso1_thumb.jpg?w=240&#038;h=141" width="240" height="141" /></a></td>
<td valign="top"><a href="http://jorgepedraza.files.wordpress.com/2011/11/paso2.jpg"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;" title="Paso2" border="0" alt="Paso2" src="http://jorgepedraza.files.wordpress.com/2011/11/paso2_thumb.jpg?w=240&#038;h=135" width="240" height="135" /></a></td>
<td valign="top"><a href="http://jorgepedraza.files.wordpress.com/2011/11/paso3.jpg"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;" title="Paso3" border="0" alt="Paso3" src="http://jorgepedraza.files.wordpress.com/2011/11/paso3_thumb.jpg?w=224&#038;h=240" width="224" height="240" /></a></td>
</tr>
<tr>
<td valign="top">&#160;</td>
<td valign="top">&#160;</td>
<td valign="top">&#160;</td>
</tr>
<tr>
<td valign="top">4. Diseñar interfaz de usuario web en Default.aspx con entradas y salida de datos de <u>ActivityAritmetica</u></td>
<td valign="top">5. Introducir Código en el botón igual, para invocar ActivityAritmetica con su parámetros de entrada y salida.</td>
<td valign="top">6. Compilar y probar la solución de ASP.NET. </td>
</tr>
<tr>
<td valign="top"><a href="http://jorgepedraza.files.wordpress.com/2011/11/paso4.jpg"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;" title="Paso4" border="0" alt="Paso4" src="http://jorgepedraza.files.wordpress.com/2011/11/paso4_thumb.jpg?w=240&#038;h=178" width="240" height="178" /></a></td>
<td valign="top"><a href="http://jorgepedraza.files.wordpress.com/2011/11/paso51.jpg"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;" title="Paso5" border="0" alt="Paso5" src="http://jorgepedraza.files.wordpress.com/2011/11/paso5_thumb1.jpg?w=240&#038;h=57" width="240" height="57" /></a></td>
<td valign="top"><a href="http://jorgepedraza.files.wordpress.com/2011/11/paso6.jpg"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;" title="Paso6" border="0" alt="Paso6" src="http://jorgepedraza.files.wordpress.com/2011/11/paso6_thumb.jpg?w=240&#038;h=136" width="240" height="136" /></a></td>
</tr>
<tr>
<td valign="top">&#160;</td>
<td valign="top">&#160;</td>
<td valign="top">&#160;</td>
</tr>
</tbody>
</table>
<p><strong>6. Descripción Solución de Ejemplo <u>Test WorkFlow ASP.NET</u> :</strong></p>
<p>Se trata de la función <a href="http://jorgepedraza.wordpress.com/2011/01/29/funcion-cifrado-net/" target="_blank">Cifrado .NET</a> llevada a la versión <strong>WorkFlow</strong> la cual es consumida desde Aplicación Web de ASP.NET</p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top">1. Diseño y Desarrollo WF</td>
<td valign="top">2. Generación</td>
<td valign="top">3. Consumo</td>
</tr>
<tr>
<td valign="top"><a href="http://jorgepedraza.files.wordpress.com/2011/11/wfcifradonet.jpg"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;" title="WFCifradoNET" border="0" alt="WFCifradoNET" src="http://jorgepedraza.files.wordpress.com/2011/11/wfcifradonet_thumb.jpg?w=244&#038;h=239" width="244" height="239" /></a></td>
<td valign="top"><a href="http://jorgepedraza.files.wordpress.com/2011/11/wfcifradonetdll.jpg"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;" title="WFCifradoNETDLL" border="0" alt="WFCifradoNETDLL" src="http://jorgepedraza.files.wordpress.com/2011/11/wfcifradonetdll_thumb.jpg?w=174&#038;h=35" width="174" height="35" /></a></td>
<td valign="top"><a href="http://jorgepedraza.files.wordpress.com/2011/11/wfcifradonetaspnet.jpg"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;" title="WFCifradoNETASPNET" border="0" alt="WFCifradoNETASPNET" src="http://jorgepedraza.files.wordpress.com/2011/11/wfcifradonetaspnet_thumb.jpg?w=244&#038;h=136" width="244" height="136" /></a></td>
</tr>
</tbody>
</table>
<p><strong>7. Descripción Solución de Ejemplo <u>Hosting WorkFlow in ASP.NET</u> :</strong></p>
<p>Se trata de una solución que involucra 3 proyectos (Actividad de Envió de Email, Servicio WCF para Envío de Email, Aplicación Web de ASP.NET). Esta solución tiene finalidad de Enviar Email desde Aplicación cliente (ASP.NET) a través de un series elementos Workflow enlazado como un servicio WCF y biblioteca de proceso. Aquí es importe paremetrizar correctamente (<u>From</u>, <u>host</u>, <u>password</u>, <u>subject</u>, <u>to</u>, <u>UserName</u>) de la actividad <strong>SendEmailActivity</strong> contenida en el WorkFlow del Servicio WCF de Envío de Email, para obtener resultado satisfactorio.</p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top">1. Actividad de Envío de Email</td>
<td valign="top">2. Servicio WCF de Envío de Email</td>
<td valign="top">3. Consumo de Servicio WCF Email</td>
</tr>
<tr>
<td valign="top"><a href="http://jorgepedraza.files.wordpress.com/2011/11/wfsendemailactivitydesigner.jpg"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;" title="WFSendEmailActivityDesigner" border="0" alt="WFSendEmailActivityDesigner" src="http://jorgepedraza.files.wordpress.com/2011/11/wfsendemailactivitydesigner_thumb.jpg?w=157&#038;h=62" width="157" height="62" /></a></td>
<td valign="top"><a href="http://jorgepedraza.files.wordpress.com/2011/11/wfsendemailservice.jpg"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;" title="WFSendEmailService" border="0" alt="WFSendEmailService" src="http://jorgepedraza.files.wordpress.com/2011/11/wfsendemailservice_thumb.jpg?w=179&#038;h=244" width="179" height="244" /></a></td>
<td valign="top"><a href="http://jorgepedraza.files.wordpress.com/2011/11/wfenviaremailaspnet.jpg"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;" title="WFEnviarEmailASPNET" border="0" alt="WFEnviarEmailASPNET" src="http://jorgepedraza.files.wordpress.com/2011/11/wfenviaremailaspnet_thumb.jpg?w=203&#038;h=244" width="203" height="244" /></a></td>
</tr>
<tr>
<td valign="top">
<p><a href="http://jorgepedraza.files.wordpress.com/2011/11/wfsendemailactivitydesignerdll.jpg"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;" title="WFSendEmailActivityDesignerDLL" border="0" alt="WFSendEmailActivityDesignerDLL" src="http://jorgepedraza.files.wordpress.com/2011/11/wfsendemailactivitydesignerdll_thumb.jpg?w=144&#038;h=32" width="144" height="32" /></a></p>
</td>
<td valign="top"><a href="http://jorgepedraza.files.wordpress.com/2011/11/wfsendemailservicerun.jpg"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;" title="WFSendEmailServiceRun" border="0" alt="WFSendEmailServiceRun" src="http://jorgepedraza.files.wordpress.com/2011/11/wfsendemailservicerun_thumb.jpg?w=244&#038;h=146" width="244" height="146" /></a></td>
<td valign="top"><a href="http://jorgepedraza.files.wordpress.com/2011/11/wfenviaremailaspnetrun.jpg"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;" title="WFEnviarEmailASPNETrun" border="0" alt="WFEnviarEmailASPNETrun" src="http://jorgepedraza.files.wordpress.com/2011/11/wfenviaremailaspnetrun_thumb.jpg?w=244&#038;h=128" width="244" height="128" /></a></td>
</tr>
</tbody>
</table>
<p><strong>8. Códigos Fuentes</strong>:</p>
<ul>
<li><a href="https://skydrive.live.com/browse.aspx/P%c3%bablico?cid=180d91520e7e6619&amp;sc=documents" target="_blank">My WF Web App</a>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; (Código Visual Basic 2010) </li>
<li><a href="https://skydrive.live.com/self.aspx/P%c3%bablico/TestWorkFlowInASPNET.zip?cid=180d91520e7e6619&amp;sc=documents" target="_blank">Test WorkFlow in ASP.NET</a>&#160;&#160;&#160;&#160; (Código Visual Basic 2010) </li>
<li><a href="https://skydrive.live.com/self.aspx/P%c3%bablico/HostingWorkflowInASPNET.zip?cid=180d91520e7e6619&amp;sc=documents" target="_blank">Hosting WorkFlow in ASP.NET</a> (Código C# 2010) </li>
</ul>
<p><strong>9. Puntos de Interés de WorkFlow para su estudio</strong>:</p>
<ol>
<li><a href="http://msdn.microsoft.com/es-es/library/dd489425.aspx" target="_blank">Diseñar e implementar actividades personalizadas</a>. </li>
<li><a href="http://msdn.microsoft.com/es-es/library/dd489457.aspx" target="_blank">Modelo de datos de Windows Workflow Foundation</a>. </li>
<li><a href="http://msdn.microsoft.com/es-es/library/dd489426.aspx" target="_blank">Esperar entrada en un flujo de trabajo</a>. </li>
<li><a href="http://msdn.microsoft.com/es-es/library/dd489431.aspx" target="_blank">Excepciones, transacciones y compensación</a>. </li>
<li><a href="http://msdn.microsoft.com/es-es/library/dd489446.aspx" target="_blank">Hospedar de WorkFlow</a>. </li>
<li><a href="http://msdn.microsoft.com/es-es/library/dd456788.aspx" target="_blank">Servicios de WorkFlow</a>. </li>
<li><a href="http://msdn.microsoft.com/es-es/library/dd489420.aspx" target="_blank">Persistencia del WorkFlow</a>. </li>
<li><a href="http://msdn.microsoft.com/es-es/library/ee264169.aspx" target="_blank">Migrar WorkFlow</a>. </li>
<li><a href="http://msdn.microsoft.com/es-es/library/ee513992.aspx" target="_blank">Seguimiento y traza del WorkFlow</a> </li>
<li><a href="http://msdn.microsoft.com/es-es/library/ee534439.aspx" target="_blank">Seguridad del WorkFlow</a> </li>
</ol>
<p><strong>10. En Resumen</strong>:</p>
<p>Windows Workflow Foundation (WF) genera el nivel de abstracción para desarrollar aplicaciones interactivas de ejecución prolongada. Las unidades de trabajo se encapsulan como actividades. Las actividades se ejecutan en un entorno que proporcione los medios para el control de flujo, el control de excepciones, la propagación de errores, la persistencia de los datos de estado, la carga y descarga de flujos de trabajo en progreso de la memoria, el seguimiento y el flujo de la transacción.</p>
<p><strong>11. Enlaces de Referencia</strong>:</p>
<ul>
<li><a href="http://msdn.microsoft.com/es-es/library/dd489441.aspx" target="_blank">Windows Workflow Foundation 4</a> (Español) </li>
<li><a href="http://msdn.microsoft.com/en-us/netframework/aa663328" target="_blank">Windows Workflow Foundation Dev Center</a> (Ingles) </li>
<li><a href="http://msdn.microsoft.com/en-us/netframework/dd980559#content4" target="_blank">Beginner&#8217;s Guide to Windows Workflow Foundation</a> (Ingles) </li>
<li><a href="http://blogs.msdn.com/b/bursteg/archive/2009/05/19/wf-4-0-how-to-execute-a-worklflow-workflowinvoker-vs-workflowinstance.aspx" target="_blank">WF 4.0: How to Execute a Worklflow (WorkflowInvoker vs WorkflowInstance)</a> (Ingles) </li>
<li><a href="http://code.msdn.microsoft.com/Windows-Workflow-b4b808a8" target="_blank">Windows Workflow Foundation (WF4) &#8211; Introduction to State Machine Hands On Lab</a> (Ingles) </li>
<li><a href="http://msdn.microsoft.com/query/dev10.query?appId=Dev10IDEF1&amp;l=EN-US&amp;k=k(SYSTEM.DIAGNOSTICS.STOPWATCH);k(TargetFrameworkMoniker-%22.NETFRAMEWORK%2cVERSION%3dV4.0.1%22);k(DevLang-VB)&amp;rd=true" target="_blank">Stopwatch Class</a> (Ingles) </li>
</ul>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jorgepedraza.wordpress.com/1073/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jorgepedraza.wordpress.com/1073/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jorgepedraza.wordpress.com/1073/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jorgepedraza.wordpress.com/1073/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/jorgepedraza.wordpress.com/1073/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/jorgepedraza.wordpress.com/1073/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/jorgepedraza.wordpress.com/1073/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/jorgepedraza.wordpress.com/1073/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jorgepedraza.wordpress.com/1073/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jorgepedraza.wordpress.com/1073/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jorgepedraza.wordpress.com/1073/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jorgepedraza.wordpress.com/1073/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jorgepedraza.wordpress.com/1073/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jorgepedraza.wordpress.com/1073/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jorgepedraza.wordpress.com&amp;blog=6317667&amp;post=1073&amp;subd=jorgepedraza&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://jorgepedraza.wordpress.com/2011/11/14/usando-workflows-desde-asp-net-4-0/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/fd1a8a01c04bb6ff99fb99673ebfcaac?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jorgepedraza</media:title>
		</media:content>

		<media:content url="http://i.msdn.microsoft.com/dynimg/IC30608.gif" medium="image" />

		<media:content url="http://i.msdn.microsoft.com/dynimg/IC68719.gif" medium="image" />

		<media:content url="http://jorgepedraza.files.wordpress.com/2011/11/dowhile1.jpg" medium="image">
			<media:title type="html">DoWhile</media:title>
		</media:content>

		<media:content url="http://jorgepedraza.files.wordpress.com/2011/11/foreacht1.jpg" medium="image">
			<media:title type="html">ForEachT</media:title>
		</media:content>

		<media:content url="http://jorgepedraza.files.wordpress.com/2011/11/if1.jpg" medium="image">
			<media:title type="html">IF</media:title>
		</media:content>

		<media:content url="http://jorgepedraza.files.wordpress.com/2011/11/parallel1.jpg" medium="image">
			<media:title type="html">Parallel</media:title>
		</media:content>

		<media:content url="http://jorgepedraza.files.wordpress.com/2011/11/parallelforeach1.jpg" medium="image">
			<media:title type="html">ParallelForEach</media:title>
		</media:content>

		<media:content url="http://jorgepedraza.files.wordpress.com/2011/11/pick1.jpg" medium="image">
			<media:title type="html">Pick</media:title>
		</media:content>

		<media:content url="http://jorgepedraza.files.wordpress.com/2011/11/pickbranch1.jpg" medium="image">
			<media:title type="html">PickBranch</media:title>
		</media:content>

		<media:content url="http://jorgepedraza.files.wordpress.com/2011/11/sequence1.jpg" medium="image">
			<media:title type="html">Sequence</media:title>
		</media:content>

		<media:content url="http://jorgepedraza.files.wordpress.com/2011/11/switcht1.jpg" medium="image">
			<media:title type="html">SwitchT</media:title>
		</media:content>

		<media:content url="http://jorgepedraza.files.wordpress.com/2011/11/while1.jpg" medium="image">
			<media:title type="html">While</media:title>
		</media:content>

		<media:content url="http://jorgepedraza.files.wordpress.com/2011/11/flowchart21.jpg" medium="image">
			<media:title type="html">FlowChart2</media:title>
		</media:content>

		<media:content url="http://jorgepedraza.files.wordpress.com/2011/11/flowdecision1.jpg" medium="image">
			<media:title type="html">FlowDecision</media:title>
		</media:content>

		<media:content url="http://jorgepedraza.files.wordpress.com/2011/11/flowswitch1.jpg" medium="image">
			<media:title type="html">FlowSwitch</media:title>
		</media:content>

		<media:content url="http://jorgepedraza.files.wordpress.com/2011/11/state1.jpg" medium="image">
			<media:title type="html">State</media:title>
		</media:content>

		<media:content url="http://jorgepedraza.files.wordpress.com/2011/11/statemachine21.jpg" medium="image">
			<media:title type="html">StateMachine2</media:title>
		</media:content>

		<media:content url="http://jorgepedraza.files.wordpress.com/2011/11/finalstate1.jpg" medium="image">
			<media:title type="html">FinalState</media:title>
		</media:content>

		<media:content url="http://jorgepedraza.files.wordpress.com/2011/11/correlationscope1.jpg" medium="image">
			<media:title type="html">CorrelationScope</media:title>
		</media:content>

		<media:content url="http://jorgepedraza.files.wordpress.com/2011/11/initializecorrelation1.jpg" medium="image">
			<media:title type="html">InitializeCorrelation</media:title>
		</media:content>

		<media:content url="http://jorgepedraza.files.wordpress.com/2011/11/receive1.jpg" medium="image">
			<media:title type="html">Receive</media:title>
		</media:content>

		<media:content url="http://jorgepedraza.files.wordpress.com/2011/11/receiveandsendreply1.jpg" medium="image">
			<media:title type="html">ReceiveAndSendReply</media:title>
		</media:content>

		<media:content url="http://jorgepedraza.files.wordpress.com/2011/11/send1.jpg" medium="image">
			<media:title type="html">Send</media:title>
		</media:content>

		<media:content url="http://jorgepedraza.files.wordpress.com/2011/11/sendandreceivereply1.jpg" medium="image">
			<media:title type="html">SendAndReceiveReply</media:title>
		</media:content>

		<media:content url="http://jorgepedraza.files.wordpress.com/2011/11/transactedreceivescope1.jpg" medium="image">
			<media:title type="html">TransactedReceiveScope</media:title>
		</media:content>

		<media:content url="http://jorgepedraza.files.wordpress.com/2011/11/persist1.jpg" medium="image">
			<media:title type="html">Persist</media:title>
		</media:content>

		<media:content url="http://jorgepedraza.files.wordpress.com/2011/11/terminateworkflow1.jpg" medium="image">
			<media:title type="html">TerminateWorkFlow</media:title>
		</media:content>

		<media:content url="http://jorgepedraza.files.wordpress.com/2011/11/assign1.jpg" medium="image">
			<media:title type="html">Assign</media:title>
		</media:content>

		<media:content url="http://jorgepedraza.files.wordpress.com/2011/11/delay1.jpg" medium="image">
			<media:title type="html">Delay</media:title>
		</media:content>

		<media:content url="http://jorgepedraza.files.wordpress.com/2011/11/invokemethod1.jpg" medium="image">
			<media:title type="html">InvokeMethod</media:title>
		</media:content>

		<media:content url="http://jorgepedraza.files.wordpress.com/2011/11/writeline1.jpg" medium="image">
			<media:title type="html">WriteLine</media:title>
		</media:content>

		<media:content url="http://jorgepedraza.files.wordpress.com/2011/11/cancellationscope1.jpg" medium="image">
			<media:title type="html">CancellationScope</media:title>
		</media:content>

		<media:content url="http://jorgepedraza.files.wordpress.com/2011/11/compensableactivity1.jpg" medium="image">
			<media:title type="html">CompensableActivity</media:title>
		</media:content>

		<media:content url="http://jorgepedraza.files.wordpress.com/2011/11/compensate1.jpg" medium="image">
			<media:title type="html">Compensate</media:title>
		</media:content>

		<media:content url="http://jorgepedraza.files.wordpress.com/2011/11/confirm1.jpg" medium="image">
			<media:title type="html">Confirm</media:title>
		</media:content>

		<media:content url="http://jorgepedraza.files.wordpress.com/2011/11/transactionscope1.jpg" medium="image">
			<media:title type="html">TransactionScope</media:title>
		</media:content>

		<media:content url="http://jorgepedraza.files.wordpress.com/2011/11/addtocollectiont1.jpg" medium="image">
			<media:title type="html">AddToCollectionT</media:title>
		</media:content>

		<media:content url="http://jorgepedraza.files.wordpress.com/2011/11/clearcollectiont1.jpg" medium="image">
			<media:title type="html">ClearCollectionT</media:title>
		</media:content>

		<media:content url="http://jorgepedraza.files.wordpress.com/2011/11/existsincollection1.jpg" medium="image">
			<media:title type="html">ExistsInCollection</media:title>
		</media:content>

		<media:content url="http://jorgepedraza.files.wordpress.com/2011/11/removefromcollectiont1.jpg" medium="image">
			<media:title type="html">RemoveFromCollectionT</media:title>
		</media:content>

		<media:content url="http://jorgepedraza.files.wordpress.com/2011/11/rethrow1.jpg" medium="image">
			<media:title type="html">Rethrow</media:title>
		</media:content>

		<media:content url="http://jorgepedraza.files.wordpress.com/2011/11/throw1.jpg" medium="image">
			<media:title type="html">Throw</media:title>
		</media:content>

		<media:content url="http://jorgepedraza.files.wordpress.com/2011/11/trycatch1.jpg" medium="image">
			<media:title type="html">TryCatch</media:title>
		</media:content>

		<media:content url="http://i.msdn.microsoft.com/dynimg/IC210400.gif" medium="image" />

		<media:content url="http://jorgepedraza.files.wordpress.com/2011/11/paso1_thumb.jpg" medium="image">
			<media:title type="html">Paso1</media:title>
		</media:content>

		<media:content url="http://jorgepedraza.files.wordpress.com/2011/11/paso2_thumb.jpg" medium="image">
			<media:title type="html">Paso2</media:title>
		</media:content>

		<media:content url="http://jorgepedraza.files.wordpress.com/2011/11/paso3_thumb.jpg" medium="image">
			<media:title type="html">Paso3</media:title>
		</media:content>

		<media:content url="http://jorgepedraza.files.wordpress.com/2011/11/paso4_thumb.jpg" medium="image">
			<media:title type="html">Paso4</media:title>
		</media:content>

		<media:content url="http://jorgepedraza.files.wordpress.com/2011/11/paso5_thumb1.jpg" medium="image">
			<media:title type="html">Paso5</media:title>
		</media:content>

		<media:content url="http://jorgepedraza.files.wordpress.com/2011/11/paso6_thumb.jpg" medium="image">
			<media:title type="html">Paso6</media:title>
		</media:content>

		<media:content url="http://jorgepedraza.files.wordpress.com/2011/11/wfcifradonet_thumb.jpg" medium="image">
			<media:title type="html">WFCifradoNET</media:title>
		</media:content>

		<media:content url="http://jorgepedraza.files.wordpress.com/2011/11/wfcifradonetdll_thumb.jpg" medium="image">
			<media:title type="html">WFCifradoNETDLL</media:title>
		</media:content>

		<media:content url="http://jorgepedraza.files.wordpress.com/2011/11/wfcifradonetaspnet_thumb.jpg" medium="image">
			<media:title type="html">WFCifradoNETASPNET</media:title>
		</media:content>

		<media:content url="http://jorgepedraza.files.wordpress.com/2011/11/wfsendemailactivitydesigner_thumb.jpg" medium="image">
			<media:title type="html">WFSendEmailActivityDesigner</media:title>
		</media:content>

		<media:content url="http://jorgepedraza.files.wordpress.com/2011/11/wfsendemailservice_thumb.jpg" medium="image">
			<media:title type="html">WFSendEmailService</media:title>
		</media:content>

		<media:content url="http://jorgepedraza.files.wordpress.com/2011/11/wfenviaremailaspnet_thumb.jpg" medium="image">
			<media:title type="html">WFEnviarEmailASPNET</media:title>
		</media:content>

		<media:content url="http://jorgepedraza.files.wordpress.com/2011/11/wfsendemailactivitydesignerdll_thumb.jpg" medium="image">
			<media:title type="html">WFSendEmailActivityDesignerDLL</media:title>
		</media:content>

		<media:content url="http://jorgepedraza.files.wordpress.com/2011/11/wfsendemailservicerun_thumb.jpg" medium="image">
			<media:title type="html">WFSendEmailServiceRun</media:title>
		</media:content>

		<media:content url="http://jorgepedraza.files.wordpress.com/2011/11/wfenviaremailaspnetrun_thumb.jpg" medium="image">
			<media:title type="html">WFEnviarEmailASPNETrun</media:title>
		</media:content>
	</item>
		<item>
		<title>Maestro Detalles ADO.NET en WPF</title>
		<link>http://jorgepedraza.wordpress.com/2011/09/04/maestro-detalles-ado-net-en-wpf/</link>
		<comments>http://jorgepedraza.wordpress.com/2011/09/04/maestro-detalles-ado-net-en-wpf/#comments</comments>
		<pubDate>Sun, 04 Sep 2011 14:47:25 +0000</pubDate>
		<dc:creator>JorgePedraza</dc:creator>
				<category><![CDATA[Aplicaciones Windows]]></category>
		<category><![CDATA[WPF;MaestroDetalles;ADO.NET;DataSet]]></category>

		<guid isPermaLink="false">https://jorgepedraza.wordpress.com/2011/09/04/maestro-detalles-ado-net-en-wpf/</guid>
		<description><![CDATA[Hola, el presente artículo intenta resaltar de forma rápida y sencilla el desarrollo de una aplicación de datos de última generación (Aplicación Maestro Detalles) donde involucra tecnologías actuales de Microsoft . Esta aplicación de ejemplo del tipo Windows está comprendida en tres aspectos de interés como: presentación grafica de la aplicación para el usuario (WPF [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jorgepedraza.wordpress.com&amp;blog=6317667&amp;post=951&amp;subd=jorgepedraza&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Hola, el presente artículo intenta resaltar de forma rápida y sencilla el desarrollo de una aplicación de datos de última generación (Aplicación <strong>Maestro Detalles)</strong> donde involucra tecnologías actuales de Microsoft .</p>
<p>Esta aplicación de ejemplo del tipo Windows está comprendida en tres aspectos de interés como: presentación grafica de la aplicación para el usuario (<strong>WPF</strong> Windows Presentation Foundation), Manipulación de datos (<strong>ADO.NET</strong>) y finalmente repositorio de datos (<strong>SQL Server Compact 4.0</strong>).</p>
<p>Con esta información se busca ofrecer una base fundamental para el desarrollo y expansión de soluciones en diferentes escenarios de forma genérica como es el caso de otros motores de base de datos y aplicaciones relacionadas con tecnologías.    </p>
<p><u>Índice</u>:</p>
<ol>
<li>Requisitos. </li>
<li>Conceptos Claves para este Articulo. </li>
<li>Diagrama entidad relación de Base Datos del Ejemplo (Maestro Detalles). </li>
<li>Esquema del Documento (Document Outline) – Aplicación Demo WPF. </li>
<li>Arquitectura de la Aplicación WPF con Maestro Detalles ADO.NET. </li>
<li>ItemTemplate de ListBox WPF </li>
<li>Representación y enlaces de ItemTemplate del ListBox desde XAML. </li>
<li>Código de Aplicación Maestro Detalles ADO.NET en WPF </li>
<li>Código Fuente. </li>
<li>En Resumen. </li>
<li>Enlaces de Interés. </li>
</ol>
<p><u>1. Requisitos</u>:</p>
<ol>
<li>Microsoft Visual Studio 2010 SP 1 </li>
<li>Microsoft Visual Studio 2010 SP1 Tools for <a href="http://msdn.microsoft.com/es-es/library/dd692930(v=SQL.10).aspx" target="_blank">SQL Server Compact 4.0</a> </li>
<li>Experiencia con Microsoft Visual Basic 2010 o C# 2010 </li>
<li>Experiencia con ADO.NET </li>
</ol>
<p><u>2. Conceptos claves para este Articulo</u>:</p>
<ul>
<li><strong>WPF</strong>: Windows Presentation Foundation (WPF) es un sistema de presentación grafica de ultima generación para construir aplicaciones clientes Windows con experiencias de usuario visualmente impresionantes. </li>
<li><strong>XAML</strong>: Es un lenguaje de marcado basado en XML, que se utiliza para implementar la apariencia de una aplicación de forma declarativa. </li>
<li><strong>SQL Server Compact 4.0</strong> : Es una base de datos compacta ideal para incrustarse en aplicaciones de escritorio y web. Este ofrece funcionalidad de base de datos relacional en un espacio reducido: un sólido almacén de datos, un procesador de consultas de optimización y una conectividad confiable y escalable. </li>
<li><strong>DataSet</strong> : Es un caché de memoria interna de datos y representa un componente fundamental de la arquitectura de ADO.NET. Un <strong>DataSet</strong> puede contener uno o más <u>tablas</u> llamadas <strong>DataTable</strong> que a su ves puede ser relacionadas por uno o más objetos de relación llamados <strong>DataRelation</strong>. </li>
</ul>
<p><u>3. Diagrama entidad relación de <strong>Base Datos</strong> del Ejemplo (Maestro Detalles):</u></p>
<p><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;" title="EntidadRelacionDB" border="0" alt="EntidadRelacionDB" src="http://jorgepedraza.files.wordpress.com/2011/09/entidadrelaciondb.jpg?w=386&#038;h=175" width="386" height="175" /></p>
<p><u>4. Esquema del Documento (Document Outline) – Aplicación Demo WPF</u>:</p>
<table border="0" cellspacing="0" cellpadding="1">
<tbody>
<tr>
<td valign="top"><a href="http://jorgepedraza.files.wordpress.com/2011/09/xamlydesign.jpg"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;" title="XAMLyDesign" border="0" alt="XAMLyDesign" src="http://jorgepedraza.files.wordpress.com/2011/09/xamlydesign_thumb.jpg?w=350&#038;h=313" width="350" height="313" /></a></td>
<td valign="top"><img title="Document OutlineWPF" alt="Document OutlineWPF" src="http://jorgepedraza.files.wordpress.com/2011/09/document-outlinewpf.jpg" /></td>
</tr>
</tbody>
</table>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top">&#160;</td>
<td valign="top">&#160;</td>
<td valign="top">&#160;</td>
<td valign="top">
<p align="center"><strong>Descripción a nivel de XAML</strong></p>
</td>
</tr>
<tr>
<td valign="top">Window:</td>
<td valign="top">&#160;</td>
<td valign="top">&#160;</td>
<td valign="top">Representa una <strong>Ventana</strong> de la aplicación Windows</td>
</tr>
<tr>
<td valign="top">&#160;</td>
<td valign="top">Resources:</td>
<td valign="top">&#160;</td>
<td valign="top">Forma sencilla de reutilizar objetos y valores comúnmente definido.</td>
</tr>
<tr>
<td valign="top">&#160;</td>
<td valign="top">&#160;</td>
<td valign="top">DataSet (<u>myds</u>)</td>
<td valign="top">Elemento proxy establecido para el objeto <u>mydscode</u> del tipo <strong>DataSet</strong></td>
</tr>
<tr>
<td valign="top">&#160;</td>
<td valign="top">&#160;</td>
<td valign="top">CollectionViewSource (<u>EncDocViewSource</u>)</td>
<td valign="top">Elemento proxy establecido para el objeto <u>MasterEncDocViewSource</u> del tipo <strong>CollectionViewSource</strong>. </td>
</tr>
<tr>
<td valign="top">&#160;</td>
<td valign="top">&#160;</td>
<td valign="top">CollectionViewSource (<u>EncDoc_DetDocViewSource</u>)</td>
<td valign="top">Elemento proxy establecido para el objeto <u>DetailEncDoc_DetDocViewSource</u> del tipo <strong>CollectionViewSource</strong>.</td>
</tr>
<tr>
<td valign="top">&#160;</td>
<td valign="top">Grid:</td>
<td valign="top">&#160;</td>
<td valign="top">Define un área de cuadrícula flexible que se compone de filas y columnas.</td>
</tr>
<tr>
<td valign="top">&#160;</td>
<td valign="top">&#160;</td>
<td valign="top">ListBox (<u>lbxEncDoc</u>)</td>
<td valign="top">Caja de Lista para mostrar datos del DataTable (EncDoc)</td>
</tr>
<tr>
<td valign="top">&#160;</td>
<td valign="top">&#160;</td>
<td valign="top">Button (<u>btnProximoEncDoc</u>)</td>
<td valign="top">Botón para invocar instrucción próximo registro dentro del MasterEncDocViewSource.View</td>
</tr>
<tr>
<td valign="top">&#160;</td>
<td valign="top">&#160;</td>
<td valign="top">TextBox (<u>txtNombre</u>)</td>
<td valign="top">Caja de Texto para mostrar o establecer datos en el campo Nombre del DataTable (EncDoc)</td>
</tr>
<tr>
<td valign="top">&#160;</td>
<td valign="top">&#160;</td>
<td valign="top">Button (<u>btnNuevoEncDoc</u>)</td>
<td valign="top">Botón para invocar instrucción Nuevo Registro dentro del MasterEncDocViewSource.View</td>
</tr>
<tr>
<td valign="top">&#160;</td>
<td valign="top">&#160;</td>
<td valign="top">ListBox (<u>lbxDetDoc</u>)</td>
<td valign="top">Caja de Lista para mostrar datos del DataTable (DetDoc)</td>
</tr>
<tr>
<td valign="top">&#160;</td>
<td valign="top">&#160;</td>
<td valign="top">Button (<u>txtCifra</u>)</td>
<td valign="top">Caja de Texto para mostrar o establecer valor numérico en el campo Cifra del DataTable (DetDoc)</td>
</tr>
<tr>
<td valign="top">&#160;</td>
<td valign="top">&#160;</td>
<td valign="top">Button (<u>btnNuevoDetDoc</u>)</td>
<td valign="top">Botón para invocar instrucción Nuevo Registro dentro del DetailEncDoc_DetDocList.View</td>
</tr>
<tr>
<td valign="top">&#160;</td>
<td valign="top">&#160;</td>
<td valign="top">Button (<u>btnQuitarDetDoc</u>)</td>
<td valign="top">Botón para invocar instrucción Quitar Registro actual dentro del DetailEncDoc_DetDocList.View</td>
</tr>
<tr>
<td valign="top">&#160;</td>
<td valign="top">&#160;</td>
<td valign="top">Button (<u>btnUpdate</u>)</td>
<td valign="top">Botón para invocar rutina de <strong>actualización</strong> de datos contra el origen de datos.</td>
</tr>
<tr>
<td valign="top">&#160;</td>
<td valign="top">&#160;</td>
<td valign="top">Button (<u>btnQuitarEncDoc</u>)</td>
<td valign="top">Botón para invocar instrucción Quitar Registro actual dentro del MasterEncDocViewSource.View</td>
</tr>
<tr>
<td valign="top">&#160;</td>
<td valign="top">&#160;</td>
<td valign="top">Button (<u>btnBuscar</u>)</td>
<td valign="top">Botón para invocar rutina de filtro de datos</td>
</tr>
<tr>
<td valign="top">&#160;</td>
<td valign="top">&#160;</td>
<td valign="top">Button (<u>btnTodos</u>)</td>
<td valign="top">Botón para invocar instrucción Quitar filtro de datos</td>
</tr>
<tr>
<td valign="top">&#160;</td>
<td valign="top">&#160;</td>
<td valign="top">Button (<u>btnOrdenar</u>)</td>
<td valign="top">Botón para invocar instrucción de ordenación de datos.</td>
</tr>
</tbody>
</table>
<p><u>5. Arquitectura de la Aplicación WPF con Maestro Detalles ADO.NET</u>:</p>
<p><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;" title="FlujoAr" border="0" alt="FlujoAr" src="http://jorgepedraza.files.wordpress.com/2011/09/flujoar.jpg?w=703&#038;h=1287" width="703" height="1287" /></p>
<p><u>6. ItemTemplate de ListBox WPF</u>:</p>
<p><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;" title="ItemTemplateAndAppWPF" border="0" alt="ItemTemplateAndAppWPF" src="http://jorgepedraza.files.wordpress.com/2011/09/itemtemplateandappwpf.jpg?w=575&#038;h=256" width="575" height="256" /></p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top">&#160;</td>
<td valign="top">&#160;</td>
<td valign="top">&#160;</td>
<td valign="top">&#160;</td>
<td valign="top">&#160;</td>
<td valign="top">
<p align="center"><strong>Descripción a nivel de XAML</strong></p>
</td>
</tr>
<tr>
<td valign="top">ListBox(lbxEncDoc)</td>
<td valign="top">&#160;</td>
<td valign="top">&#160;</td>
<td valign="top">&#160;</td>
<td valign="top">&#160;</td>
<td valign="top">Caja de Lista en WPF</td>
</tr>
<tr>
<td valign="top">&#160;</td>
<td valign="top"><font>ItemTemplate</font></td>
<td valign="top">&#160;</td>
<td valign="top">&#160;</td>
<td valign="top">&#160;</td>
<td valign="top">Obtiene o establece el <strong>DataTemplate</strong> utilizado para mostrar cada elemento.</td>
</tr>
<tr>
<td valign="top">&#160;</td>
<td valign="top">&#160;</td>
<td valign="top">DataTemplate</td>
<td valign="top">&#160;</td>
<td valign="top">&#160;</td>
<td valign="top">Describe la estructura visual de un objeto de datos.</td>
</tr>
<tr>
<td valign="top">&#160;</td>
<td valign="top">&#160;</td>
<td valign="top">&#160;</td>
<td valign="top">Grid</td>
<td valign="top">&#160;</td>
<td valign="top">Define un área de cuadrícula flexible que se compone de filas y columnas.</td>
</tr>
<tr>
<td valign="top">&#160;</td>
<td valign="top">&#160;</td>
<td valign="top">&#160;</td>
<td valign="top">&#160;</td>
<td valign="top">ColumnDefinition</td>
<td valign="top">Define propiedades específicas de la columna que se aplican a elementos <strong>Grid</strong>.</td>
</tr>
<tr>
<td valign="top">&#160;</td>
<td valign="top">&#160;</td>
<td valign="top">&#160;</td>
<td valign="top">&#160;</td>
<td valign="top">ColumnDefinition</td>
<td valign="top">&#160;</td>
</tr>
<tr>
<td valign="top">&#160;</td>
<td valign="top">&#160;</td>
<td valign="top">&#160;</td>
<td valign="top">TextBlock</td>
<td valign="top">&#160;</td>
<td valign="top">Proporciona un control ligero para mostrar pequeñas cantidades de contenido de flujo.</td>
</tr>
<tr>
<td valign="top">&#160;</td>
<td valign="top">&#160;</td>
<td valign="top">&#160;</td>
<td valign="top">TextBlock</td>
<td valign="top">&#160;</td>
<td valign="top">&#160;</td>
</tr>
</tbody>
</table>
<p><u>7. Representación y enlaces de ItemTemplate de ListBox desde XAML:</u> </p>
<p><u><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;" title="ItemTemplateXAML3" border="0" alt="ItemTemplateXAML3" src="http://jorgepedraza.files.wordpress.com/2011/09/itemtemplatexaml3.jpg?w=703&#038;h=666" width="703" height="666" /></u></p>
<p><u>8. Código de Aplicación Maestro Detalles ADO.NET en WPF</u>:</p>
<p>A continuación se comenta algunos aspectos claves del código fuente en <strong>Visual Basic 2010</strong> necesario para dar marcha a la aplicación planteada:</p>
<p><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;" title="ADONETWPFVB" border="0" alt="ADONETWPFVB" src="http://jorgepedraza.files.wordpress.com/2011/09/adonetwpfvb.jpg?w=759&#038;h=608" width="759" height="608" /></p>
<p><u>9. Código Fuente</u>:</p>
<ul>
<li><a href="https://skydrive.live.com/?cid=180d91520e7e6619&amp;sc=documents&amp;id=180D91520E7E6619%21791#" target="_blank">DemoWpf4Adonet</a> <strong>(Visual Basic 2010, WPF 4, ADO.NET, SQL Server Compact 4)</strong> </li>
</ul>
<p><u>10. En Resumen</u>:</p>
<p>La aplicación Demo <u>Maestro Detalles ADO.NET en WPF 4</u> descrita en este artículo ofrece un acceso directo a determinada estrategia de desarrollo de aplicaciones de última generación relacionado con actuales tecnologías Microsoft como WPF 4, SQL Server Compact 4.0, ADO.NET, etc. Y así establecer una alternativa sólida para dar inicio y continuidad a soluciones más compleja de forma rápida y segura.</p>
<p><u>11. Enlaces de Interés</u>:</p>
<ul>
<li><a href="http://msdn.microsoft.com/es-es/library/dd692930(v=SQL.10).aspx" target="_blank">SQL Server Compact 4.0</a> </li>
<li><a href="http://msdn.microsoft.com/es-es/library/e80y5yhx(v=VS.90).aspx" target="_blank">ADO.NET 3.5</a> </li>
<li><a href="http://msdn.microsoft.com/es-es/library/ms754130(v=VS.90).aspx" target="_blank">Windows Presentation Foundation (WPF 3.5)</a> </li>
<li><a href="http://msdn.microsoft.com/en-us/library/ms754130(v=VS.100).aspx" target="_blank">Windows Presentation Foundation (WPF 4.0)</a> </li>
<li><a href="https://skydrive.live.com/?cid=180d91520e7e6619&amp;sc=documents&amp;id=180D91520E7E6619%21795" target="_blank">DemoWpf4EFSs08</a> (Visual Basic 2010, WP4, Entity Framework 4, <strong>SQL Server 2008 R2</strong>) </li>
</ul>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jorgepedraza.wordpress.com/951/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jorgepedraza.wordpress.com/951/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jorgepedraza.wordpress.com/951/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jorgepedraza.wordpress.com/951/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/jorgepedraza.wordpress.com/951/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/jorgepedraza.wordpress.com/951/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/jorgepedraza.wordpress.com/951/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/jorgepedraza.wordpress.com/951/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jorgepedraza.wordpress.com/951/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jorgepedraza.wordpress.com/951/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jorgepedraza.wordpress.com/951/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jorgepedraza.wordpress.com/951/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jorgepedraza.wordpress.com/951/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jorgepedraza.wordpress.com/951/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jorgepedraza.wordpress.com&amp;blog=6317667&amp;post=951&amp;subd=jorgepedraza&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://jorgepedraza.wordpress.com/2011/09/04/maestro-detalles-ado-net-en-wpf/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/fd1a8a01c04bb6ff99fb99673ebfcaac?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jorgepedraza</media:title>
		</media:content>

		<media:content url="http://jorgepedraza.files.wordpress.com/2011/09/entidadrelaciondb.jpg" medium="image">
			<media:title type="html">EntidadRelacionDB</media:title>
		</media:content>

		<media:content url="http://jorgepedraza.files.wordpress.com/2011/09/xamlydesign_thumb.jpg" medium="image">
			<media:title type="html">XAMLyDesign</media:title>
		</media:content>

		<media:content url="http://jorgepedraza.files.wordpress.com/2011/09/document-outlinewpf.jpg" medium="image">
			<media:title type="html">Document OutlineWPF</media:title>
		</media:content>

		<media:content url="http://jorgepedraza.files.wordpress.com/2011/09/flujoar.jpg" medium="image">
			<media:title type="html">FlujoAr</media:title>
		</media:content>

		<media:content url="http://jorgepedraza.files.wordpress.com/2011/09/itemtemplateandappwpf.jpg" medium="image">
			<media:title type="html">ItemTemplateAndAppWPF</media:title>
		</media:content>

		<media:content url="http://jorgepedraza.files.wordpress.com/2011/09/itemtemplatexaml3.jpg" medium="image">
			<media:title type="html">ItemTemplateXAML3</media:title>
		</media:content>

		<media:content url="http://jorgepedraza.files.wordpress.com/2011/09/adonetwpfvb.jpg" medium="image">
			<media:title type="html">ADONETWPFVB</media:title>
		</media:content>
	</item>
		<item>
		<title>SQL Server Compact 4.0 y ASP.NET 4.0</title>
		<link>http://jorgepedraza.wordpress.com/2011/08/09/sql-server-compact-4-0-y-asp-net-4-0/</link>
		<comments>http://jorgepedraza.wordpress.com/2011/08/09/sql-server-compact-4-0-y-asp-net-4-0/#comments</comments>
		<pubDate>Wed, 10 Aug 2011 00:00:56 +0000</pubDate>
		<dc:creator>JorgePedraza</dc:creator>
				<category><![CDATA[Aplicaciones Web]]></category>
		<category><![CDATA[Base de Datos]]></category>
		<category><![CDATA[SSC4;ASPNET4;SQL Server Compact 4.0;SQL Server Compact 4.0 y ASP.NET 4.0]]></category>

		<guid isPermaLink="false">https://jorgepedraza.wordpress.com/2011/08/09/sql-server-compact-4-0-y-asp-net-4-0/</guid>
		<description><![CDATA[Hola, la presente de este articulo es para resaltar de forma rápida y sencilla el tema de SQL Server Compact 4.0 dentro del escenario de ASP.NET 4.0. Índice: Requisitos. SQL server Compact 4.0. SQL Server Compact 4.0 con ASP.NET 4.0. Código Fuente. En Resumen. Enlaces de interés. Requisitos: Visual Studio 2010 Service Pack 1 (SQL [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jorgepedraza.wordpress.com&amp;blog=6317667&amp;post=942&amp;subd=jorgepedraza&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Hola, la presente de este articulo es para resaltar de forma rápida y sencilla el tema de SQL Server Compact 4.0 dentro del escenario de ASP.NET 4.0.</p>
<p><strong>Índice</strong>:</p>
<ol>
<li>Requisitos. </li>
<li>SQL server Compact 4.0. </li>
<li>SQL Server Compact 4.0 con ASP.NET 4.0. </li>
<li>Código Fuente. </li>
<li>En Resumen. </li>
<li>Enlaces de interés. </li>
</ol>
<p><strong>Requisitos</strong>:</p>
<ol>
<li>Visual Studio 2010 Service Pack 1 (SQL Server Compact 4.0) </li>
<li>Visual Studio 2010 SP1 Tools for SQL Server Compact 4.0 </li>
</ol>
<p><strong>SQL server Compact 4.0</strong>:</p>
<p>Es una base de datos compacta ideal para incrustarse en aplicaciones de escritorio y web. SQL Server Compact 4.0 proporciona a los desarrolladores un modelo de programación común a otras ediciones de SQL Server para el desarrollo tanto de aplicaciones nativas como administradas. SQL Server Compact ofrece funcionalidad de base de datos relacional en un espacio reducido: un sólido almacén de datos, un procesador de consultas de optimización y una conectividad confiable y escalable.</p>
<p><u>Características de SQL Server Compact 4.0</u>:</p>
<ul>
<li>Integración con WebMatrix y Visual Studio 2010 Service Pack 1 </li>
<li>Compatibilidad por defecto con ASP.NET 4.0 </li>
<li>Sencilla implementación privada </li>
<li>Integración con ADO.NET Entity Framework 4.0 </li>
<li>Mayor Confiabilidad (capaz de tratar la carga de trabajo de los sitios web para principiantes) </li>
<li>Mayor Seguridad (uso de algoritmo <u>SHA2</u>) </li>
<li>Sintaxis de T-SQL para OFFSET y FETCH (Para realizar consulta de Paginación) </li>
<li>Mejoras de la API (<u>System.Data.SqlServerCe.SqlCeConnection.GetSchema</u> y <u>System.Data.SqlServerCe.SqlCeConnectionStringBuilder</u>) </li>
</ul>
<p><strong>SQL Server Compact 4.0 y ASP.NET 4.0</strong>:</p>
<p>SQL Server Compact 4.0 se ha optimizado y ajustado para usarse con aplicaciones Web ASP.NET. En él se garantiza que puede tratar la carga de los sitios Web para principiantes.</p>
<p><u>Características de SQL Server Compact 4.0 con ASP.NET 4.0</u>:</p>
<ul>
<li><strong>Memoria Virtual</strong> optimizada para permitir un máximo de 256 conexiones por base de datos. </li>
<li>Uso de <strong>Confianza Parcial</strong> para ejecución dentro de escenario de aplicaciones ASP.NET </li>
<li>Mejor desempeño en escenario de conexiones simultáneas a la base de datos desde aplicaciones ASP.NET. </li>
<li>La marca <strong>SQLServerCompactEditionUnderWebHosting</strong> ya no se requiere en SQL Server Compact 4.0. </li>
</ul>
<p><u>Pasos claves para trabajar con SQL Server Compact 4.0 y ASP.NET 4.0</u>:</p>
<ol>
<li>Crear un sitio o aplicación del tipo ASP.NET 4.0 desde Visual Studio 2010. </li>
<li>Dentro del proyecto y a nivel de la carpeta <u>App_Data</u>, se debe crear una o más Base de datos del tipo SQL Server Compact 4.0 (por ejemplo <strong>Database1.sdf</strong>) </li>
<li>En dicha base de datos, se debe crear estructuras de datos (Tablas, Columnas, Clave Primaria, etc.) según sea el caso requerido. </li>
<li>A nivel de propiedad de proyecto ASP.NET 4.0 en la parte de configuración debe crear uno o más valores del tipo de cadena de conexión que apunte correctamente a la base de datos ya mencionada. </li>
<li>Verifique que la cadena de conexión generada dentro del Web.Config; tenga establecido su ProviderName =”<strong>System.Data.SqlServerCe.4.0</strong>” </li>
<li>Finalmente ya se puede comenzar a desarrollo con diferentes opciones de ASP.NET 4.0; por Ejemplo: ADO.NET, Control SqlDataSource, Control EntityDataSource, etc. </li>
</ol>
<p><strong>Código Fuente</strong>:</p>
<ul>
<li><a href="https://skydrive.live.com/?cid=180d91520e7e6619&amp;sc=documents&amp;uc=1&amp;id=180D91520E7E6619%21779#" target="_blank">SQLSC4WebApp (3 Escenarios en Uno de ASP.NET 4.0, Visual Basic 2010)</a> </li>
</ul>
<p><strong>En Resumen</strong>:</p>
<p>Con la versión 4.0 de SQL Server Compact, ahora es posible trabajar de forma predeterminada con aplicaciones Web del tipo ASP.NET 4.0 en escenarios bien específicos sin necesidad de recurrir a la complejidad de otros motores de base de datos; para realizar gestiones de datos de menos impacto.</p>
<p><strong>Enlaces de interés</strong>:</p>
<ul>
<li>
<div align="left"><a href="http://msdn.microsoft.com/es-es/library/ms171938(v=SQL.110).aspx" target="_blank">Instalar SQL Server Compact</a></div>
</li>
<li>
<div align="left"><a href="http://msdn.microsoft.com/es-es/library/dd692930(v=SQL.10).aspx" target="_blank">SQL Server Compact 4.0</a></div>
</li>
<li>
<div align="left"><a href="http://weblogs.asp.net/scottgu/archive/2011/01/11/vs-2010-sp1-and-sql-ce.aspx" target="_blank">VS 2010 SP1 and SQL CE</a></div>
</li>
</ul>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jorgepedraza.wordpress.com/942/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jorgepedraza.wordpress.com/942/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jorgepedraza.wordpress.com/942/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jorgepedraza.wordpress.com/942/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/jorgepedraza.wordpress.com/942/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/jorgepedraza.wordpress.com/942/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/jorgepedraza.wordpress.com/942/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/jorgepedraza.wordpress.com/942/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jorgepedraza.wordpress.com/942/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jorgepedraza.wordpress.com/942/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jorgepedraza.wordpress.com/942/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jorgepedraza.wordpress.com/942/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jorgepedraza.wordpress.com/942/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jorgepedraza.wordpress.com/942/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jorgepedraza.wordpress.com&amp;blog=6317667&amp;post=942&amp;subd=jorgepedraza&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://jorgepedraza.wordpress.com/2011/08/09/sql-server-compact-4-0-y-asp-net-4-0/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/fd1a8a01c04bb6ff99fb99673ebfcaac?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jorgepedraza</media:title>
		</media:content>
	</item>
		<item>
		<title>Push Notifications en Windows Phone 7</title>
		<link>http://jorgepedraza.wordpress.com/2011/07/23/push-notifications-en-windows-phone-7/</link>
		<comments>http://jorgepedraza.wordpress.com/2011/07/23/push-notifications-en-windows-phone-7/#comments</comments>
		<pubDate>Sat, 23 Jul 2011 15:29:34 +0000</pubDate>
		<dc:creator>JorgePedraza</dc:creator>
				<category><![CDATA[Aplicaciones Moviles]]></category>
		<category><![CDATA[Push Notifications;Windows Phone;Push Notification;Windows Phone 7]]></category>

		<guid isPermaLink="false">https://jorgepedraza.wordpress.com/2011/07/23/push-notifications-en-windows-phone-7/</guid>
		<description><![CDATA[Hola la presente de este articulo es para resaltar de manera rápida y sencilla el tema de Push Notification en Windows Phone 7 a través del lenguaje Visual Basic 2010. Ruta del Articulo: Requisito. Introducción a Push Notification. Desarrollo con Microsoft Push Notification. Código de Ejemplo. Resumen. Link de Interés. Requisito: Visual Basic para Windows [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jorgepedraza.wordpress.com&amp;blog=6317667&amp;post=933&amp;subd=jorgepedraza&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Hola la presente de este articulo es para resaltar de manera rápida y sencilla el tema de Push Notification en Windows Phone 7 a través del lenguaje <strong>Visual Basic 2010</strong>.</p>
<p><strong>Ruta del Articulo</strong>:</p>
<ol>
<li>Requisito.</li>
<li>Introducción a Push Notification.</li>
<li>Desarrollo con Microsoft Push Notification.</li>
<li>Código de Ejemplo.</li>
<li>Resumen.</li>
<li>Link de Interés.</li>
</ol>
<p><strong>Requisito</strong>:</p>
<ul>
<li><a href="http://www.microsoft.com/download/en/details.aspx?id=9930" target="_blank">Visual Basic para Windows Phone Developer Tools</a></li>
</ul>
<p><strong>Introducción a Push Notification</strong>:</p>
<p>Es un servicio abierto en internet para el procesamiento y envió de mensaje en formato estándar a diferentes destinos móviles como son los teléfonos inteligentes; en los cuales se brindará notificaciones en tiempo real acerca de eventos ocurridos.</p>
<p><strong>Desarrollo con Microsoft Push Notification</strong>:</p>
<p>Existe tres modalidades de trabajo con <span style="text-decoration:underline;">Microsoft Push Notification</span> para Windows Phone 7:</p>
<ol>
<li><strong>Notificaciones Toast:</strong> Es una notificación que se muestra en la parte superior de la pantalla para notificar al usuario de un evento, como una alerta de noticias o el tiempo. Los elementos de una Notificación <strong>Toast</strong> son: <span style="text-decoration:underline;">Titulo</span>, <span style="text-decoration:underline;">Subtitulo</span> y opcionalmente <span style="text-decoration:underline;">Parámetro</span>.</li>
<li><strong>Notificaciones Tile:</strong> Es una notificación que puede ser usada para actualizar información breve sobre un icono mosaico situado en el inicio de Windows Phone 7. Los elementos de una Notificación <strong>Tile</strong> son: <span style="text-decoration:underline;">Contador</span>, <span style="text-decoration:underline;">Imagen de Fondo</span>, <span style="text-decoration:underline;">Titulo</span></li>
<li><strong>Notificaciones Raw:</strong> Esta notificación ideal para enviar información a su aplicación en ejecución directa con Windows Phone 7. Los elementos de una Notificación <strong>Raw</strong> puede ser <span style="text-decoration:underline;">uno o más elementos</span> definido por el usuario.</li>
</ol>
<p>Para iniciar el desarrollo con Microsoft Push Notification y Windows Phone 7 se necesita de lo siguiente:</p>
<ul>
<li><span style="text-decoration:underline;">Microsoft.Phone.Notification.HttpNotificationChannel</span>: Crea un canal de notificación entre el servicio de notificación Push de Microsoft y el cliente  Push como Windows Phone 7. En este canal se establecerá una URI única por instancia de dispositivo con el cual se usará para recibir notificaciones de terceros.</li>
<li><span style="text-decoration:underline;">System.Uri</span>, <span style="text-decoration:underline;">System.Net.WebRequest</span> y <span style="text-decoration:underline;">System.IO.Stream</span>: Son elementos bien conocidos que pueden ser usados a través de un <strong>servicio</strong> o <strong>aplicación</strong>, para crear y enviar datos en formato estándar hacia determinado canal establecido entre el servicio de notificación Push de Microsoft y los clientes Windows Phone 7 suscripto.</li>
</ul>
<p>Pasos claves para trabajar con Push Notification y Windows Phone 7:</p>
<p><span style="text-decoration:underline;">En Windows Phone 7</span>:</p>
<ol>
<li>A nivel del formulario se declara una variable con o sin eventos llamado por ejemplo “myHttpNotificationChannel” del tipo Microsoft.Phone.Notification.HttpNotificationChannel.</li>
<li>Se procede a inicializar dicha variable en un objeto ya sea por una instancia nueva o recreando el objeto con una suscripción existente; todo esto desde un procedimiento el cual deberá ser llamado por el constructor del clase formulario.</li>
<li>Se crea y vincula los diferentes procedimientos de eventos relacionado con el Objeto “myHttpNotificationChannel”, por ejemplo: ChannelUriUpdated, ErrorOccurred, HttpNotificationReceived, ShellToastNotificationReceived.</li>
<li>Ahora en cada procedimiento de evento mencionado, se puede procede a escribir código de interés según sea el caso. Un ejemplo es el caso de ChannelUriUpdated: que se puede usar para informar asíncronamente a través de algún medio, el canal de notificación hacia terceros quienes desea que envié notificaciones.</li>
</ol>
<p><span style="text-decoration:underline;">En Servicio o Aplicación</span>:</p>
<ol>
<li>Se define uno o más procedimiento de envió de información, por ejemplo: SendToast, SendTile, SendRaw en donde se arma el cuerpo del mensaje en XML para ser enviado por la red.</li>
<li>Se define un procedimiento SendMessage, el cual se va encarga de enviar dicho mensaje a través de un canal de notificación con URI especifica advertido previamente por un cliente Windows Phone 7.</li>
</ol>
<p><strong>Código de Ejemplo</strong>:</p>
<ul>
<li><a href="https://skydrive.live.com/?cid=180d91520e7e6619&amp;sc=documents&amp;uc=1&amp;id=180D91520E7E6619%21770#" target="_blank">Push Notification</a> (<strong>Visual Basic 2010</strong> &#8211; Solución: WPF, WCF, WP7)</li>
</ul>
<p><strong>Resumen</strong>:</p>
<p>Una vez más se encuentra una excelente alternativa de comunicación en tipo real con dispositivos inteligentes que contenga sistemas operativos como <strong>Windows Phone 7</strong>, para la notificación de datos de interés con usuarios de determinada organización.</p>
<p><strong>Link de Interés</strong>:</p>
<ul>
<li><a href="http://msdn.microsoft.com/en-us/library/ff402558(v=vs.92).aspx" target="_blank">Push Notifications Overview for Windows Phone</a></li>
<li><a href="http://windowsteamblog.com/windows_phone/b/wpdev/archive/2010/05/03/understanding-microsoft-push-notifications-for-windows-phones.aspx" target="_blank">Understanding Microsoft Push Notifications for Windows Phones</a></li>
<li><a href="http://windowsteamblog.com/windows_phone/b/wpdev/archive/2010/05/06/using-push-notification-from-your-windows-phone-application.aspx" target="_blank">Using Push Notification from Your Windows Phone Application</a></li>
<li><a href="http://msdn.microsoft.com/en-us/Video/gg153660" target="_blank">Windows Phone 7 in 7: Push Notifications</a></li>
</ul>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jorgepedraza.wordpress.com/933/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jorgepedraza.wordpress.com/933/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jorgepedraza.wordpress.com/933/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jorgepedraza.wordpress.com/933/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/jorgepedraza.wordpress.com/933/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/jorgepedraza.wordpress.com/933/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/jorgepedraza.wordpress.com/933/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/jorgepedraza.wordpress.com/933/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jorgepedraza.wordpress.com/933/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jorgepedraza.wordpress.com/933/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jorgepedraza.wordpress.com/933/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jorgepedraza.wordpress.com/933/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jorgepedraza.wordpress.com/933/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jorgepedraza.wordpress.com/933/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jorgepedraza.wordpress.com&amp;blog=6317667&amp;post=933&amp;subd=jorgepedraza&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://jorgepedraza.wordpress.com/2011/07/23/push-notifications-en-windows-phone-7/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/fd1a8a01c04bb6ff99fb99673ebfcaac?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jorgepedraza</media:title>
		</media:content>
	</item>
		<item>
		<title>Autenticaci&#243;n y Autorizaci&#243;n de ASP.NET</title>
		<link>http://jorgepedraza.wordpress.com/2011/04/11/autenticacin-y-autorizacin-de-asp-net/</link>
		<comments>http://jorgepedraza.wordpress.com/2011/04/11/autenticacin-y-autorizacin-de-asp-net/#comments</comments>
		<pubDate>Mon, 11 Apr 2011 12:06:42 +0000</pubDate>
		<dc:creator>JorgePedraza</dc:creator>
				<category><![CDATA[Seguridad]]></category>
		<category><![CDATA[ASP.NET]]></category>
		<category><![CDATA[Autenticacion]]></category>
		<category><![CDATA[Autorizacion]]></category>

		<guid isPermaLink="false">https://jorgepedraza.wordpress.com/2011/04/11/autenticacin-y-autorizacin-de-asp-net/</guid>
		<description><![CDATA[Hola, la presente de este artículos es para resaltar de forma rápida y sencilla uno de los temas de seguridad en ASP.NET. Dentro de la seguridad de ASP.NET se menciona el siguiente esquema fundamental: Autenticación Autorización Autenticación: Es el mecanismo para validar las credenciales de usuario (Nombre y Clave) contra el acceso de un sitio [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jorgepedraza.wordpress.com&amp;blog=6317667&amp;post=920&amp;subd=jorgepedraza&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Hola, la presente de este artículos es para resaltar de forma rápida y sencilla uno de los temas de seguridad en ASP.NET.</p>
<p>Dentro de la seguridad de ASP.NET se menciona el siguiente esquema fundamental:</p>
<ol>
<li>Autenticación </li>
<li>Autorización </li>
</ol>
<p><strong>Autenticación</strong>: Es el mecanismo para validar las credenciales de usuario (<strong>Nombre</strong> y <strong>Clave</strong>) contra el acceso de un sitio web.</p>
<p><u>Descripción de la Autenticación</u>:</p>
<p>Este mecanismo generalmente representa una interfaz de solicitud y validación de credenciales de usuarios, para aquellos usuarios que intenta ingresar a un sitio Web protegido. </p>
<p><font color="#000000"><u>Tipos de Autenticación</u></font>:</p>
<table border="1" cellspacing="0" cellpadding="0" width="496">
<tbody>
<tr>
<td valign="top" width="201">
<p align="center"><strong>Tipos</strong></p>
</td>
<td valign="top" width="293">
<p align="center"><strong>Descripción</strong></p>
</td>
</tr>
<tr>
<td valign="top" width="201">
<p align="center">Windows</p>
</td>
<td valign="top" width="293">Valida credenciales de usuarios contra las cuentas de usuarios de Microsoft Windows</td>
</tr>
<tr>
<td valign="top" width="201">
<p align="center">Formulario</p>
</td>
<td valign="top" width="293">Valida credenciales de usuario contra cualquier repositorio de datos estándar.</td>
</tr>
<tr>
<td valign="top" width="201">
<p align="center">Directorio Activo<!--EndFragment--></p>
</td>
<td valign="top" width="293">Valida credenciales de usuario contra el Directorio activo de la red empresarial</td>
</tr>
<tr>
<td valign="top" width="201">
<p align="center">Membership</p>
</td>
<td valign="top" width="293">Valida credenciales de usuario contra origen de datos especifico, por excelencia Microsoft SQL Server</td>
</tr>
<tr>
<td valign="top" width="201">
<p align="center">Windows Identity Foundation</p>
</td>
<td valign="top" width="293">Valida credenciales de usuarios contra un servicio estandarizado de forma global en la Red.</td>
</tr>
</tbody>
</table>
<p><u>Parámetros Básico de la Autenticación en ASP.NET (<strong>Web.config</strong>)</u>:</p>
<p><font color="#0000ff">&lt;</font>system.web<font color="#0000ff">&gt;</font></p>
<p>&#160; &lt;authentication mode=&quot;<font color="#0000ff">Forms</font>&quot;&gt;     <br />&#160;&#160;&#160; &lt;forms loginUrl=&quot;login.aspx&quot;&gt;&lt;/forms&gt;     <br />&#160; &lt;/authentication&gt;</p>
<p>&#160; &lt;authorization&gt;    <br />&#160;&#160;&#160; &lt;deny users=&quot;?&quot;&gt;     <br />&#160; &lt;/authorization&gt;</p>
<p><font color="#0000ff">&lt;/</font>system.web<font color="#0000ff">&gt;</font></p>
<p>Ahora que conoce el mecanismo de Autenticación, se continua en el siguiente paso: El acceso autorizado a recursos con la <u>Autorización</u> en ASP.NET</p>
<p><strong>Autorización</strong>: Es el mecanismo que establece permisos de acceso a recursos dentro del sitio Web para usuarios ya autenticados.</p>
<p><u>Descripción de la Autorización</u>: </p>
<p>Este mecanismo toma como patrón base el sistema tradicional de Roles y Reglas de Acceso, donde cada <em><strong>Rol</strong></em> contiene un conjunto de <em><strong>reglas de acceso</strong></em> para usar dentro del sitio Web. Por ejemplo:</p>
<table border="1" cellspacing="0" cellpadding="0" width="543">
<tbody>
<tr>
<td valign="top" width="203">
<p align="center"><strong>Roles</strong></p>
</td>
<td valign="top" width="338">
<p align="center"><strong>Reglas de Acceso</strong></p>
</td>
</tr>
<tr>
<td valign="top" width="204">
<p align="center">Administrador</p>
</td>
<td valign="top" width="338">Obtiene acceso a todos los recursos del sitio Web</td>
</tr>
<tr>
<td valign="top" width="204">
<p align="center">Usuario</p>
</td>
<td valign="top" width="338">Obtiene acceso a cierto recursos del sitio Web</td>
</tr>
<tr>
<td valign="top" width="204">
<p align="center">Invitado</p>
</td>
<td valign="top" width="338">Obtiene acceso a recursos básico del sitio Web</td>
</tr>
</tbody>
</table>
<p><u>Parámetros Básicos de la Autorización en ASP.NET (<strong>Web.Config</strong>)</u>:</p>
<p><font color="#0000ff">&lt;</font>system.web<font color="#0000ff">&gt;</font></p>
<p>&#160; &lt;authorization&gt;    <br />&#160;&#160;&#160; &lt;allow roles=&quot;Finanzas, Administradores&quot; /&gt;     <br />&#160;&#160;&#160; &lt;allow users=&quot;Mario, Pedro&quot; /&gt;     <br />&#160;&#160;&#160; &lt;deny users=&quot; * &quot;/&gt;     <br />&#160; &lt;/authorization&gt;</p>
<p><font color="#0000ff">&lt;/</font>system.web<font color="#0000ff">&gt;</font></p>
<p><strong>Puntos claves para optimizar la Autenticación y Autorización de ASP.NET</strong>:</p>
<ul>
<li>Validar la unicidad de las credenciales de usuarios contra el acceso de determinado sitio Web. </li>
<li>Evitar el uso de Query String para manipular información sensible de determinado usuario. </li>
<li>Proteger la entrada de datos contra XSS (Cross-Site-scripting). </li>
<li>Usar comandos parametrizado contra origen de datos. </li>
<li>Evitar el uso de Query dinámico a nivel de procedimientos almacenado. </li>
<li>Usar certificado digital <strong>SSL</strong> en ciertos módulos Web de extremada privacidad. </li>
</ul>
<p><strong>Código Fuente de Interés</strong>:</p>
<ul>
<li><a href="http://cid-180d91520e7e6619.office.live.com/self.aspx/P%c3%bablico/RolesASPNET.zip" target="_blank">Authentication and Authorization (ASP.NET 4.0)</a> </li>
<li><a href="http://cid-180d91520e7e6619.office.live.com/self.aspx/P%c3%bablico/ADTestASPNETWebApp.zip" target="_blank">Forms Authentication with Active Directory (ASP.NET 4.0)</a> </li>
<li><a href="http://cid-180d91520e7e6619.office.live.com/self.aspx/P%c3%bablico/MembershipASPNETTest.zip" target="_blank">Membership (ASP.NET 4.0)</a> </li>
</ul>
<p><strong>Links de Interés</strong>:</p>
<ul>
<li>
<div align="left"><a href="http://support.microsoft.com/kb/306590/es" target="_blank">Introducción a la seguridad de ASP.NET</a></div>
</li>
<li>
<div align="left"><a href="http://msdn.microsoft.com/es-es/library/ff649100.aspx" target="_blank">Crear aplicaciones ASP.NET seguras, Guía básica</a></div>
</li>
<li>
<div align="left"><a href="http://msdn.microsoft.com/en-us/library/yh26yfzy.aspx" target="_blank">Introduction to Membership</a></div>
</li>
<li>
<div align="left"><a href="http://msdn.microsoft.com/en-us/library/ff649100.aspx" target="_blank">Building Secure Microsoft ASP.NET Applications</a></div>
</li>
<li>
<div align="left"><a href="http://msdn.microsoft.com/en-us/security/aa570351" target="_blank">Windows Identity Foundation</a></div>
</li>
</ul>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jorgepedraza.wordpress.com/920/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jorgepedraza.wordpress.com/920/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jorgepedraza.wordpress.com/920/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jorgepedraza.wordpress.com/920/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/jorgepedraza.wordpress.com/920/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/jorgepedraza.wordpress.com/920/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/jorgepedraza.wordpress.com/920/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/jorgepedraza.wordpress.com/920/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jorgepedraza.wordpress.com/920/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jorgepedraza.wordpress.com/920/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jorgepedraza.wordpress.com/920/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jorgepedraza.wordpress.com/920/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jorgepedraza.wordpress.com/920/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jorgepedraza.wordpress.com/920/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jorgepedraza.wordpress.com&amp;blog=6317667&amp;post=920&amp;subd=jorgepedraza&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://jorgepedraza.wordpress.com/2011/04/11/autenticacin-y-autorizacin-de-asp-net/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/fd1a8a01c04bb6ff99fb99673ebfcaac?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jorgepedraza</media:title>
		</media:content>
	</item>
		<item>
		<title>Debug y Trace</title>
		<link>http://jorgepedraza.wordpress.com/2011/02/04/debug-y-trace/</link>
		<comments>http://jorgepedraza.wordpress.com/2011/02/04/debug-y-trace/#comments</comments>
		<pubDate>Sat, 05 Feb 2011 00:08:07 +0000</pubDate>
		<dc:creator>JorgePedraza</dc:creator>
				<category><![CDATA[Aplicaciones Windows]]></category>
		<category><![CDATA[Debug]]></category>
		<category><![CDATA[Depuracion]]></category>
		<category><![CDATA[Seguimiento]]></category>
		<category><![CDATA[Trace]]></category>

		<guid isPermaLink="false">https://jorgepedraza.wordpress.com/2011/02/04/debug-y-trace/</guid>
		<description><![CDATA[Debug y Trace en .NET Introducción Las funciones de depuración integradas en Visual Studio 2010 son lo suficientemente potentes como para poder encontrar y subsanar la mayoría de los errores (de Sintaxis y lógicas) pero, en algunos casos, necesitará agregar instrucciones de seguimientos en su código que le permitirán comprender por qué la aplicación tiene [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jorgepedraza.wordpress.com&amp;blog=6317667&amp;post=917&amp;subd=jorgepedraza&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<h1 align="center"><font size="4">Debug y Trace en .NET</font></h1>
<p><strong>Introducción</strong></p>
<p align="justify">Las funciones de depuración integradas en Visual Studio 2010 son lo suficientemente potentes como para poder encontrar y subsanar la mayoría de los errores (de Sintaxis y lógicas) pero, en algunos casos, necesitará agregar instrucciones de seguimientos en su código que le permitirán comprender por qué la aplicación tiene comportamiento inadecuado. este sistema resulta especialmente útil cuando los problemas se producen únicamente en las aplicaciones compilidas que ya han sido previamente instalada en la maquina de destino. Por fortuna .NET Framework ofrece varias clases que simplifican esta tarea, como lo son las Clase<strong> Debug</strong> y <strong>Trace</strong>.</p>
<p><strong>Requerimientos:</strong></p>
<ul>
<li>Framework 4.0 </li>
<li>Microsoft Visual Studio 2010 (Plataforma de Desarrollo) </li>
<li>Microsoft Windows 7 o Superior </li>
</ul>
<p>&#160;<strong>Contenido:</strong></p>
<table border="1" width="753" align="center">
<tbody>
<tr>
<td width="376">
<h3 align="center"><strong>Trace (Clase)</strong></h3>
</td>
<td width="361">
<h3 align="center"><strong>Debug (Clase) </strong></h3>
</td>
</tr>
<tr>
<td>Proporciona un conjunto de métodos y propiedades que le ayudan a realizar el seguimiento de la ejecución del código. No se puede heredar esta clase</td>
<td>Proporciona un conjunto de métodos y propiedades que ayudan a depurar el código. No se puede heredar esta clase.</td>
</tr>
<tr>
<td colspan="2">
<div align="center"><em><strong>Ambas clases comparten métodos y Propiedades en comun: </strong></em></div>
</td>
</tr>
</tbody>
</table>
<h4 align="center">Propiedades públicas </h4>
<table border="1" cellspacing="0" width="724" align="center">
<tbody>
<tr>
<td width="115">
<div align="center">AutoFlush </div>
</td>
<td width="607">Obtiene o establece si debe llamarse a Flush en Listeners después de cada escritura. </td>
</tr>
<tr>
<td width="115">
<div align="center">IndentLevel </div>
</td>
<td width="607">Obtiene o establece el nivel de sangría. </td>
</tr>
<tr>
<td width="115">
<div align="center">IndentSize </div>
</td>
<td width="607">Obtiene o establece el número de espacios de una sangría. </td>
</tr>
<tr>
<td width="115">
<div align="center">Listeners </div>
</td>
<td width="607">Obtiene la colección de los agentes de escucha que está supervisando los resultados del seguimiento. </td>
</tr>
</tbody>
</table>
<h4 align="center">Métodos públicos </h4>
<table border="1" cellspacing="0" width="731" align="center">
<tbody>
<tr>
<td width="91">
<div align="center">Assert </div>
</td>
<td width="638">Sobrecargado. Comprueba una condición y muestra un mensaje si ésta es <strong>false </strong>. </td>
</tr>
<tr>
<td width="91">
<div align="center">Close </div>
</td>
<td width="638">Vacía el búfer de resultados y, a continuación, cierra Listeners . </td>
</tr>
<tr>
<td width="91">
<div align="center">Fail </div>
</td>
<td width="638">Sobrecargado. Emite un mensaje de error. </td>
</tr>
<tr>
<td width="91">
<div align="center">Flush </div>
</td>
<td width="638">Vacía el búfer de resultados y hace que los datos almacenados en el búfer se escriban en Listeners . </td>
</tr>
<tr>
<td width="91">
<div align="center">Indent </div>
</td>
<td width="638">Aumenta la propiedad IndentLevel actual en uno. </td>
</tr>
<tr>
<td width="91">
<div align="center">Unindent </div>
</td>
<td width="638">Disminuye la propiedad IndentLevel actual en uno. </td>
</tr>
<tr>
<td width="91">
<div align="center">Write </div>
</td>
<td width="638">Sobrecargado. Escribe información sobre el seguimiento en los agentes de escucha de seguimiento de la colección Listeners . </td>
</tr>
<tr>
<td width="91">
<div align="center">WriteIf </div>
</td>
<td width="638">Sobrecargado. Escribe información acerca del seguimiento en los agentes de escucha de seguimiento de la colección Listeners si una condición es <strong>true </strong>. </td>
</tr>
<tr>
<td width="91">
<div align="center">WriteLine </div>
</td>
<td width="638">Sobrecargado. Escribe información sobre el seguimiento en los agentes de escucha de seguimiento de la colección Listeners . </td>
</tr>
<tr>
<td width="91">
<div align="center">WriteLineIf </div>
</td>
<td width="638">Sobrecargado. Escribe información acerca del seguimiento en los agentes de escucha de seguimiento de la colección Listeners si una condición es <strong>true </strong>. </td>
</tr>
</tbody>
</table>
<p>Las clases Debug y Trace son idénticas y exponen los mismos métodos. La única diferencia que existe entre ellas es que las llamadas a los métodos de la clase Debug se incluirán en la aplicación compilada sólo si la constante de compilación Debug se encuentra definida, mientras que las llamadas a los métodos de la clase Trace sólo se incluye si la constante de compilación Trace se encuentra definida. De forma predeterminada, el tipo de configuración Debug define estas dos constantes de compilación, mientras que el tipo de configuración Realease define únicamente la constante Trace. De esta forma, la salida de la clase trace estará incluida en todas las aplicaciones compiladas en el modo Release.</p>
<table border="1" width="536" align="center">
<tbody>
<tr>
<td width="252">
<div align="center">
<h3><strong>Trace (Clase)</strong></h3>
</p></div>
</td>
<td width="268">
<div align="center">
<h3><strong>Debug (Clase) </strong></h3>
</p></div>
</td>
</tr>
<tr>
<td>
<p><font color="#0000ff">Sub </font>MiProc()</p>
<p>Trace.WriteLine(&quot;Escritura de MiProc&quot;) </p>
<p>Trace.Indent()</p>
<p>Trace.WriteLine(&quot;Dentro de MiProc&quot;)</p>
<p>Trace.Unindente()</p>
<p>Trace.WriteLine(&quot;Salir de MiProc&quot;) </p>
<p><font color="#0000ff">End Sub</font> </p>
</td>
<td>
<p><font color="#0000ff">Sub </font>MiProc()</p>
<p>Debug.WriteLine(&quot;Escritura de MiProc&quot;)</p>
<p>Debug.Indent()</p>
<p>Debug.WriteLine(&quot;Dentro de MiProc&quot;)</p>
<p>Debug.Unindente()</p>
<p>Debug.WriteLine(&quot;Salir de MiProc&quot;) </p>
<p><font color="#0000ff">End Sub</font> </p>
</td>
</tr>
</tbody>
</table>
<p>&#160;</p>
<table border="1" width="715" align="center">
<tbody>
<tr>
<td colspan="2">
<div align="center">
<p>switchs Proporciona una clase base abstracta (<strong>MustInherit </strong>en Visual Basic) para crear nuevos modificadores de depuración y seguimiento. Existen dos tipos de <em>switchs </em>predefinidos: </p>
</p></div>
</td>
</tr>
<tr>
<td width="366">
<div align="center"><strong>TraceSwitch (Clase) </strong></div>
</td>
<td width="333">
<div align="center"><strong>BooleanSwitch (Clase) </strong></div>
</td>
</tr>
<tr>
<td>Proporciona un modificador de varios niveles para controlar los resultados del seguimiento y la depuración sin volver a compilar el código.</td>
<td>Proporciona un modificador de activación/desactivación sencillo que controla los resultados de la depuración y del seguimiento.</td>
</tr>
</tbody>
</table>
<p>Cuando se establece el nivel de seguimiento con un archivo de configuración, se especifica un valor entero que se corresponda con un miembro de enumeración en lugar del miembro de enumeración en sí, tal y como se muestra en el siguiente ejemplo.</p>
<p>&lt;configuration&gt;    <br />&lt;system.diagnostics&gt;     <br />&lt;switches&gt;     <br />&lt;add name=&quot;<font color="#0000ff">mySwitch</font>&quot; value=&quot;<font color="#0000ff">4</font>&quot; /&gt;     <br />&lt;/switches&gt;     <br />&lt;/system.diagnostics&gt;     <br />&lt;/configuration&gt;</p>
<p>En la siguiente tabla se muestra la relación que existe entre los miembros de la enumeración <strong>TraceLevel </strong>y las entradas correspondientes del archivo de configuración. </p>
<table border="1" cellspacing="0" align="center">
<tbody>
<tr>Nivel de seguimiento Valor del archivo de configuración </tr>
<tr>
<td width="50%">Off </td>
<td width="50%">0 </td>
</tr>
<tr>
<td width="50%">Error </td>
<td width="50%">1 </td>
</tr>
<tr>
<td width="50%">Warning </td>
<td width="50%">2 </td>
</tr>
<tr>
<td width="50%">Info </td>
<td width="50%">3 </td>
</tr>
<tr>
<td width="50%">Verbose </td>
<td width="50%">4 </td>
</tr>
</tbody>
</table>
<h4 align="center">Nombre de Miembros </h4>
<table border="1" cellspacing="0" width="623" align="center">
<tbody>
<tr>
<td width="90">
<div align="left"><strong>Error </strong></div>
</td>
<td width="531">
<div align="left">Envía mensajes de control de errores. </div>
</td>
</tr>
<tr>
<td width="90">
<div align="left"><strong>Info </strong></div>
</td>
<td width="531">
<div align="left">Envía mensajes informativos, advertencias y mensajes de control de errores. </div>
</td>
</tr>
<tr>
<td width="90">
<div align="left"><strong>Off </strong></div>
</td>
<td width="531">
<div align="left">No envía ningún mensaje seguimiento ni de depuración. </div>
</td>
</tr>
<tr>
<td width="90">
<div align="left"><strong>Verbose </strong></div>
</td>
<td width="531">
<div align="left">Envía todos los mensajes de seguimiento y depuración. </div>
</td>
</tr>
<tr>
<td width="90">
<div align="left"><strong>Warning </strong></div>
</td>
<td width="531">
<div align="left">Envía advertencias y mensajes de control de errores. </div>
</td>
</tr>
</tbody>
</table>
<p>&#160;</p>
<table border="1" width="715" align="center">
<tbody>
<tr>
<td width="373">
<div align="center"><strong>TraceSwitch (Clase) </strong></div>
</td>
<td width="326">
<div align="center"><strong>BooleanSwitch (Clase) </strong></div>
</td>
</tr>
<tr>
<td><font color="#0000ff">Private Shared</font> myTraceSwitch <font color="#0000ff">As New</font> TraceSwitch(&quot;MySwitch&quot;, &quot;Description&quot;)           <br />myTraceSwitch<strong>.<em>Level</em></strong> = <strong><em>TraceLevel</em>.Info</strong>           <br /><em>Trace.WriteLineIf</em>(myTraceSwitch.TraceError, &quot;It displayed because it lower then info&quot;)</td>
<td><font color="#0000ff">Dim</font> dataSwitch <font color="#0000ff">As New</font> BooleanSwitch(&quot;Data&quot;, &quot;ModulodeNivel Establecido!&quot;)           <br /><font color="#0000ff">If</font> dataSwitch.Enabled <font color="#0000ff">Then</font>           <br />MsgBox(&quot;Si esta Habilitado el Nivel Data&quot;)           <br /><font color="#0000ff">Else</font>           <br />MsgBox(&quot;No esta Habilitado el Nivel Data&quot;)           <br /><font color="#0000ff">End If</font></td>
</tr>
</tbody>
</table>
<p>&#160;</p>
<p><strong>Código Fuente</strong> :<a href="http://cid-180d91520e7e6619.office.live.com/self.aspx/P%c3%bablico/TestDebugTrace.zip" target="_blank">TestDebugTrace (Visual Basic 2010)</a></p>
<p><strong>Conclusión: </strong>Estas clases son de gran utilidad al momento de hacer seguimiento en aquellas aplicaciones compilidas que ya han sido instaladas en el sitio de destino del cliente. Cuya finalidad es ayudar a Descubrir Posible comportamiento inesperado que no se habían presentado durante la fase de Desarrollo de la Aplicación.</p>
<h3>Fuentes: </h3>
<ul>
<li><a href="http://msdn.microsoft.com/en-us/library/system.diagnostics.trace.aspx" target="_blank">Trace Class</a> </li>
<li><a href="http://msdn.microsoft.com/en-us/library/system.diagnostics.debug.aspx" target="_blank">Debug Class</a> </li>
<li><a href="http://msdn.microsoft.com/en-us/library/system.diagnostics.traceswitch.aspx" target="_blank">TraceSwitch Class</a> </li>
<li><a href="http://msdn.microsoft.com/en-us/library/system.diagnostics.booleanswitch.aspx" target="_blank">BooleanSwith Class</a> </li>
<li><a href="http://msdn.microsoft.com/en-us/library/system.diagnostics.tracesource.aspx" target="_blank">TraceSource Class</a> </li>
</ul>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jorgepedraza.wordpress.com/917/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jorgepedraza.wordpress.com/917/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jorgepedraza.wordpress.com/917/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jorgepedraza.wordpress.com/917/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/jorgepedraza.wordpress.com/917/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/jorgepedraza.wordpress.com/917/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/jorgepedraza.wordpress.com/917/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/jorgepedraza.wordpress.com/917/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jorgepedraza.wordpress.com/917/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jorgepedraza.wordpress.com/917/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jorgepedraza.wordpress.com/917/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jorgepedraza.wordpress.com/917/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jorgepedraza.wordpress.com/917/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jorgepedraza.wordpress.com/917/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jorgepedraza.wordpress.com&amp;blog=6317667&amp;post=917&amp;subd=jorgepedraza&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://jorgepedraza.wordpress.com/2011/02/04/debug-y-trace/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/fd1a8a01c04bb6ff99fb99673ebfcaac?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jorgepedraza</media:title>
		</media:content>
	</item>
		<item>
		<title>Funcion Cifrado .NET</title>
		<link>http://jorgepedraza.wordpress.com/2011/01/29/funcion-cifrado-net/</link>
		<comments>http://jorgepedraza.wordpress.com/2011/01/29/funcion-cifrado-net/#comments</comments>
		<pubDate>Sat, 29 Jan 2011 15:20:54 +0000</pubDate>
		<dc:creator>JorgePedraza</dc:creator>
				<category><![CDATA[Seguridad]]></category>
		<category><![CDATA[Cifrado]]></category>
		<category><![CDATA[Cryptography]]></category>
		<category><![CDATA[Desencriptar]]></category>
		<category><![CDATA[Encriptar]]></category>
		<category><![CDATA[Security]]></category>

		<guid isPermaLink="false">https://jorgepedraza.wordpress.com/2011/01/29/funcion-cifrado-net/</guid>
		<description><![CDATA[FUNCIÓN CIFRADO .NET El Presente articulo explica como crear y utilizar una función genérica dentro de la Plataforma .NET para encriptar y desencriptar datos, en general cadena de caracteres; utilizando un algoritmo genérico que hace uso de los diferentes estándares de servicio de cifrado que proporciona el .NET Framework. DES (Digital Encryption Standard) Triple Des [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jorgepedraza.wordpress.com&amp;blog=6317667&amp;post=915&amp;subd=jorgepedraza&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p align="center"><strong>FUNCIÓN CIFRADO .NET</strong></p>
<p>El Presente articulo explica como crear y utilizar una función genérica dentro de la Plataforma .NET para encriptar y desencriptar datos, en general cadena de caracteres; utilizando un algoritmo genérico que hace uso de los diferentes estándares de servicio de cifrado que proporciona el .NET Framework.</p>
<ul>
<li>DES (Digital Encryption Standard)</li>
<li>Triple Des</li>
<li>Rijndael</li>
<li>RC2</li>
</ul>
<p><strong>Indice:</strong></p>
<ul>
<li><a href="#Requerimientos">Requerimientos</a></li>
<li><a href="#Introduccion">Introducción</a></li>
<li><a href="#Objetivo">Objetivo General</a></li>
<li><a href="#Especificacion">Especificación del Algoritmo</a></li>
<li><a href="#Demostracion">Demostración del Código</a></li>
<li><a href="#Codigo">Código Fuente</a></li>
<li><a href="#Conclusion">Conclusión</a></li>
<li><a href="#Fuentes">Fuentes</a></li>
</ul>
<p><strong>Requerimientos:<a name="Requerimientos"></a></strong></p>
<ul>
<li>Sistema Operativo Windows XP o Superior</li>
<li>Sistema de Desarrollo Microsoft Visual Studio 2010</li>
</ul>
<p>La Función descrita en este articulo, solo se requiere que tenga conocimiento de la herramienta de desarrollo Microsoft Visual Basic 2010</p>
<p><strong>Introducción<a name="Introduccion"></a></strong>:</p>
<p>La criptografía impide la visión o modificación de los datos, y ofrece canales de comunicación seguros que de lo contrario resultarían inseguros. Por ejemplo, los datos pueden cifrarse usando un algoritmo criptográfico estandar, durante la transmisión de información en la red. Sí un tercero intercepta los datos cifrados, le resultará difícil descifrarlos.</p>
<table width="596" border="1">
<tbody>
<tr>
<td width="176">
<div align="center">Primitiva criptográfica</div>
</td>
<td width="418">
<div align="center">Uso</div>
</td>
</tr>
<tr>
<td width="176">Cifrado de clave secreta (criptografía simétrica)</td>
<td width="418">Realiza la transformación de los datos, impidiendo que terceros los lean. Este tipo de cifrado utiliza una clave secreta compartida para cifrar y descifrar los datos.</td>
</tr>
<tr>
<td width="176">Cifrado de clave pública (criptografía asimétrica)</td>
<td width="418">Realiza la transformación de los datos, impidiendo que terceros los lean. Este tipo de cifrado utiliza un par de claves pública y privada para cifrar y descifrar los datos.</td>
</tr>
<tr>
<td width="176">Firmas criptográficas</td>
<td width="418">Garantiza que los datos se originen en una parte específica mediante la creación de una firma digital única para esa parte. En este proceso también se usan funciones hash.</td>
</tr>
<tr>
<td width="176">Valores hash criptográficos</td>
<td width="418">Asigna datos de cualquier longitud a una secuencia de bytes de longitud fija. Los valores hash son únicos estadísticamente; el valor hash de una secuencia de dos bytes distinta no será el mismo.</td>
</tr>
</tbody>
</table>
<p>Para el caso del algoritmo de nuestra Función <strong>Cifrado.NET</strong>, se utilizo la modalidad <strong><em>Cifrado de clave secreta (criptografía simétrica).</em></strong></p>
<p>Los algoritmos de cifrado de clave secreta utilizan una clave secreta única para cifrar y descifrar datos. Debe asegurarse de que agentes no autorizados no obtengan acceso a la clave puesto que podrían utilizarla para descifrar los datos.</p>
<p>Normalmente, los algoritmos de clave secreta, denominados de cifrado de bloques, se utilizan para cifrar un bloque de datos a la vez. Los cifrados de bloques (como <strong>RC2</strong>, <strong>DES</strong>, <strong>TripleDES</strong> y <strong>Rijndael</strong>) transforman criptográficamente un bloque de entrada de n bytes en un bloque de salida de bytes cifrados. Si desea cifrar o descifrar una secuencia de bytes, debe hacerlo bloque a bloque. Como el tamaño de n es pequeño (n = 8 bytes para <span style="color:#0000ff;">RC2</span>, <span style="color:#0000ff;">DES</span> y <span style="color:#0000ff;">TripleDES</span>; n = 16, el valor predeterminado; n = 24; o n = 32 bytes para <span style="color:#0000ff;">Rijndael</span>), los valores mayores que n deben cifrarse en un bloque cada vez.</p>
<p>Las clases de cifrado de bloques que ofrece la biblioteca de clases base utilizan un modo de encadenamiento denominado CBC (<strong>Cipher Block Chaining, encadenamiento de bloques de cifrado</strong>), que utiliza una <strong>clave</strong> y un <strong>IV</strong> (<strong>Initialization Vector, vector de inicialización</strong>) para realizar transformaciones criptográficas en los datos.</p>
<p>.NET Framework proporciona las siguientes clases que implementan algoritmos de cifrado de clave secreta:</p>
<ul>
<li>DESCryptoServiceProvider</li>
<li>RC2CryptoServiceProvider</li>
<li>RijndaelManaged</li>
<li>TripleDESCryptoServiceProvider</li>
</ul>
<p><strong>Objetivo General :<a name="Objetivo"></a></strong></p>
<p>Para que el algoritmo funcione correctamente dentro de la Plataforma .NET; se necesita de lo siguiente: El uso de una <strong>Cadena de Caracteres</strong> de entrada de Datos, <strong>Key</strong> (Clave secreta) y <strong>IV</strong> (Initialization Vector), Cuya longitud debe variar de acuerdo con el servicio de cifrado que haya seleccionado dentro la función; por que de lo contrario se producirá una <strong>excepción</strong>.</p>
<p align="center">Tabla de Longitudes de los Parametros</p>
<table width="598" border="1" align="center">
<tbody>
<tr>
<td width="147">
<div align="center">Clase</div>
</td>
<td width="144">
<div align="center">Soporte de Longitud Key (Clave Secreta)</div>
</td>
<td width="285">
<div align="center">Ejemplo</div>
</td>
</tr>
<tr>
<td>
<p align="center"><strong>DES</strong></p>
</td>
<td>
<p align="center">8 Byte</p>
</td>
<td>
<ul>
<li><span style="color:#0000ff;">Key</span> = &#8220;Password&#8221;</li>
<li><span style="color:#0000ff;">IV</span> = &#8220;Password&#8221;</li>
</ul>
</td>
</tr>
<tr>
<td>
<p align="center"><span style="color:#000000;"><strong>Triple Des</strong></span></p>
</td>
<td>
<p align="center">16 o 24 Byte</p>
</td>
<td>
<ul>
<li><span style="color:#0000ff;">Key</span> = &#8220;password12345678&#8243;</li>
<li><span style="color:#0000ff;">IV</span> = &#8220;password12345678&#8243;</li>
</ul>
</td>
</tr>
<tr>
<td>
<p align="center"><strong>Rijndael</strong></p>
</td>
<td>
<p align="center">16 Byte</p>
</td>
<td>
<ul>
<li><span style="color:#0000ff;">Key</span> = &#8220;1234567891234567&#8243;</li>
<li><span style="color:#0000ff;">IV</span> = &#8220;1234567891234567&#8243;</li>
</ul>
</td>
</tr>
<tr>
<td>
<p align="center"><strong>RC2</strong></p>
</td>
<td>
<p align="center">16 Byte</p>
</td>
<td>
<ul>
<li><span style="color:#0000ff;">Key</span> = &#8220;1234567891234567&#8243;</li>
<li><span style="color:#0000ff;">IV</span> = &#8220;1234567891234567&#8243;</li>
</ul>
</td>
</tr>
</tbody>
</table>
<p align="left"><strong>Especificación del Algoritmo</strong>:<a name="Especificacion"></a></p>
<p align="left">Para efecto de nuestro algoritmo; se debe utilizar las siguientes clase del Framework:</p>
<ul>
<li><strong>System.Security.Cryptography</strong> (El espacio de nombres <strong>System.Security.Cryptography </strong>proporciona servicios de cifrado, entre los que se incluyen la codificación y descodificación segura de los datos y otras muchas operaciones como, por ejemplo, la técnica de dispersión o hashing, la generación de números aleatorios y la autenticación de mensajes).</li>
<li><strong>System.Text</strong> (El espacio de nombres System.Text contiene clases que representan codificaciones de caracteres ASCII, Unicode, UTF-7, y UTF-8; clases base abstractas para la conversión de bloques de caracteres en bloques de bytes y viceversa; y una clase auxiliar que manipula y da formato a objetos String sin necesidad de crear instancias intermedias de String).</li>
<li><strong>System.IO</strong> (El espacio de nombres System.IO contiene tipos que permiten leer y escribir en los archivos y secuencias de datos, así como tipos que proporcionan compatibilidad básica con los archivos y directorios. )</li>
</ul>
<table width="560" border="1" align="center">
<tbody>
<tr>
<td width="204">
<div align="center">Clase</div>
</td>
<td width="340">
<div align="center">Descripción</div>
</td>
</tr>
<tr>
<td><strong>System.Security.Cryptography</strong></td>
<td>
<ul>
<li><strong>ICryptoTransform:</strong> Define las operaciones básicas de las transformaciones criptográficas.</li>
<li><strong>CryptoStream</strong>: Especifica el modo de una secuencia criptográfica</li>
</ul>
</td>
</tr>
<tr>
<td><strong>System.Text</strong></td>
<td>
<ul>
<li><strong>Encoding:</strong>Representa una codificación de carácter.</li>
</ul>
</td>
</tr>
<tr>
<td><strong>System.IO</strong></td>
<td>
<ul>
<li><strong>MemoryStream:</strong>Crea una secuencia cuyo almacén de respaldo es la memoria.</li>
</ul>
</td>
</tr>
</tbody>
</table>
<p><strong>Demostración del Código<a name="Demostracion"></a>: </strong></p>
<p>Breve configuración de la función Cifrado:</p>
<ul>
<li><span style="color:#0000ff;">Modo</span>:
<ul>
<li>1 es Encriptar;</li>
<li>2 es Desencriptar</li>
</ul>
</li>
<li><span style="color:#0000ff;">Algoritmo</span>:
<ul>
<li>1 es DES</li>
<li>2 es TripleDES</li>
<li>3 es RC2</li>
<li>4 es Rijndael</li>
</ul>
</li>
<li><span style="color:#0000ff;">Cadena</span>: Es la Cadena de Caracter a Cifrar.</li>
<li><span style="color:#0000ff;">Key</span>: Clave Secreta</li>
<li><span style="color:#0000ff;">VecI</span>: Vector de Inicialización</li>
</ul>
<hr />
<p><span style="color:#0000ff;">Imports</span> System.Security.Cryptography</p>
<p><span style="color:#0000ff;">Imports</span> System.Text</p>
<p><span style="color:#0000ff;">imports</span> System.IO</p>
<p><span style="color:#0000ff;">Module</span> Module1</p>
<p><span style="color:#0000ff;">Public Function</span> Cifrado(<span style="color:#0000ff;">ByVal</span> modo <span style="color:#0000ff;">As Byte</span>, ByVal Algoritmo <span style="color:#0000ff;">As Byte</span>, <span style="color:#0000ff;">ByVal</span> cadena <span style="color:#0000ff;">As String</span>, <span style="color:#0000ff;">ByVal</span> key <span style="color:#0000ff;">As String</span>, <span style="color:#0000ff;">ByVal</span> VecI <span style="color:#0000ff;">As String</span>) <span style="color:#0000ff;">As String</span></p>
<p><span style="color:#0000ff;">Dim</span> plaintext() <span style="color:#0000ff;">As Byte</span></p>
<p><span style="color:#0000ff;">If</span> modo = 1 <span style="color:#0000ff;">Then</span></p>
<p>plaintext = Encoding.ASCII.GetBytes(cadena)</p>
<p><span style="color:#0000ff;">ElseIf</span> modo = 2 <span style="color:#0000ff;">Then</span></p>
<p>plaintext = Convert.FromBase64String(cadena)</p>
<p><span style="color:#0000ff;">End If</span></p>
<p><span style="color:#0000ff;">Dim</span> keys() <span style="color:#0000ff;">As Byte</span> = Encoding.ASCII.GetBytes(key)</p>
<p><span style="color:#0000ff;">Dim</span> memdata <span style="color:#0000ff;">As New</span> MemoryStream</p>
<p><span style="color:#0000ff;">Dim</span> transforma <span style="color:#0000ff;">As</span> ICryptoTransform</p>
<p><span style="color:#0000ff;">Select Case</span> Algoritmo</p>
<p><span style="color:#0000ff;">Case</span> 1</p>
<p>Dim des As New DESCryptoServiceProvider <span style="color:#ff0000;">&#8216; DES</span></p>
<p>des.Mode = CipherMode.CBC</p>
<p>If modo = 1 Then</p>
<p>transforma = des.CreateEncryptor(keys, Encoding.ASCII.GetBytes(VecI))</p>
<p>ElseIf modo = 2 Then</p>
<p>transforma = des.CreateDecryptor(keys, Encoding.ASCII.GetBytes(VecI))</p>
<p>End If</p>
<p><span style="color:#0000ff;">Case</span> 2</p>
<p>Dim des3 As New TripleDESCryptoServiceProvider <span style="color:#ff0000;">&#8216;TripleDES</span></p>
<p>des3.Mode = CipherMode.CBC</p>
<p>If modo = 1 Then</p>
<p>transforma = des3.CreateEncryptor(keys, Encoding.ASCII.GetBytes(VecI))</p>
<p>ElseIf modo = 2 Then</p>
<p>transforma = des3.CreateDecryptor(keys, Encoding.ASCII.GetBytes(VecI))</p>
<p>End If</p>
<p><span style="color:#0000ff;">Case</span> 3</p>
<p>Dim rc2 As New RC2CryptoServiceProvider <span style="color:#ff0000;">&#8216;RC2</span></p>
<p>rc2.Mode = CipherMode.CBC</p>
<p>If modo = 1 Then</p>
<p>transforma = rc2.CreateEncryptor(keys, Encoding.ASCII.GetBytes(VecI))</p>
<p>ElseIf modo = 2 Then</p>
<p>transforma = rc2.CreateDecryptor(keys, Encoding.ASCII.GetBytes(VecI))</p>
<p>End If</p>
<p><span style="color:#0000ff;">Case</span> 4</p>
<p>Dim rj As New RijndaelManaged <span style="color:#ff0000;">&#8216;Rijndael</span></p>
<p>rj.Mode = CipherMode.CBC</p>
<p>If modo = 1 Then</p>
<p>transforma = rj.CreateEncryptor(keys, Encoding.ASCII.GetBytes(VecI))</p>
<p>ElseIf modo = 2 Then</p>
<p>transforma = rj.CreateDecryptor(keys, Encoding.ASCII.GetBytes(VecI))</p>
<p>End If</p>
<p><span style="color:#0000ff;">End Select</span></p>
<p><span style="color:#0000ff;">Dim</span> encstream <span style="color:#0000ff;">As New</span> CryptoStream(memdata, transforma, CryptoStreamMode.Write)</p>
<p>encstream.Write(plaintext, 0, plaintext.Length)</p>
<p>encstream.FlushFinalBlock()</p>
<p>encstream.Close()</p>
<p><span style="color:#0000ff;">If</span> modo = 1 <span style="color:#0000ff;">Then</span></p>
<p>cadena = Convert.ToBase64String(memdata.ToArray)</p>
<p><span style="color:#0000ff;">ElseIf</span> modo = 2 <span style="color:#0000ff;">Then</span></p>
<p>cadena = Encoding.ASCII.GetString(memdata.ToArray)</p>
<p><span style="color:#0000ff;">End If</span></p>
<p><span style="color:#0000ff;">Return</span> cadena <span style="color:#ff0000;">&#8216;Aquí Devuelve los Datos Cifrados</span></p>
<p><span style="color:#0000ff;">End Function</span></p>
<p><span style="color:#0000ff;">End Module</span></p>
<hr />
<p><img style="background-image:none;padding-left:0;padding-right:0;display:block;float:none;margin-left:auto;margin-right:auto;padding-top:0;border-width:0;" title="screenshotCDCS" src="http://jorgepedraza.files.wordpress.com/2011/01/screenshotcdcs.jpg?w=456&#038;h=292" alt="screenshotCDCS" width="456" height="292" border="0" /></p>
<p>Cadena1 = Cifrado(<strong>1</strong>,1,&#8221;Usuario Demo&#8221;,&#8221;eeaataxz&#8221;,&#8221;eeaataxz&#8221;) &#8211;&gt; Aquí se Encripta <!-- --></p>
<p>Cadena2 = Cifrado(<strong>2</strong>,1,Cadena1,&#8221;eeaataxz&#8221;,eeaataxz&#8221;) &#8211;&gt; Aquí se Desencripta</p>
<p>Cadena1 = &#8220;mR6A9ViW8f5BHtJgNEK78w==&#8221;</p>
<p>Cadena2 = &#8220;Usuario Demo&#8221;</p>
<hr />
<p><strong>Código Fuente<a name="Codigo"></a>: </strong><a href="http://cid-180d91520e7e6619.office.live.com/self.aspx/P%c3%bablico/Cifrado-NET.zip" target="_blank">Cifrado-NET</a></p>
<p><strong>Conclusión<a name="Conclusion"></a>:</strong> Con esta función se pretende obtener una mayor ventaja de las herramientas que proporciona el .NET framework, de una forma rápida y segura para aquellos que desean cifrar información con tan solo invocar una instrucción previamente configurada.</p>
<p><strong>Fuentes<a name="Fuentes"></a>:</strong></p>
<ul>
<li><a href="http://msdn.microsoft.com/en-us/library/ff649100.aspx" target="_blank">Building Secure Microsoft ASP.NET Applications</a></li>
<li><a href="http://msdn.microsoft.com/en-us/library/system.security.cryptography.aspx" target="_blank">System.Security.Cryptography</a></li>
</ul>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jorgepedraza.wordpress.com/915/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jorgepedraza.wordpress.com/915/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jorgepedraza.wordpress.com/915/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jorgepedraza.wordpress.com/915/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/jorgepedraza.wordpress.com/915/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/jorgepedraza.wordpress.com/915/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/jorgepedraza.wordpress.com/915/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/jorgepedraza.wordpress.com/915/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jorgepedraza.wordpress.com/915/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jorgepedraza.wordpress.com/915/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jorgepedraza.wordpress.com/915/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jorgepedraza.wordpress.com/915/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jorgepedraza.wordpress.com/915/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jorgepedraza.wordpress.com/915/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jorgepedraza.wordpress.com&amp;blog=6317667&amp;post=915&amp;subd=jorgepedraza&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://jorgepedraza.wordpress.com/2011/01/29/funcion-cifrado-net/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/fd1a8a01c04bb6ff99fb99673ebfcaac?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jorgepedraza</media:title>
		</media:content>

		<media:content url="http://jorgepedraza.files.wordpress.com/2011/01/screenshotcdcs.jpg" medium="image">
			<media:title type="html">screenshotCDCS</media:title>
		</media:content>
	</item>
		<item>
		<title>Los números de 2010</title>
		<link>http://jorgepedraza.wordpress.com/2011/01/02/los-numeros-de-2010/</link>
		<comments>http://jorgepedraza.wordpress.com/2011/01/02/los-numeros-de-2010/#comments</comments>
		<pubDate>Sun, 02 Jan 2011 12:02:32 +0000</pubDate>
		<dc:creator>JorgePedraza</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://jorgepedraza.wordpress.com/?p=912</guid>
		<description><![CDATA[Los duendes de estadísticas de WordPress.com han analizado el desempeño de este blog en 2010 y te presentan un resumen de alto nivel de la salud de tu blog: El Blog-Health-o-Meter™ indica: Wow. Números crujientes Alrededor de 3 millones de personas visitan el Taj Mahal cada año. Este blog fue visto cerca de 27,000 veces [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jorgepedraza.wordpress.com&amp;blog=6317667&amp;post=912&amp;subd=jorgepedraza&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Los duendes de estadísticas de WordPress.com han analizado el desempeño de este blog en 2010 y te presentan un resumen de alto nivel de la salud de tu blog:</p>
<p><img style="border:1px solid #ddd;background:#f5f5f5;padding:20px;" src="http://s0.wp.com/i/annual-recap/meter-healthy5.gif" alt="Healthy blog!" width="250" height="183" /></p>
<p>El <em>Blog-Health-o-Meter™</em> indica: Wow.</p>
<h2>Números crujientes</h2>
<p><a href="http://jorgepedraza.files.wordpress.com/2009/07/listose.jpg"><img style="max-height:230px;float:right;border:1px solid #ddd;background:#fff;margin:0 0 1em 1em;padding:6px;" src="http://jorgepedraza.files.wordpress.com/2009/07/listose.jpg?w=288" alt="Imagen destacada" /></a></p>
<p>Alrededor de 3 millones de personas visitan el Taj Mahal cada año. Este blog fue visto cerca de <strong>27,000</strong> veces en 2010. Si el blog fuera el Taj Mahal, se necesitarían alrededor de 3 días para visitarlo.</p>
<p>En 2010, publicaste <strong>13</strong> entradas nueva, haciendo crecer el arquivo para 25 entradas. Subiste <strong>244</strong> imágenes, ocupando un total de 2mb. Eso son alrededor de 5 imágenes por semana.</p>
<p>Tu día más ocupado del año fue el 4 de febrero con <strong>402</strong> visitas. La entrada más popular de ese día fue <a style="color:#08c;" href="http://jorgepedraza.wordpress.com/2010/01/06/servicios-web/">Servicios Web</a>.</p>
<h2>¿De dónde vienen?</h2>
<p>Los sitios de referencia más populares en 2010 fueran <strong>social.msdn.microsoft.com</strong>, <strong>facebook.com</strong>, <strong>mail.live.com</strong>, <strong>blogs.msdn.com</strong> y <strong>google.es</strong>.</p>
<p>Algunos visitantes buscan tu blog, sobre todo por <strong>aplicaciones windows mobile 6.5</strong>, <strong>windows mobile 6.5 aplicaciones</strong>, <strong>aplicaciones para windows mobile 6.5</strong>, <strong>plantillas</strong> y <strong>windows mobile 6.5 professional</strong>.</p>
<div style="clear:both;"></div>
<h2>Lugares de interés en 2010</h2>
<p>Estas son las entradas y páginas con más visitas en 2010.</p>
<div style="clear:left;float:left;font-size:24pt;line-height:1em;margin:-5px 10px 20px 0;">1</div>
<p><a style="margin-right:10px;" href="http://jorgepedraza.wordpress.com/2010/01/06/servicios-web/">Servicios Web</a> <span style="color:#999;font-size:8pt;">enero, 2010</span><br />
3 comentários</p>
<div style="clear:left;float:left;font-size:24pt;line-height:1em;margin:-5px 10px 20px 0;">2</div>
<p><a style="margin-right:10px;" href="http://jorgepedraza.wordpress.com/2009/07/07/windows-mobile-6-5-%e2%80%93-aplicaciones-moviles-de-proxima-generacion/">Windows Mobile 6.5 – Aplicaciones móviles de próxima generación</a> <span style="color:#999;font-size:8pt;">julio, 2009</span><br />
8 comentários</p>
<div style="clear:left;float:left;font-size:24pt;line-height:1em;margin:-5px 10px 20px 0;">3</div>
<p><a style="margin-right:10px;" href="http://jorgepedraza.wordpress.com/2009/07/20/convertir-pagina-html-a-asp-net/">Convertir pagina HTML a ASP.NET</a> <span style="color:#999;font-size:8pt;">julio, 2009</span><br />
7 comentários</p>
<div style="clear:left;float:left;font-size:24pt;line-height:1em;margin:-5px 10px 20px 0;">4</div>
<p><a style="margin-right:10px;" href="http://jorgepedraza.wordpress.com/2010/01/19/exportar-datatable-a-excel-desde-asp-net/">Exportar DataTable a Excel desde ASP.NET</a> <span style="color:#999;font-size:8pt;">enero, 2010</span><br />
4 comentários</p>
<div style="clear:left;float:left;font-size:24pt;line-height:1em;margin:-5px 10px 20px 0;">5</div>
<p><a style="margin-right:10px;" href="http://jorgepedraza.wordpress.com/2010/01/08/implementacion-de-aplicaciones-web-con-visual-studio-2010/">Implementación de Aplicaciones Web con Visual Studio 2010</a> <span style="color:#999;font-size:8pt;">enero, 2010</span></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jorgepedraza.wordpress.com/912/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jorgepedraza.wordpress.com/912/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jorgepedraza.wordpress.com/912/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jorgepedraza.wordpress.com/912/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/jorgepedraza.wordpress.com/912/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/jorgepedraza.wordpress.com/912/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/jorgepedraza.wordpress.com/912/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/jorgepedraza.wordpress.com/912/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jorgepedraza.wordpress.com/912/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jorgepedraza.wordpress.com/912/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jorgepedraza.wordpress.com/912/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jorgepedraza.wordpress.com/912/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jorgepedraza.wordpress.com/912/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jorgepedraza.wordpress.com/912/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jorgepedraza.wordpress.com&amp;blog=6317667&amp;post=912&amp;subd=jorgepedraza&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://jorgepedraza.wordpress.com/2011/01/02/los-numeros-de-2010/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/fd1a8a01c04bb6ff99fb99673ebfcaac?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jorgepedraza</media:title>
		</media:content>

		<media:content url="http://s0.wp.com/i/annual-recap/meter-healthy5.gif" medium="image">
			<media:title type="html">Healthy blog!</media:title>
		</media:content>

		<media:content url="http://jorgepedraza.files.wordpress.com/2009/07/listose.jpg?w=288" medium="image">
			<media:title type="html">Imagen destacada</media:title>
		</media:content>
	</item>
	</channel>
</rss>
