<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://geeks.ms/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"><channel><title>Geeks•ms</title><link>http://geeks.ms/blogs/</link><description>Todo lo que los geeks de Windows y .Net tienen que contar</description><dc:language>en-US</dc:language><generator>CommunityServer 2008.5 SP1 (Build: 31106.3070)</generator><item><title>Características en Windows Server 2008 R2</title><link>http://geeks.ms/blogs/juansa/archive/2010/02/09/caracter-237-sticas-en-windows-server-2008-r2.aspx</link><pubDate>Tue, 09 Feb 2010 12:59:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:167017</guid><dc:creator>Juansa</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Windows 2008 R2 proporciona un conjunto de funciones a&amp;ntilde;adidas para el servidor llamadas caracter&amp;iacute;sticas. Estas formaban parte de Windows 2008 con algunas nuevas en R2. De estas caracter&amp;iacute;sticas se extraen las que son obligatorias para que ciertos roles funcionen, de las que a&amp;ntilde;aden fiabilidad al servidor, como el clustering por ejemplo. Algunos s&amp;oacute;lo a&amp;ntilde;aden est&amp;eacute;tica, como Experiencia de Escritorio. Cuando planeamos nuestro servidor puede que necesitemos instalar algunas de ellas para lograr la configuraci&amp;oacute;n querida. En muchos casos no necesitaremos instalar caracter&amp;iacute;sticas necesarias a un role. Las que son obligatorias normalmente se instalar&amp;aacute;n al instalar el propio role.&lt;/p&gt;
&lt;p&gt;Para instalar una caracter&amp;iacute;stica abrimos el Administrador del Servidor, y elegimos Caracter&amp;iacute;sticas.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/juansa.metablogapi/2110.featuresR2_5F00_7F66B892.jpg"&gt;&lt;img height="299" width="398" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/juansa.metablogapi/1524.featuresR2_5F00_thumb_5F00_676568DB.jpg" alt="featuresR2" border="0" title="featuresR2" style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Pulsando en el enlace Agregar caracter&amp;iacute;sticas obtendremos acceso al asistente:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/juansa.metablogapi/4744.addfeaturesR201_5F00_4EFA76E0.jpg"&gt;&lt;img height="181" width="244" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/juansa.metablogapi/5153.addfeaturesR201_5F00_thumb_5F00_09780766.jpg" alt="addfeaturesR201" border="0" title="addfeaturesR201" style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" /&gt;&lt;/a&gt; &lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/juansa.metablogapi/5658.addfeaturesR202_5F00_5B8D455E.jpg"&gt;&lt;img height="181" width="244" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/juansa.metablogapi/5734.addfeaturesR202_5F00_thumb_5F00_4802766E.jpg" alt="addfeaturesR202" border="0" title="addfeaturesR202" style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" /&gt;&lt;/a&gt; &lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/juansa.metablogapi/0550.addfeaturesR203_5F00_25413EB1.jpg"&gt;&lt;img height="181" width="244" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/juansa.metablogapi/6811.addfeaturesR203_5F00_thumb_5F00_3FA3C279.jpg" alt="addfeaturesR203" border="0" title="addfeaturesR203" style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;em&gt;Tabla de caracter&amp;iacute;sticas:&lt;/em&gt;&lt;/p&gt;
&lt;table width="790" cellpadding="2" cellspacing="2" border="0"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td width="369" valign="top"&gt;
&lt;p align="center"&gt;Caracter&amp;iacute;stica&lt;/p&gt;
&lt;/td&gt;
&lt;td width="413" valign="top"&gt;
&lt;p align="center"&gt;Descripci&amp;oacute;n&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="369" valign="top"&gt;Administraci&amp;oacute;n de directivas de grupo &lt;br /&gt;(Group Policy Management)&lt;/td&gt;
&lt;td width="413" valign="top"&gt;Instala el complemento MMC para administrar los objetos GP(GPO).&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="369" valign="top"&gt;Administrador de almacenamiento para redes SAN &lt;br /&gt;(Storage Manager for Storage Area Networks)&lt;/td&gt;
&lt;td width="413" valign="top"&gt;Juego de herramientas para administraci&amp;oacute;n central de SANS sobre fibra o iSCSI.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="369" valign="top"&gt;Administrador de recursos del sistema de Windows &lt;br /&gt;(Windows System Resource Manager)&lt;/td&gt;
&lt;td width="413" valign="top"&gt;Proporciona control de administrador sobre c&amp;oacute;mo se asignan los recursos de CPU y memoria y ayuda a proporcionar fiabilidad a las aplicaciones.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="369" valign="top"&gt;Asistencia Remota &lt;br /&gt;(Remote Assitance)&lt;/td&gt;
&lt;td width="413" valign="top"&gt;Nos permite ver y compartir el control del escritorio de un usuario que necesita ayuda.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="369" valign="top"&gt;BranchCache&lt;/td&gt;
&lt;td width="413" valign="top"&gt;Ayuda a reducir el consumo de banda ancha de clientes ubicados en escenarios de sucursales de oficinas. Los clientes han de ser 2008 R2 o Windows 7.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="369" valign="top"&gt;.Net Framework 3.5.1&lt;/td&gt;
&lt;td width="413" valign="top"&gt;Proporciona las API necesarias para que trabajen las aplicaciones.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="369" valign="top"&gt;Copias de seguridad de Windows Server &lt;br /&gt;(Windows Server Backup Features)&lt;/td&gt;
&lt;td width="413" valign="top"&gt;Herramientas de copia de seguridad y restauraci&amp;oacute;n de R2, para el sistema, aplicaciones y datos.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="369" valign="top"&gt;Cifrado de unidad bitlocker &lt;br /&gt;(Bitlocker Drive Encryption)&lt;/td&gt;
&lt;td width="413" valign="top"&gt;Cifrado de unidad en cado de perdida o robo.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="369" valign="top"&gt;Cliente de impresi&amp;oacute;n en Internet &lt;br /&gt;(Internet Printing Client)&lt;/td&gt;
&lt;td width="413" valign="top"&gt;Protocolos necesarios para impresi&amp;oacute;n en la red o internet.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="369" valign="top"&gt;Cliente Telnet &lt;br /&gt;(Telnet Client)&lt;/td&gt;
&lt;td width="413" valign="top"&gt;Conexiones Telnet a Servidores.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="369" valign="top"&gt;Cliente TFTP &lt;br /&gt;(TFTP Client)&lt;/td&gt;
&lt;td width="413" valign="top"&gt;Escritura/Lectura hacia un servidor TFTP remoto.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="369" valign="top"&gt;Compresion diferencial remota &lt;br /&gt;(Remote Differential Compression)&lt;/td&gt;
&lt;td width="413" valign="top"&gt;Permite el c&amp;aacute;lculo para reducir el ancho de banda necesario a utilizar para transferencia entre dos recursos de red.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="369" valign="top"&gt;Consola de administraci&amp;oacute;n de Direct Access &lt;br /&gt;(Direct Access Management Console)&lt;/td&gt;
&lt;td width="413" valign="top"&gt;Consola MMC usada para administrar y configurar acceso directo a clientes Windows 7 y 2008 R2.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="369" valign="top"&gt;E/S de m&amp;uacute;ltiples rutas &lt;br /&gt;(Multipath I/O)&lt;/td&gt;
&lt;td width="413" valign="top"&gt;Junto con DSM(M&amp;oacute;dulo espec&amp;iacute;fico de dispositivo) proporciona compatibilidad con el uso de varias rutas de acceso a datos a dispositivos de almacenamiento.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="369" valign="top"&gt;Equilibrio de carga de red &lt;br /&gt;(Network Load Balancing)&lt;/td&gt;
&lt;td width="413" valign="top"&gt;Compatibilidad para TCP/IP para distribuir el tr&amp;aacute;fico de red mediante varios servidores.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="369" valign="top"&gt;Experiencia de escritorio &lt;br /&gt;(Desktop Experience)&lt;/td&gt;
&lt;td width="413" valign="top"&gt;Incluye componentes comunes de escritorio, media player, windows aero, etc&amp;hellip; A&amp;uacute;n si las caracter&amp;iacute;sticas han sido instaladas deben habilitarse manualmente.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="369" valign="top"&gt;Extensi&amp;oacute;n IIS de WinRM &lt;br /&gt;(Windows Remote Management IIS Extension)&lt;/td&gt;
&lt;td width="413" valign="top"&gt;Comunicaci&amp;oacute;n segura con sistemas remotos y locales mediante servicios web.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="369" valign="top"&gt;Herramientas administraci&amp;oacute;n remota del servidor &lt;br /&gt;(Remote Server Administration Tools)&lt;/td&gt;
&lt;td width="413" valign="top"&gt;Administraci&amp;oacute;n remota de roles y caracter&amp;iacute;sticas desde nuestro servidor R2.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="369" valign="top"&gt;Herramientas de migraci&amp;oacute;n de Windows Server &lt;br /&gt;(Windows Server Migration Tools)&lt;/td&gt;
&lt;td width="413" valign="top"&gt;Instala los cmdlets de PowerShell para migraci&amp;oacute;n.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="369" valign="top"&gt;Kit de administraci&amp;oacute;n Connection Manager &lt;br /&gt;(Connection Manager Administration Kit)&lt;/td&gt;
&lt;td width="413" valign="top"&gt;Herramienta para creaci&amp;oacute;n de perfiles de Connection Manager para escenarios de VPN.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="369" valign="top"&gt;Marco biom&amp;eacute;trico de Windows &lt;br /&gt;(Windows Biometric Framework)&lt;/td&gt;
&lt;td width="413" valign="top"&gt;Servicios compatibles necesarios para dispositivos lectores de huellas dactilares usados en el inicio de sesi&amp;oacute;n.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="369" valign="top"&gt;Message Queue Server&lt;/td&gt;
&lt;td width="413" valign="top"&gt;Entrega de mensajes garantizada entre aplicaciones.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="369" valign="top"&gt;Monitor de puerto LPR &lt;br /&gt;(LPR Port Monitor)&lt;/td&gt;
&lt;td width="413" valign="top"&gt;Permite la impresi&amp;oacute;n en impresoras compartidas LPD, com&amp;uacute;nmente usado por servicios UNIX.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="369" valign="top"&gt;Protocolo de resoluci&amp;oacute;n de nombres de mismo nivel &lt;br /&gt;(Peer Name Resolution Protocol)&lt;/td&gt;
&lt;td width="413" valign="top"&gt;Permite a las aplicaciones registrar y resolver nombres en el equipo para que otros equipos puedan comunicarse con &amp;eacute;stas.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="369" valign="top"&gt;Proxy RPC sobre HTTP &lt;br /&gt;(RPC over HTTP Proxy)&lt;/td&gt;
&lt;td width="413" valign="top"&gt;Utilizado por aplicaciones con capacidad de reenv&amp;iacute;o de tr&amp;aacute;fico RPC sobre HTTP. El m&amp;aacute;s com&amp;uacute;n es Outlook sobre RPC.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="369" valign="top"&gt;Servicio de transferencia inteligente en segundo plano &lt;br /&gt;(Background Intelligence Transfer Service BITS)&lt;/td&gt;
&lt;td width="413" valign="top"&gt;Servicio de transferencia as&amp;iacute;ncrono de archivos.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="369" valign="top"&gt;Servicio WAS &lt;br /&gt;(Windows Process Activation Service)&lt;/td&gt;
&lt;td width="413" valign="top"&gt;Elimina la dependencia sobre Http para IIS, permitiendo a otras aplicaciones usar protocolos no-http.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="369" valign="top"&gt;Servicio WLAN &lt;br /&gt;(Wireless LAN Service)&lt;/td&gt;
&lt;td width="413" valign="top"&gt;Servicios y configuraciones necesarios, para trabajar adecuadamente en R2, de los adaptadores Wireless.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="369" valign="top"&gt;Servicios de escritura con l&amp;aacute;piz y a mano. &lt;br /&gt;(Ink and Hardwritting Services)&lt;/td&gt;
&lt;td width="413" valign="top"&gt;Compatibilidad para servicios t&amp;iacute;picos de Tablets.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="369" valign="top"&gt;Servicios simples TCP/IP &lt;br /&gt;(Simple TCP/IP Services)&lt;/td&gt;
&lt;td width="413" valign="top"&gt;Proporciona compatibilidad con versiones anteriores y s&amp;oacute;lo ha de instalarse en caso necesario.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="369" valign="top"&gt;Servicios SNMP &lt;br /&gt;(SNMP Services)&lt;/td&gt;
&lt;td width="413" valign="top"&gt;Instala agentes para control de la actividad de red.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="369" valign="top"&gt;Servicio de nombres de almacenamiento de Internet &lt;br /&gt;(Internet Storage Name Server)&lt;/td&gt;
&lt;td width="413" valign="top"&gt;Servicios necesarios para detecci&amp;oacute;n y compatibilidad para redes de &amp;aacute;rea de almacenamiento iSCSI.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="369" valign="top"&gt;Servidor SMTP &lt;br /&gt;(SMTP Server)&lt;/td&gt;
&lt;td width="413" valign="top"&gt;Compatibilidad b&amp;aacute;sica con servicios de transferencia de correo electr&amp;oacute;nico para mensajes y sistemas de correo electr&amp;oacute;nico.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="369" valign="top"&gt;Servidor Telnet &lt;br /&gt;(Telnet Server)&lt;/td&gt;
&lt;td width="413" valign="top"&gt;Proporciona capacidades remotas administrativas de l&amp;iacute;nea de comando para aplicaciones de cliente Telnet.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="369" valign="top"&gt;Servidor WINS &lt;br /&gt;(WINS Server)&lt;/td&gt;
&lt;td width="413" valign="top"&gt;Resoluci&amp;oacute;n de nombres NetBIOS para equipos y grupos de la red, usado como compatibilidad de versiones anteriores.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="369" valign="top"&gt;Subsistema de aplicaciones UNIX &lt;br /&gt;(Subsystem for UNIX-based applications)&lt;/td&gt;
&lt;td width="413" valign="top"&gt;Permite a R2 ejecutar programas basados en UNIX.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="369" valign="top"&gt;Visor de XPS &lt;br /&gt;(XPS Viewer)&lt;/td&gt;
&lt;td width="413" valign="top"&gt;Compatibilidad con documentos XPS:&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="369" valign="top"&gt;Windows Audio Video Experiencie&lt;/td&gt;
&lt;td width="413" valign="top"&gt;Plataforma de red para aplicaciones de transmisi&amp;oacute;n de audio y v&amp;iacute;deo por secuencias en redes dom&amp;eacute;sticas.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="369" valign="top"&gt;Windows Internal Database&lt;/td&gt;
&lt;td width="413" valign="top"&gt;Almacenamiento de datos s&amp;oacute;lo para roles y caracter&amp;iacute;sticas de Windows como AD RMS y WSUS.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="369" valign="top"&gt;Windows PowerShell Integrated Scripting Environment&lt;/td&gt;
&lt;td width="413" valign="top"&gt;GUI que nos permite ejecutar comandos de PowerShell. Tambi&amp;eacute;n crear y probar scripts de PowerSHell.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="369" valign="top"&gt;Windows TIFF IFilter&lt;/td&gt;
&lt;td width="413" valign="top"&gt;Proporciona capacidad de reconocimiento &amp;ograve;ptico de caracteres. Espec&amp;iacute;ficamente para archivos TIFF 6.0, permitiendo adem&amp;aacute;s la indizaci&amp;oacute;n y b&amp;uacute;squeda de texto en dichos archivos.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=167017" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/juansa/archive/tags/Windows+Server/default.aspx">Windows Server</category></item><item><title>Directivas basadas en Registro</title><link>http://geeks.ms/blogs/juansa/archive/2010/02/09/directivas-basadas-en-registro.aspx</link><pubDate>Tue, 09 Feb 2010 10:13:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:167003</guid><dc:creator>Juansa</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Para administrar los entornos de escritorio de los usuarios se utilizan las Directivas de grupo, las GPO. M&amp;aacute;s que ver las directivas a nivel de Active Directory lo que veremos es como implementar las directivas a nivel local, incluso crear nuestras propias directivas para redes que no est&amp;aacute;n basadas en AD.&lt;/p&gt;
&lt;p&gt;Las directivas no son Preferencias, compar&amp;aacute;ndolas entendemos mejor c&amp;oacute;mo Windows usa las primeras. Los usuarios establecen preferencias, su fondo de pantalla por ejemplo y las pueden cambiar en cualquier momento. Los administrdores establecen directivas como donde est&amp;aacute; la carpeta Mis Documentos y &amp;eacute;stas toman precedencia sobre la preferencia equivalente del usuario. Windows las almacena en el registro de forma separada. Si existe una directiva, el sistema usa la configuraci&amp;oacute;n especificada en ella, si no la hay, usar&amp;aacute; la preferencia del usuario; en ausencia de ambas, la configuraci&amp;oacute;n predeterminada. Una directiva no cambia una preferencia de usuario sino que toma precedencia en su aplicaci&amp;oacute;n coexistiendo ambas. En cuanto un admin suprime la directiva, la preferencia vuelve a usarse.&lt;/p&gt;
&lt;table width="549" cellpadding="2" cellspacing="2" border="0"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td width="77" valign="top"&gt;
&lt;p align="center"&gt;Directiva&lt;/p&gt;
&lt;/td&gt;
&lt;td width="92" valign="top"&gt;
&lt;p align="center"&gt;Preferencia&lt;/p&gt;
&lt;/td&gt;
&lt;td width="370" valign="top"&gt;
&lt;p align="center"&gt;Comportamiento&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="77" valign="top"&gt;
&lt;p align="center"&gt;No&lt;/p&gt;
&lt;/td&gt;
&lt;td width="92" valign="top"&gt;
&lt;p align="center"&gt;No&lt;/p&gt;
&lt;/td&gt;
&lt;td width="370" valign="top"&gt;
&lt;p align="left"&gt;Configuraci&amp;oacute;n predeterminada&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="77" valign="top"&gt;
&lt;p align="center"&gt;No&lt;/p&gt;
&lt;/td&gt;
&lt;td width="92" valign="top"&gt;
&lt;p align="center"&gt;S&amp;iacute;&lt;/p&gt;
&lt;/td&gt;
&lt;td width="370" valign="top"&gt;
&lt;p align="left"&gt;Se aplica la preferencia&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="77" valign="top"&gt;
&lt;p align="center"&gt;S&amp;iacute;&lt;/p&gt;
&lt;/td&gt;
&lt;td width="92" valign="top"&gt;
&lt;p align="center"&gt;No&lt;/p&gt;
&lt;/td&gt;
&lt;td width="370" valign="top"&gt;
&lt;p align="left"&gt;Se aplica la directiva&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="77" valign="top"&gt;
&lt;p align="center"&gt;S&amp;iacute;&lt;/p&gt;
&lt;/td&gt;
&lt;td width="92" valign="top"&gt;
&lt;p align="center"&gt;S&amp;iacute;&lt;/p&gt;
&lt;/td&gt;
&lt;td width="370" valign="top"&gt;
&lt;p align="left"&gt;Se aplica la directiva, ingnorando la preferencia.&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Windows combina las directivas en una GPO. En AD hay m&amp;uacute;ltiples GPO que se aplican a usuarios y equipos, dependiendo de donde se encuentren en el directorio. En Windows s&amp;oacute;lo hay UNA GPO, Local GPO. Su configuraci&amp;oacute;n se aplica al equipo local y a cualquier usuarios que inicie sesi&amp;oacute;n en el. Ya que la Directiva Local es la primera que aplica Windows cuando arranca y los usuarios inician sesi&amp;oacute;n, las directivas de red pueden sobreescribir su configuraci&amp;oacute;n. Es decir, si la directiva local indica una configuraci&amp;oacute;n y la establecida en la red por el administrador la niega, se aplicar&amp;iacute;a la segunda.&lt;/p&gt;
&lt;p&gt;Las Directivas de grupo contienen configuraci&amp;oacute;n tanto para usuario como para equipo, conteniendo dos ramas principales:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;em&gt;Configuraci&amp;oacute;n de Equipo. &lt;/em&gt;&lt;/strong&gt;Valores de configuraci&amp;oacute;n de directiva por-equipo que especifican el comportamiento del sistema operativo, del escritorio, de seguridad, de scripts de inicio y apagado del sistema, de aplicaciones asignadas al equipo y configuraci&amp;oacute;n de aplicaciones. Windows las aplica las directivas por-equipo cuando se inicia el sistema y a intervalos de forma regular.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;em&gt;Configuraci&amp;oacute;n de Usuario.&lt;/em&gt;&lt;/strong&gt; Valores de configuraci&amp;oacute;n de directiva por-usuario que especifican el comportamiento del sistema operativo, del escritorio, de las aplicaciones publicadas y asignadas, de redirecci&amp;oacute;n de carpetas, de seguridad, de scripts de inicio y cierre de sesi&amp;oacute;n de usuario y configuraci&amp;oacute;n de aplicaciones. Windows las aplica cuando el usuario inicia sesi&amp;oacute;n en el equipo y a intervalos de forma regular.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Para editar la Directiva Local usamos el Editor de directivas:&lt;/p&gt;
&lt;p&gt;A) Abrimos Inicio, ejecutar y escribimos &lt;strong&gt;&lt;em&gt;gpedit.msc&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/juansa.metablogapi/3000.gpedit_5F00_0667368D.jpg"&gt;&lt;img height="84" width="294" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/juansa.metablogapi/5756.gpedit_5F00_thumb_5F00_0FE7A716.jpg" alt="gpedit" border="0" title="gpedit" style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" /&gt;&lt;/a&gt;&amp;nbsp;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/juansa.metablogapi/7317.gpedit02_5F00_13F48599.jpg"&gt;&lt;img height="224" width="308" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/juansa.metablogapi/7823.gpedit02_5F00_thumb_5F00_6C509A1F.jpg" alt="gpedit02" border="0" title="gpedit02" style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;B) O, nos creamos una MMC con el snap-in.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;1. escribimos &lt;strong&gt;mmc&lt;/strong&gt; en Inicio-Ejecutar&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/juansa.metablogapi/1121.mmc01_5F00_7E2FBE9D.jpg"&gt;&lt;img height="127" width="244" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/juansa.metablogapi/2526.mmc01_5F00_thumb_5F00_1FB17EDE.jpg" alt="mmc01" border="0" title="mmc01" style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;2. Men&amp;uacute; Archivo, Agregar o quitar complemento&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/juansa.metablogapi/8461.mmc02_5F00_638843E6.jpg"&gt;&lt;img height="206" width="288" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/juansa.metablogapi/6327.mmc02_5F00_thumb_5F00_12DC4A22.jpg" alt="mmc02" border="0" title="mmc02" style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;3.&amp;nbsp; En la pesta&amp;ntilde;a Independiente, bot&amp;oacute;n Agregar&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/juansa.metablogapi/7317.mmc03a_5F00_14406CF4.jpg"&gt;&lt;img height="294" width="267" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/juansa.metablogapi/6327.mmc03a_5F00_thumb_5F00_0CB78E38.jpg" alt="mmc03a" border="0" title="mmc03a" style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;4. Elegimos Editor de Directivas de grupo del cuadro y bot&amp;oacute;n Agregar&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/juansa.metablogapi/2117.mmc03_5F00_1E96B2B6.jpg"&gt;&lt;img height="274" width="270" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/juansa.metablogapi/4670.mmc03_5F00_thumb_5F00_194A5CB6.jpg" alt="mmc03" border="0" title="mmc03" style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;5. Seguimos el asistente eligiendo Equipo Local&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/juansa.metablogapi/0385.mmc04_5F00_761CF203.jpg"&gt;&lt;img height="263" width="283" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/juansa.metablogapi/8877.mmc04_5F00_thumb_5F00_3C303FC8.jpg" alt="mmc04" border="0" title="mmc04" style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;6. Pulsamos en Finalizar y cerramos todos los di&amp;aacute;logos abiertos, pulsando luego en Aceptar del di&amp;aacute;logo Agregar o quitar complemento.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/juansa.metablogapi/6646.mmc05_5F00_2022118E.jpg"&gt;&lt;img height="244" width="221" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/juansa.metablogapi/0066.mmc05_5F00_thumb_5F00_06506C10.jpg" alt="mmc05" border="0" title="mmc05" style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;7. obtenemos una consonla con el complemento a&amp;ntilde;adido.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/juansa.metablogapi/8306.mmc06_5F00_182F908E.jpg"&gt;&lt;img height="220" width="306" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/juansa.metablogapi/3681.mmc06_5F00_thumb_5F00_0C30310B.jpg" alt="mmc06" border="0" title="mmc06" style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;em&gt;&lt;span style="text-decoration:underline;"&gt;Extensiones de directiva&lt;/span&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Las directivas tienen varias extensiones que podemos ver cuando las configuramos. De hecho, cada nodo que vemos en el editor de directivas es una extensi&amp;oacute;n. De forma predeterminada, el editor carga todas las que est&amp;aacute;n disponibles al iniciar. Configuraci&amp;oacute;n de Equipo y Configuraci&amp;oacute;n de Usuario contienen diferentes extensiones, podemos ver m&amp;aacute;s al editar una directiva en AD que en una directiva Local. Algunas de las extensiones, resumidas, en una directiva local son:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;em&gt;Scripts. &lt;/em&gt;&lt;/strong&gt;Podemos asignar scripts a los usuarios que se ejecuten al inicio o cierre de sesi&amp;oacute;n. Tambi&amp;eacute;n a equipos para que se ejecuten al arrancar o apagar Windows. Se encuentra dentro de la carpeta de Configuraci&amp;oacute;n de Windows.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;em&gt;Configuraci&amp;oacute;n de seguridad. &lt;/em&gt;&lt;/strong&gt;Podemos administrar valores de seguridad, como contrase&amp;ntilde;as, auditor&amp;iacute;a y bloqueo de directivas. Tambi&amp;eacute;n podemos administrar derechos de usuario y restringir las aplicaciones que los usuarios pueden ejecutar. Se encuentra dentro de la carpeta Configuraci&amp;oacute;n de Windows.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;em&gt;Plantillas administrativas. &lt;/em&gt;&lt;/strong&gt;Directiva crea un archivo que contiene valores de Registro y que se escriben en HKCU o HKLM. Windows carga los valores desde este archivo cuando el sistema inicia o el usuario inicia sesi&amp;oacute;n. Estas son las directivas basadas en el registro.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;&lt;span style="text-decoration:underline;"&gt;Directivas en el registro&lt;/span&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Directivas del registro o directivas administrativas son la misma cosa. Son valores en el registro que sobreescriben las preferencias de los usuarios y hay buenas razones para que los usuarios no las puedan cambiar. Otras directivas, como la configuraci&amp;oacute;n de seguridad pueden o no ser valores de registro. En el editor de directivas encontramos las directivas de registro en la carpeta Plantillas Administrativas, tanto bajo la Configuraci&amp;oacute;n de Equipo como de la Configuraci&amp;oacute;n de Usuario.&lt;/p&gt;
&lt;p&gt;Las plantillas administrativas, archivos con la extensi&amp;oacute;n .adm, definen las directivas que los administradores pueden establecer. Estas plantillas describen el interfaz de usuario para reunir configuraciones del administrador y las ubicaciones de estas configuraciones desde el registro. Cuando el administrador define directivas, el editor las guarda en un archivo llamado Registry.pol. Windows carga la configuraci&amp;oacute;n contenida en Registry.pol cuando el sistema se inicia, cuando los usuarios inician sesi&amp;oacute;n, y a ciertos intervalos regulares.&lt;/p&gt;
&lt;p&gt;Las extensiones, &lt;strong&gt;Plantillas administrativas&lt;/strong&gt; y &lt;strong&gt;una extensi&amp;oacute;n de parte del cliente integrada en el registro* &lt;/strong&gt;trabajan juntas para implementar las directivas basadas en el registro.&lt;/p&gt;
&lt;p&gt;*&lt;em&gt;Procesa las directivas y crea sus correspondientes valores en el registro.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Windows tiene plantillas administrativas que definen todas las directivas compatibles con el sistema operativo. Si queremos usarlas para una aplicaci&amp;oacute;n, como Office, debemos cargar la plantilla administrativa correspondiente a Office. (El kit de recursos de Office contiene muchas plantillas administrativas para el manejo y administraci&amp;oacute;n de la suite) Las que nos proporciona Windos son:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;&lt;strong&gt;System.adm. &lt;/strong&gt;Valores principales y primer archivo de plantilla, define la mayor&amp;iacute;a de valores que vemos en Plantillas Administrativas.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&lt;strong&gt;Wmplayer.adm.&lt;/strong&gt; Valores de Windows Media.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&lt;strong&gt;Conf.adm.&lt;/strong&gt; Software de NetMeeting.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&lt;strong&gt;Inetres.adm.&lt;/strong&gt; Microsoft Internet Explorer.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Todas las directivas se establecen en uno de tres estados: Hailitada, Deshabilitada o No configurada.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/juansa.metablogapi/1121.policystatus_5F00_1B6699D8.jpg"&gt;&lt;img height="201" width="244" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/juansa.metablogapi/3187.policystatus_5F00_thumb_5F00_6D7BD7D0.jpg" alt="policystatus" border="0" title="policystatus" style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Habilitada expl&amp;iacute;citamente aplica la configuraci&amp;oacute;n a&amp;ntilde;adi&amp;eacute;ndola al registro con un valor de 0x01. Deshabilitada expl&amp;iacute;citamente desactiva la configuraci&amp;oacute;n a&amp;ntilde;adi&amp;eacute;ndola al registro con un valor de 0x00(o quit&amp;aacute;ndolo). No configurada elimina el valor de configuraci&amp;oacute;n del registro. Hay algunas directivas que necesitan de datos adicionales.&lt;/p&gt;
&lt;p&gt;Cuando configuramos una directiva prestemos atenci&amp;oacute;n a la explicaci&amp;oacute;n para asegurarnos que el resultado ser&amp;aacute; el que queremos. Algunas directivas son positivas &amp;ndash;se activa la caracter&amp;iacute;stica al habilitarla-, otras negativas &amp;ndash;se desactiva la caracter&amp;iacute;stica al habilitarla-. Un poco de confusi&amp;oacute;n, a veces para aplicar hemos de deshabilitar y al contrario. As&amp;iacute; que leed bien la directiva y lo que hace antes. ;-)&lt;/p&gt;
&lt;p&gt;&amp;iquest;Donde guarda Windows las directivas?&lt;/p&gt;
&lt;p&gt;En la rama &lt;strong&gt;\Software\Policies&lt;/strong&gt; preferentemente. En la llave &lt;strong&gt;HKLM&lt;/strong&gt;, contendr&amp;aacute; las directivas &lt;em&gt;por-equipo&lt;/em&gt; y en &lt;strong&gt;HKCU&lt;/strong&gt; las directivas &lt;em&gt;por-usuario&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Otra rama, heredada de versiones anteriores, es \Software\Microsoft\Windows\CurrentVersion\Policies. En la que las directivas tienden a tatuar el registro, lo que quiere decir que hacen cambios permanentes en el registro; Debemos explic&amp;iacute;tamente cambiar estas directivas. Las ACL, listas de control de acceso, impiden a los usuarios hacer cambios en estas llaves y de ese modo las directivas que se aplican. Los grupos locales usuarios y usuarios avanzados no tienen permisos para cambiar valores en estas llaves, pero un administrador puede sobreescribirlas directamente y cambiar la directiva.&lt;/p&gt;
&lt;p&gt;Ya que sabemos donde se ubican en el registro s&amp;oacute;lo nos resta saber en u&amp;eacute; lugar del sistema de archivos est&amp;aacute;n. La directiva local est&amp;aacute; en %ra&amp;iacute;z_del_sistema%\System32\GroupPolicy. Es una carpeta super oculta . Para verla en el explorador de Windows hemos de habilitarlo desde herramientas del men&amp;uacute; y cambiar las opciones en la pesta&amp;ntilde;a Ver del di&amp;aacute;logo de Opciones de carpeta, tanto Ver archivos y carpetas ocultos como desmarcar ocultar archivos del sistema. &lt;/p&gt;
&lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/juansa.metablogapi/5340.grouppolicy_5F00_7CB2409D.jpg"&gt;&lt;img height="274" width="383" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/juansa.metablogapi/2514.grouppolicy_5F00_thumb_5F00_62E09B1F.jpg" alt="grouppolicy" border="0" title="grouppolicy" style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Dentro de esta carpeta encontramos las siguientes subcarpetas y archivos:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;\Adm.&lt;/strong&gt; Donde est&amp;aacute;n todos los archivos adm de la directiva local.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;\User.&lt;/strong&gt; Archivo Registry.pol.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;\User\Scripts.&lt;/strong&gt; Scripts por-usuario de la directiva local. Dentro de Logon para el inicio de sesi&amp;oacute;n en Windows y dentro de Logoff para el cierre de sesi&amp;oacute;n en Windows.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;\Machine.&lt;/strong&gt; Registry.pol del equipo.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;\Machine\Scripts.&lt;/strong&gt; Scripts por-equipo de la directiva local. Dentro de Startup para el arranque y en Shutdown para el apagado.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Puede copiarse la carpeta de un equipo a otro para replicar las directivas que contienen, aunque mejor comprobarlo antes de hacerlo en un entorno de trabajo.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=167003" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/juansa/archive/tags/Windows+Server/default.aspx">Windows Server</category><category domain="http://geeks.ms/blogs/juansa/archive/tags/Herramientas/default.aspx">Herramientas</category></item><item><title>¿Realidad o ciencia ficción? Disertación sobre el futuro de la movilidad</title><link>http://geeks.ms/blogs/eduardoortega/archive/2010/02/09/191-realidad-o-ciencia-ficci-243-n-disertaci-243-n-sobre-el-futuro-de-la-movilidad.aspx</link><pubDate>Tue, 09 Feb 2010 09:46:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:166998</guid><dc:creator>Eduardo Ortega Bermejo</dc:creator><slash:comments>0</slash:comments><description>&lt;p align="justify"&gt;Con los rumores de la si/no salida del nuevo Windows Phone empez&amp;oacute; a picarme la curiosidad, &amp;iquest;Que tiene Microsoft preparado para nosotros los pr&amp;oacute;ximos a&amp;ntilde;os?&lt;/p&gt;
&lt;p align="justify"&gt;Muchos rumores sobre lo que tendr&amp;aacute; el nuevo Windows Phone, sobre si estar&amp;aacute; orientado a consumo como es la plataforma ZUNE, si seguir&amp;aacute; orientado hacia el uso empresarial (no olvidemos que Windows Mobile &lt;strong&gt;&lt;span style="text-decoration:underline;"&gt;NO&lt;/span&gt; &lt;/strong&gt;fue dise&amp;ntilde;ado para el mercado residencial, sino que fue orientado hacia el empresarial e industrial), pero tanto rumor y no nos estamos dando cuenta de la realidad. Y la realidad, es que todo est&amp;aacute; evolucionando muy derpisa.&lt;/p&gt;
&lt;table width="400" cellpadding="2" cellspacing="0" border="0"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td width="200" valign="top"&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/eduardoortega/MicrosoftSurface2SecondLight1_5F00_26E44E8C.jpg"&gt;&lt;img height="161" width="213" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/eduardoortega/MicrosoftSurface2SecondLight1_5F00_thumb_5F00_7DD8EDE8.jpg" alt="Microsoft-Surface-2-SecondLight[1]" border="0" title="Microsoft-Surface-2-SecondLight[1]" style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td width="200" valign="top"&gt;
&lt;p align="justify"&gt;A d&amp;iacute;a de hoy hemos visto, o hemos tenido el placer de utilizar tecnolog&amp;iacute;as como &lt;strong&gt;Microsoft Surface&lt;/strong&gt; sin embargo hay otras tecnolog&amp;iacute;as que en breve ver&amp;aacute;n la luz como &lt;strong&gt;Project Natal&lt;/strong&gt; (nuevo sistema de interacci&amp;oacute;n con tu XBOX, &amp;iexcl;tu eres el mando!), &lt;strong&gt;Microsoft Sphere&lt;/strong&gt; (como un Surface pero en una superficie esf&amp;eacute;rica), &lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="200" valign="top"&gt;
&lt;p align="justify"&gt;&lt;strong&gt;SecondLight &lt;/strong&gt;(nueva generaci&amp;oacute;n de Microsoft Surface, con un segundo proyector, camaras de alta definicion y sensores de infrarrojos, que permite proyectar im&amp;aacute;genes sobre otras superficies externas al surface) o como &lt;strong&gt;Microsoft Touch Light, &lt;/strong&gt;un proyector, que hace cualquier superficie t&amp;aacute;ctil.&lt;/p&gt;
&lt;/td&gt;
&lt;td width="200" valign="top"&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/eduardoortega/60210microsoftspherephotomicrosoft1_5F00_6E55DC19.jpg"&gt;&lt;img height="138" width="188" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/eduardoortega/60210microsoftspherephotomicrosoft1_5F00_thumb_5F00_2332BB8A.jpg" alt="60210-microsoft-sphere-photo-microsoft[1]" border="0" title="60210-microsoft-sphere-photo-microsoft[1]" style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/eduardoortega/LightTouch_5F00_1570x3281_5F00_28A12C2E.jpg"&gt;&lt;img height="108" width="185" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/eduardoortega/LightTouch_5F00_1570x3281_5F00_thumb_5F00_5B90BC95.jpg" alt="LightTouch_1-570x328[1]" border="0" title="LightTouch_1-570x328[1]" style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" /&gt;&lt;/a&gt;&amp;nbsp; &lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/eduardoortega/projectnataldemo1_5F00_3EA797C0.jpg"&gt;&lt;img height="106" width="157" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/eduardoortega/projectnataldemo1_5F00_thumb_5F00_4F5F1CA1.jpg" alt="project-natal-demo[1]" border="0" title="project-natal-demo[1]" style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" /&gt;&lt;/a&gt; &lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/eduardoortega/microsoftsurface1_5F00_351EB37D.jpg"&gt;&lt;img height="106" width="140" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/eduardoortega/microsoftsurface1_5F00_thumb_5F00_52445B87.jpg" alt="microsoft-surface[1]" border="0" title="microsoft-surface[1]" style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;table width="402" cellpadding="2" cellspacing="0" border="0"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td width="200" valign="top"&gt;
&lt;li&gt;&lt;a href="http://www.microsoft.com/surface/"&gt;Microsoft Surface&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://blog.seattlepi.com/microsoft/archives/144629.asp"&gt;Microsoft&amp;rsquo;s Sphere&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.microsoft.com/presspass/events/ces/videogallery.aspx?contentid=360_natal"&gt;Microsoft Project Natal&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.fayerwayer.com/2010/01/light-touch-proyector-interactivo-que-convierte-cualquier-superficie-en-una-pantalla-tactil/"&gt;Microsoft Touch Light&lt;/a&gt; &lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/eduardoortega/microsoftsecondlight01_5F00_0A169FAB.jpg"&gt;&lt;br /&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/td&gt;
&lt;td width="200" valign="top"&gt;&lt;img height="160" width="219" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/eduardoortega/microsoftsecondlight01_5F00_thumb_5F00_5933E83F.jpg" alt="microsoft-secondlight-0[1]" border="0" title="microsoft-secondlight-0[1]" style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table width="525" cellpadding="2" cellspacing="0" border="0"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td width="200" valign="top"&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/eduardoortega/minorityreport1_5F00_1ED8725E.jpg"&gt;&lt;img height="164" width="244" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/eduardoortega/minorityreport1_5F00_thumb_5F00_07E97B15.jpg" alt="minority-report[1]" border="0" title="minority-report[1]" style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td width="323" valign="top"&gt;
&lt;p align="justify"&gt;Y es que ya no estamos tan lejos de lo que nosotros llamamos ciencia ficci&amp;oacute;n.&lt;/p&gt;
&lt;p align="justify"&gt;Muchos est&amp;aacute;n comentado ya por los foros, que si se espera en pocos a&amp;ntilde;os trabajar como &lt;a href="http://www.juanjobaron.com/caricaturas/imagenes/caricaturas/tom_cruise_b.jpg"&gt;Tom Cruise&lt;/a&gt; en Minority Report , haciendo aspavientos con las manos para buscar im&amp;aacute;genes y v&amp;iacute;deos, que incluso mas de uno ha intentado &lt;a href="http://blog.revogamers.net/minority-report-con-una-wii/"&gt;emular a trav&amp;eacute;s de los sensores&lt;/a&gt; de la &lt;a href="http://www.sciencetext.com/wii-minority-report-finger-style.html/es/"&gt;Wii&lt;/a&gt;.&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p align="justify"&gt;Coches el&amp;eacute;ctricos, aviones supers&amp;oacute;nicos, c&amp;aacute;maras 3D, &lt;a href="http://tec.nologia.com/2007/08/29/sistema-holografico-3d/"&gt;sistemas hologr&amp;aacute;ficos 3D&lt;/a&gt;, televisiones y cines 3D, pantallas multit&amp;aacute;ctiles, relojes tel&amp;eacute;fono-tele, &amp;hellip; incluso en un laboratorio de Australia aseguran haber &lt;a href="http://www.cienciakanija.com/2008/03/05/%C2%BFteletransporte-muy-posible-lo-siguiente-el-viaje-en-el-tiempo/"&gt;teletransportado materia&lt;/a&gt; de un &lt;a href="http://www.tendencias21.net/Descubren-la-forma-de-teletransportar-electricidad-con-tecnologia-cuantica_a287.html"&gt;extremo a otro&lt;/a&gt; de la sala o hacer que una part&amp;iacute;cula viaje en el tiempo y aparezca en el otro extremo antes de que se haya enviado. &lt;/p&gt;
&lt;p align="justify"&gt;Microsoft nos da su particular visi&amp;oacute;n del futuro (cercano por suerte), introduciendo tecnolog&amp;iacute;as que mantiene en estudio, desarrollos que ya tiene y pruebas de concepto que tiene en mente, dej&amp;aacute;ndonos un hermoso v&amp;iacute;deo donde nos podemos hacer una idea de c&amp;oacute;mo podremos vivir en unos pocos a&amp;ntilde;os.&lt;/p&gt;
&lt;table width="400" cellpadding="2" cellspacing="0" border="0"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td width="133" valign="top"&gt;
&lt;p align="right"&gt;&lt;span style="color:#0080c0;font-size:medium;"&gt;&lt;strong&gt;VIDEO&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td width="133" valign="top"&gt;&lt;a href="mms://msvcatalog-1.wmod.llnwd.net/a2249/e1/ft/share3/dd69/0/Productivity_Future_Vision.wmv"&gt;&lt;img height="106" width="140" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/eduardoortega/06a00355803c47ae9b6b6c0fb60d3a3f1_5F00_512C2010.jpg" alt="06a00355-803c-47ae-9b6b-6c0fb60d3a3f[1]" border="0" title="06a00355-803c-47ae-9b6b-6c0fb60d3a3f[1]" style="border-right-width:0px;display:block;float:none;border-top-width:0px;border-bottom-width:0px;margin-left:auto;border-left-width:0px;margin-right:auto;" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td width="133" valign="top"&gt;
&lt;p align="left"&gt;&lt;span style="color:#0080c0;font-size:medium;"&gt;&lt;strong&gt;VIDEO&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p align="justify"&gt;Parece ciencia ficci&amp;oacute;n, pero la realidad es que no estamos tan lejos como pensamos de sentirnos inmersos en este estilo de vida y en esta forma de trabajar.&lt;/p&gt;
&lt;table width="542" cellpadding="2" cellspacing="0" border="0"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td width="200" valign="top"&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/eduardoortega/imagesCAC38Y5P_5F00_2AA9F12B.jpg"&gt;&lt;img height="81" width="140" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/eduardoortega/imagesCAC38Y5P_5F00_thumb_5F00_3BD9BACF.jpg" alt="imagesCAC38Y5P" border="0" title="imagesCAC38Y5P" style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td width="340" valign="top"&gt;Todos &lt;span style="text-decoration:line-through;"&gt;deber&amp;iacute;amos haber visto &lt;/span&gt;hemos visto series como Startage&amp;nbsp; Atlantis, donde un grupo de marines y cient&amp;iacute;ficos exploran planetas en la galaxia Pegaso llevando encima unas PDAs superchulas que son capaces de rastrear a la pe&amp;ntilde;a que tienen cerca o incluso recrear en 3D el hueso roto de tu pierna a trav&amp;eacute;s de rayos X???(WTF).&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p align="justify"&gt;Pero es algo que si lo pensamos bien no est&amp;aacute; tan lejano, ya existen sensores de movimiento de largo alcance (no implementados en dispositivos, aun), c&amp;aacute;maras que son capaces de reconocer en tiempo real si quien se acerca es un conejo o una persona, sensores de temperatura, magneticos, de gravedad, de radiaci&amp;oacute;n ultravioleta, &amp;hellip; y la &lt;a href="http://bandaancha.eu/articulo/224/1000-gb-cubo-vidrio"&gt;tecnolog&amp;iacute;a de cristales&lt;/a&gt; ya est&amp;aacute; disponible hoy en d&amp;iacute;a.&lt;/p&gt;
&lt;p align="justify"&gt;Y no hablemos de las pantallas, que si OLED, que si AMOLED, que si ahora le agrego tecnolog&amp;iacute;a LED, que si luego te lo pongo 3D que si luego se retroalimenta del sol en plan placa fot&amp;oacute;nica,&amp;hellip;&lt;/p&gt;
&lt;p align="justify"&gt;En fin, sin mas, os dejo unas im&amp;aacute;genes de mi futuro Windows Phone:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/eduardoortega/TransWinMo011_5F00_5B889497.jpg"&gt;&lt;img height="235" width="244" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/eduardoortega/TransWinMo011_5F00_thumb_5F00_0443F9E1.jpg" alt="TransWinMo01[1]" border="0" title="TransWinMo01[1]" style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" /&gt;&lt;/a&gt; &lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/eduardoortega/TransWinMo021_5F00_497C510A.jpg"&gt;&lt;img height="235" width="244" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/eduardoortega/TransWinMo021_5F00_thumb_5F00_6DC1358C.jpg" alt="TransWinMo02[1]" border="0" title="TransWinMo02[1]" style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.wmskins.com/blog/concept-transparent-windows-mobile-phone"&gt;http://www.wmskins.com/blog/concept-transparent-windows-mobile-phone&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/eduardoortega/TransWinMo031_5F00_1E080A43.jpg"&gt;&lt;img height="241" width="244" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/eduardoortega/TransWinMo031_5F00_thumb_5F00_02EF3B35.jpg" alt="TransWinMo03[1]" border="0" title="TransWinMo03[1]" style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" /&gt;&lt;/a&gt; &lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/eduardoortega/TransWinMo051_5F00_21597C1E.jpg"&gt;&lt;img height="234" width="244" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/eduardoortega/TransWinMo051_5F00_thumb_5F00_5AFC1608.jpg" alt="TransWinMo05[1]" border="0" title="TransWinMo05[1]" style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Saludos geeks!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=166998" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/eduardoortega/archive/tags/Microsoft+Research/default.aspx">Microsoft Research</category><category domain="http://geeks.ms/blogs/eduardoortega/archive/tags/Dispositivos/default.aspx">Dispositivos</category></item><item><title>[ENTLIB] Enterprise Library 5.0 Beta 1 y Unity 2.0 Beta 2 Released (el gran lanzamiento del día !!!)</title><link>http://geeks.ms/blogs/elbruno/archive/2010/02/09/entlib-enterprise-library-5-0-beta-1-y-unity-2-0-beta-2-released-el-gran-lanzamiento-del-d-237-a.aspx</link><pubDate>Tue, 09 Feb 2010 08:59:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:166993</guid><dc:creator>El Bruno</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Buenas,&lt;/p&gt;
&lt;p&gt;en un d&amp;iacute;a de grandes lanzamientos, no pod&amp;iacute;a faltar la BETA1 de &lt;a href="http://entlib.codeplex.com/wikipage?title=EntLib5%20Beta1"&gt;Microsoft Enterprise Library 5.0&lt;/a&gt; y la Beta 2 &lt;a href="http://unity.codeplex.com/wikipage?title=Unity2%20Beta1"&gt;Microsoft Unity 2.0&lt;/a&gt;. Esta es una &lt;b&gt;&lt;i&gt;Major Version&lt;/i&gt;&lt;/b&gt;, donde salvo la integraci&amp;oacute;n con Visual Studio, todos los dem&amp;aacute;s componentes se han incluido en esta versi&amp;oacute;n. El siguiente listado muestra los cambios que se han aplicado en cada componente o seccion de EntLib:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://entlib.codeplex.com/wikipage?title=EntLib5Beta1ChangeLog#unityOBintegration"&gt;Integration of Unity and Object Builder&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://entlib.codeplex.com/wikipage?title=breakingChanges&amp;amp;referringTitle=EntLib5Beta1ChangeLog"&gt;Breaking Changes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://entlib.codeplex.com/wikipage?title=EntLib5Beta1ChangeLog#allBlocks"&gt;Changes That Affect All Application Blocks&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://entlib.codeplex.com/wikipage?title=EntLib5Beta1ChangeLog#configTool"&gt;Changes to the Configuration Tool&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://entlib.codeplex.com/wikipage?title=EntLib5Beta1ChangeLog#cache"&gt;Changes to the Caching Application Block&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://entlib.codeplex.com/wikipage?title=EntLib5Beta1ChangeLog#crypto"&gt;Changes to the Cryptography Application Block&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://entlib.codeplex.com/wikipage?title=EntLib5Beta1ChangeLog#daab"&gt;Changes to the Data Access Application Block&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://entlib.codeplex.com/wikipage?title=EntLib5Beta1ChangeLog#ehab"&gt;Changes to the Exception Handling Application Block&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://entlib.codeplex.com/wikipage?title=EntLib5Beta1ChangeLog#lab"&gt;Changes to the Logging Application Block&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://entlib.codeplex.com/wikipage?title=EntLib5Beta1ChangeLog#piab"&gt;Changes to the Policy Injection Application Block&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://entlib.codeplex.com/wikipage?title=EntLib5Beta1ChangeLog#security"&gt;Changes to the Security Application Block&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://entlib.codeplex.com/wikipage?title=EntLib5Beta1ChangeLog#vab"&gt;Changes to the Validation Application Block&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://entlib.codeplex.com/wikipage?title=EntLib5Beta1ChangeLog#unity"&gt;Changes to the Unity Application Block&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Aunque como grandes cambios hay que mencionar:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Unity y Object Builder van de la mano.&lt;/li&gt;
&lt;li&gt;No hay m&amp;aacute;s soporte para WMI.&lt;/li&gt;
&lt;li&gt;Existe una nueva excepci&amp;oacute;n del tipo ActivationException que permite trabajar con errores propios de configuraci&amp;oacute;n.&lt;/li&gt;
&lt;li&gt;Todos los bloques utilizan Unity como mecanismo de inyecci&amp;oacute;n de dependencias, para la creaci&amp;oacute;n de objetos.&lt;/li&gt;
&lt;li&gt;Ahora es posible guardar la configuraci&amp;oacute;n de una aplicaci&amp;oacute;n en diferentes archivos, con info propia de cada bloque.&lt;/li&gt;
&lt;li&gt;Mucho m&amp;aacute;s&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ahora s&amp;oacute;lo queda probarla :D&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Saludos @ Boadilla&lt;/p&gt;
&lt;p&gt;&lt;a href="http://elbruno.com"&gt;El Bruno&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Fuente: &lt;a title="http://blogs.msdn.com/agile/archive/2010/02/08/enterprise-library-5-0-beta1-and-unity-2-0-beta1-are-released.aspx" href="http://blogs.msdn.com/agile/archive/2010/02/08/enterprise-library-5-0-beta1-and-unity-2-0-beta1-are-released.aspx"&gt;http://blogs.msdn.com/agile/archive/2010/02/08/enterprise-library-5-0-beta1-and-unity-2-0-beta1-are-released.aspx&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=166993" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/elbruno/archive/tags/Microsoft+Patterns+and+Practices/default.aspx">Microsoft Patterns and Practices</category><category domain="http://geeks.ms/blogs/elbruno/archive/tags/Enterprise+Library/default.aspx">Enterprise Library</category></item><item><title>[WebCast] Material de mi webcast sobre Facebook Connect</title><link>http://geeks.ms/blogs/etomas/archive/2010/02/09/webcast-material-de-mi-webcast-sobre-facebook-connect.aspx</link><pubDate>Tue, 09 Feb 2010 08:27:20 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:166988</guid><dc:creator>Eduard Tomàs i Avellana</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Este pasado jueves (4 de febrero de 2010) di un WebCast sobre Facebook Connect. La verdad es que era la primera vez que daba un webcast, y fue una sensación extraña: acostumbrado a dar charlas presenciales, se me hizo raro no tener el feedback visual de la gente. La verdad es que me sentí un poco como cuando hablas con un contestador automático…&lt;/p&gt;  &lt;p&gt;Pero he de decir que la experiencia me gustó, así que espero poder repetirla algún dia de esos!&lt;/p&gt;  &lt;p&gt;Muchas gracias a todos los que os conectasteis, espero que al menos os haya picado la curiosidad sobre connect :)&lt;/p&gt;  &lt;p&gt;Os dejo el enlace a &lt;a href="http://cid-6521c259e9b1bec6.skydrive.live.com/self.aspx/BurbujasNet/ZipsPosts/webcast-facebook-connect.zip" target="_blank"&gt;un fichero .zip con el código y el “super pptx”&lt;/a&gt; que enseñé!&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Nota:&lt;/strong&gt; El proyecto es un proyecto ASP.NET MVC RC2, así pues debéis tener instalado este framework para que os funcione!&lt;/p&gt;  &lt;p&gt;Saludos!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=166988" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/etomas/archive/tags/eventos/default.aspx">eventos</category><category domain="http://geeks.ms/blogs/etomas/archive/tags/asp.net+MVC/default.aspx">asp.net MVC</category><category domain="http://geeks.ms/blogs/etomas/archive/tags/facebook/default.aspx">facebook</category></item><item><title>[VS2010] Visual Studio 2010 Release Candidate “Go-Live” Licence (tan simple como Beta 2 –&gt; RC –&gt; RTM !!!)</title><link>http://geeks.ms/blogs/elbruno/archive/2010/02/09/vs2010-visual-studio-2010-release-candidate-go-live-licence.aspx</link><pubDate>Tue, 09 Feb 2010 08:03:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:166984</guid><dc:creator>El Bruno</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;&lt;a href="http://www.elbruno.com"&gt;&lt;img title="image" border="0" alt="image" src="http://img687.imageshack.us/img687/6816/image47dd1de4.png" width="606" height="167" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Buenas,&lt;/p&gt;  &lt;p&gt;ahora que ya se ha liberado &lt;a href="http://geeks.ms/blogs/jorge/archive/2010/02/09/visual-studio-2010-rc-disponible-en-la-subscripci-243-n-msdn.aspx"&gt;la Release Candidate&lt;/a&gt; de &lt;a title="Visual Studio 2010" href="http://msdn.microsoft.com/en-us/vstudio/dd582936.aspx" target="_blank"&gt;Visual Studio 2010&lt;/a&gt;, es interesante saber que también existe un modelo de licencias “Go-Live” para que podamos utilizar esta versión mucho más tranquilos. Además de soportar el path de actualización de Beta 2 –&amp;gt; RC, este modelo soporta las siguientes características:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Existe un proceso de actualización de Beta 2 a RC y luego a la versión final (RTM) de Visual Studio 2010 y de .NET Framework 4.0. Para Team Foundation Server significa pasar datos de Team Foundation Server 2008 a Team Foundation Server 2010 Beta 2 y a continuación, eventualmente a Team Foundation Server 2010 RTM. Lo más importante es que esto significa código fuente, elementos de trabajo, pruebas, compilaciones y el almacén de datawarehouse. &lt;/li&gt;    &lt;li&gt;Con VS2010 es posible aplicaciones &amp;quot;go live&amp;quot; :D. &lt;/li&gt;    &lt;li&gt;Existe un equipo de soporte específico para esta versión. Si vas a utilizar la versión &amp;quot;go live&amp;quot;; hay que registrarse por correo electrónico a &lt;a href="mailto:vsgolive@microsoft.com"&gt;vsgolive@microsoft.com&lt;/a&gt;. Si ya tienes un ID de soporte para VS2010 Beta 2, el mismo sigue siendo válido avanzar como actualizar a RC VS2010.&amp;#160; &lt;/li&gt;    &lt;li&gt;Otra opción para solicitando ayuda es visitar los foros de MSDN. Los foros de MSDN son frecuentados por del MVP de Microsoft (como quien suscribe) y encuentran de miembros del grupo de productos y son un gran lugar para buscar problemas presentados por otros que podrían coincidir con problemas. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Pues ya lo sabes … a probar la RC !!!&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Saludos @ Boadilla&lt;/p&gt;  &lt;p&gt;&lt;a href="http://elbruno.com"&gt;El Bruno&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Fuente: &lt;a title="http://blogs.msdn.com/jeffbe/archive/2010/02/08/going-live-with-the-visual-studio-2010-release-candidate.aspx" href="http://blogs.msdn.com/jeffbe/archive/2010/02/08/going-live-with-the-visual-studio-2010-release-candidate.aspx"&gt;http://blogs.msdn.com/jeffbe/archive/2010/02/08/going-live-with-the-visual-studio-2010-release-candidate.aspx&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=166984" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/elbruno/archive/tags/Visual+Studio+Team+System/default.aspx">Visual Studio Team System</category><category domain="http://geeks.ms/blogs/elbruno/archive/tags/VSTS/default.aspx">VSTS</category><category domain="http://geeks.ms/blogs/elbruno/archive/tags/Visual+Studio+2010/default.aspx">Visual Studio 2010</category><category domain="http://geeks.ms/blogs/elbruno/archive/tags/Team+Foundation+Server+2010/default.aspx">Team Foundation Server 2010</category></item><item><title>Visual Studio 2010 RC disponible en la subscripción MSDN</title><link>http://geeks.ms/blogs/jorge/archive/2010/02/09/visual-studio-2010-rc-disponible-en-la-subscripci-243-n-msdn.aspx</link><pubDate>Tue, 09 Feb 2010 07:43:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:166981</guid><dc:creator>Jorge Serrano</dc:creator><slash:comments>1</slash:comments><description>&lt;p&gt;&lt;img src="http://www.microsoft.com/visualstudio/en-us/content/images/vs2010_logo.png" border="0" style="max-width:550px;" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Microsoft ha abierto en la p&amp;aacute;gina de descargas de subscripci&amp;oacute;n MSDN la posibilidad de que descarguemos la versi&amp;oacute;n RC (Release Candidate) de Visual Studio 2010.&lt;/p&gt;
&lt;p&gt;Desde hace tan solo unas horas, es posible descargar esta ultim&amp;iacute;sima versi&amp;oacute;n de Visual Studio 2010 antes de que aparezca ya la definitiva versi&amp;oacute;n RTM.&lt;/p&gt;
&lt;p&gt;En &lt;a href="http://msdn.microsoft.com/en-us/vstudio/dd582936.aspx"&gt;siguiente enlace&lt;/a&gt; te llevar&amp;aacute; a la p&amp;aacute;gina principal de MSDN Microsoft USA. Tanto desde este enlace como desde el de la p&amp;aacute;gina de MSDN en espa&amp;ntilde;ol, accederemos a nuestra subscripci&amp;oacute;n MSDN (para quien la tenga) y desde all&amp;iacute; podremos descargar el Visual Studio 2010 RC.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=166981" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/jorge/archive/tags/.NET+Framework+4.0/default.aspx">.NET Framework 4.0</category><category domain="http://geeks.ms/blogs/jorge/archive/tags/Visual+Studio+2010/default.aspx">Visual Studio 2010</category></item><item><title>Dando color a nuestras aplicaciones Silverlight</title><link>http://geeks.ms/blogs/ilanda/archive/2010/02/09/dando-color-a-nuestra-aplicaciones-ria-services.aspx</link><pubDate>Tue, 09 Feb 2010 06:15:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:166757</guid><dc:creator>Ibon Landa</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Ya llevamos una temporada hablando sobre el funcionamiento de &lt;a href="http://geeks.ms/blogs/ilanda/archive/tags/WCF+Ria+Services/default.aspx"&gt;WCF RIA Services&lt;/a&gt; y de c&amp;oacute;mo se puede emplear junto con &lt;strong&gt;Silverlight&lt;/strong&gt; para realizar aplicaciones de negocio.&lt;/p&gt;
&lt;p&gt;Hemos hablado de varias caracter&amp;iacute;sticas interesantes pero no hemos hablado en ning&amp;uacute;n momento de c&amp;oacute;mo personalizar el dise&amp;ntilde;o de la aplicaci&amp;oacute;n, de la interfaz Silverlight que hagamos&amp;hellip;&lt;/p&gt;
&lt;p&gt;Pues en esta ocasi&amp;oacute;n toca hablar de dise&amp;ntilde;o pero como no puede decir que el dise&amp;ntilde;o sea mi fuerte, he optado por mostrar algunos recursos de los que disponemos para iniciarnos en este maravilloso mundo.&lt;/p&gt;
&lt;p&gt;Dentro de la p&amp;aacute;gina de la &lt;a href="http://gallery.expression.microsoft.com/en-us/"&gt;Galer&amp;iacute;a de Expression&lt;/a&gt; pod&amp;eacute;is encontrar un mont&amp;oacute;n de ejemplos que os resultar&amp;aacute;n de gran utilidad, ya sea para aplicarlos directamente a vuestra aplicaciones, aprender de ellos o para partiendo de ellos hacer vuestras propias modificaciones utilizando Blend&amp;hellip;.bueno, para lo que quer&amp;aacute;is.&lt;/p&gt;
&lt;p&gt;Por ejemplo, pod&amp;eacute;is encontrar un &lt;a href="http://gallery.expression.microsoft.com/en-us/site/search?f%5B0%5D.Type=RootCategory&amp;amp;f%5B0%5D.Value=themes&amp;amp;f%5B0%5D.Text=Themes"&gt;mont&amp;oacute;n de temas&lt;/a&gt; que pod&amp;eacute;is aplicar directamente a las plantillas de proyecto de Silverlight.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ilanda/image_5F00_175F6CC2.png"&gt;&lt;img height="313" width="516" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ilanda/image_5F00_thumb_5F00_3B27F882.png" alt="image" border="0" title="image" style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Y pasar del estilo de la plantilla por defecto a una un poco m&amp;aacute;s trabajada&amp;hellip;.sustituyendo simplemente el fichero de estilos por defecto por el que os descargu&amp;eacute;is de la web de &lt;a href="http://gallery.expression.microsoft.com/en-us/"&gt;Expression.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ilanda/image_5F00_4719C2E9.png"&gt;&lt;img height="344" width="562" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ilanda/image_5F00_thumb_5F00_3E49BA9D.png" alt="image" border="0" title="image" style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;img src="http://gallery.expression.microsoft.com/en-us/sl3theme/resize/file/1151" align="center" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="http://gallery.expression.microsoft.com/en-us/slthemeretro/resize/file/810" align="center" alt="" /&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=166757" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/ilanda/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://geeks.ms/blogs/ilanda/archive/tags/RIA+Services/default.aspx">RIA Services</category><category domain="http://geeks.ms/blogs/ilanda/archive/tags/WCF+Ria+Services/default.aspx">WCF Ria Services</category></item><item><title>¿Quieres ganarte un combo de productos Microsoft?</title><link>http://geeks.ms/blogs/johnbulla/archive/2010/02/08/191-quieres-ganarte-un-combo-de-productos-microsoft.aspx</link><pubDate>Tue, 09 Feb 2010 04:28:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:166972</guid><dc:creator>johnbulla</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/johnbulla/image_5F00_15551AA0.png"&gt;&lt;img style="border-right-width:0px;display:block;float:none;border-top-width:0px;border-bottom-width:0px;margin-left:auto;border-left-width:0px;margin-right:auto;" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/johnbulla/image_5F00_thumb_5F00_1B2FBE39.png" width="312" border="0" height="58" alt="" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p align="justify"&gt;&lt;b&gt;Conoce los productos de Microsoft Hardware y ponle estilo a tu vida.&lt;/b&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div align="justify"&gt;Disfruta la mejor tecnolog&amp;iacute;a en diferentes dise&amp;ntilde;os y colores.&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div align="justify"&gt;Vive la m&amp;aacute;xima expresi&amp;oacute;n en alta definici&amp;oacute;n.&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div align="justify"&gt;Descubre la combinaci&amp;oacute;n perfecta para estar siempre conectado con los que est&amp;aacute;n lejos.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p align="justify"&gt;&amp;iexcl; COMIENZA A PARTICIPAR ! Elige el combo que m&amp;aacute;s te guste, sigue las &lt;a href="http://bit.ly/cwT7GH" target="_blank"&gt;instrucciones&lt;/a&gt; y g&amp;aacute;nate el combo que seleccionaste.&lt;/p&gt;
&lt;p align="justify"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p align="justify"&gt;Saludos,&lt;/p&gt;
&lt;p&gt;&lt;a class="addthis_button" href="http://www.addthis.com/bookmark.php?v=250&amp;amp;pub=johnbulla"&gt;&lt;img style="border-right-width:0px;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" alt="Bookmark and Share" src="http://s7.addthis.com/static/btn/v2/lg-share-en.gif" width="125" height="16" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=166972" width="1" height="1"&gt;</description></item><item><title>Visual Studio 2010 and .NET Framework 4 RC ya se encuentra disponible</title><link>http://geeks.ms/blogs/johnbulla/archive/2010/02/08/visual-studio-2010-and-net-framework-4-rc-ya-se-encuentra-disponible.aspx</link><pubDate>Tue, 09 Feb 2010 04:14:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:166971</guid><dc:creator>johnbulla</dc:creator><slash:comments>0</slash:comments><description>&lt;blockquote&gt;
&lt;p align="center"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p align="center"&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/johnbulla/vs2010logo_5F00_3E2911C9.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/johnbulla/vs2010logo_5F00_thumb_5F00_2A9BB228.png" width="280" border="0" height="110" alt="" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/johnbulla/NET_5F00_v_5F00_rgb_5F00_2_5F00_146596D6.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/johnbulla/NET_5F00_v_5F00_rgb_5F00_2_5F00_thumb_5F00_4F4CC99F.png" width="116" border="0" height="110" alt="" /&gt;&lt;/a&gt;&amp;nbsp; &lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Hola a Amig@s:&lt;/p&gt;
&lt;p align="justify"&gt;Hoy Microsoft&amp;reg; libero la versi&amp;oacute;n Release Candidate de Visual Studio 2010 y .Net Framework 4 para suscriptores a MSDN, pero el pr&amp;oacute;ximo 10 de Febrero ya estar&amp;aacute; disponible al p&amp;uacute;blico, seg&amp;uacute;n lo anuncia &lt;a href="http://blogs.msdn.com/somasegar/archive/2010/02/08/visual-studio-2010-and-net-framework-4-release-candidate-now-available.aspx" target="_blank"&gt;Soma Somasega&lt;/a&gt; en su Blog. En el blog de &lt;a href="http://blogs.msdn.com/jasonz/default.aspx" target="_blank"&gt;Jason Zanders&lt;/a&gt; hay m&amp;aacute;s informaci&amp;oacute;n sobre la versi&amp;oacute;n RC.&lt;/p&gt;
&lt;p align="justify"&gt;Listos para descargarla&amp;hellip;..!!!&lt;/p&gt;
&lt;p align="justify"&gt;Saludos,&lt;/p&gt;
&lt;p&gt;&lt;a class="addthis_button" href="http://www.addthis.com/bookmark.php?v=250&amp;amp;pub=johnbulla"&gt;&lt;img style="border-right-width:0px;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" alt="Bookmark and Share" src="http://s7.addthis.com/static/btn/v2/lg-share-en.gif" width="125" height="16" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=166971" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/johnbulla/archive/tags/Visual+Studio+2010/default.aspx">Visual Studio 2010</category><category domain="http://geeks.ms/blogs/johnbulla/archive/tags/.NET+Framework+4/default.aspx">.NET Framework 4</category></item><item><title>[Tips] &amp; en Key de Web.Config</title><link>http://geeks.ms/blogs/gperez/archive/2010/02/09/tips-amp-en-key-de-web-config.aspx</link><pubDate>Tue, 09 Feb 2010 02:12:08 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:166961</guid><dc:creator>Gonzalo Perez</dc:creator><slash:comments>3</slash:comments><description>&lt;p&gt;En la seguidilla de tips para los que se van iniciando y de repente tienen se les presenta un problema, el tener un símbolo en el value de un key del appSettings. Ya que si tienes:   &lt;br /&gt;    &lt;br /&gt;&lt;span style="line-height:115%;font-family:&amp;#39;Courier New&amp;#39;;color:blue;font-size:10pt;mso-no-proof:yes;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="line-height:115%;font-family:&amp;#39;Courier New&amp;#39;;color:#a31515;font-size:10pt;mso-no-proof:yes;"&gt;add&lt;/span&gt;&lt;span style="line-height:115%;font-family:&amp;#39;Courier New&amp;#39;;color:blue;font-size:10pt;mso-no-proof:yes;"&gt; &lt;/span&gt;&lt;span style="line-height:115%;font-family:&amp;#39;Courier New&amp;#39;;color:red;font-size:10pt;mso-no-proof:yes;"&gt;key&lt;/span&gt;&lt;span style="line-height:115%;font-family:&amp;#39;Courier New&amp;#39;;color:blue;font-size:10pt;mso-no-proof:yes;"&gt;=&lt;/span&gt;&lt;span style="line-height:115%;font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;"&gt;&amp;quot;&lt;span style="color:blue;"&gt;miclave&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt; &lt;/span&gt;&lt;span style="color:red;"&gt;value&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;uno&lt;/span&gt;&lt;span style="color:red;"&gt;&amp;amp;dos&amp;amp;tres&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;/&amp;gt;       &lt;br /&gt;        &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;Es incorrecto y arroja un error en tiempo de compilación, entonces a lo que hay que reemplazar es:    &lt;br /&gt;&lt;span style="line-height:115%;font-family:&amp;#39;Courier New&amp;#39;;color:blue;font-size:10pt;mso-no-proof:yes;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="line-height:115%;font-family:&amp;#39;Courier New&amp;#39;;color:#a31515;font-size:10pt;mso-no-proof:yes;"&gt;add&lt;/span&gt;&lt;span style="line-height:115%;font-family:&amp;#39;Courier New&amp;#39;;color:blue;font-size:10pt;mso-no-proof:yes;"&gt; &lt;/span&gt;&lt;span style="line-height:115%;font-family:&amp;#39;Courier New&amp;#39;;color:red;font-size:10pt;mso-no-proof:yes;"&gt;key&lt;/span&gt;&lt;span style="line-height:115%;font-family:&amp;#39;Courier New&amp;#39;;color:blue;font-size:10pt;mso-no-proof:yes;"&gt;=&lt;/span&gt;&lt;span style="line-height:115%;font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;"&gt;&amp;quot;&lt;span style="color:blue;"&gt;miclave&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt; &lt;/span&gt;&lt;span style="color:red;"&gt;value&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;uno&lt;/span&gt;&lt;span style="color:red;"&gt;&amp;amp;amp;&lt;/span&gt;&lt;span style="color:blue;"&gt;dos&lt;/span&gt;&lt;span style="color:red;"&gt;&amp;amp;amp;&lt;/span&gt;&lt;span style="color:blue;"&gt;tres&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Es decir, &amp;amp; por &amp;amp;amp; &amp;lt;- Fácil verdad?&lt;/strong&gt;    &lt;br /&gt;Bueno, espero que esto les pueda ser de utilidad :)    &lt;br /&gt;Saludos,    &lt;br /&gt;Gonzalo&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=166961" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/gperez/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://geeks.ms/blogs/gperez/archive/tags/.NET/default.aspx">.NET</category><category domain="http://geeks.ms/blogs/gperez/archive/tags/Tips/default.aspx">Tips</category></item><item><title>[Tips] Como leer el HTML de una Pagina desde ASP.NET</title><link>http://geeks.ms/blogs/gperez/archive/2010/02/09/tips-como-leer-el-html-de-una-pagina-desde-asp-net.aspx</link><pubDate>Tue, 09 Feb 2010 02:05:42 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:166959</guid><dc:creator>Gonzalo Perez</dc:creator><slash:comments>1</slash:comments><description>&lt;table border="0" cellspacing="0" cellpadding="2" width="534"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="137"&gt;&lt;img src="http://www.profissionaisti.com.br/wp-content/uploads/2009/04/programador_feliz.jpg" width="132" height="135" alt="" /&gt;&lt;/td&gt;        &lt;td valign="top" width="395"&gt;         &lt;p align="justify"&gt;Pregunta repetida, por lo tanto amerita post, acá te dejo el código y la explicación.           &lt;br /&gt;            &lt;br /&gt;Para esto vamos a utilizar la clase &lt;a href="http://msdn.microsoft.com/en-us/library/system.net.webclient.aspx" target="_blank"&gt;WebClient&lt;/a&gt; de System.NET que nos provee métodos para enviar y recibir datos desde un recurso identificado mediante el URI. Luego a descargar los datos y dejarlos en un arreglo de Bytes para luego obtener el texto HTML encodeado. Por último este código HTML lo asignamos aun TextBox Multiline para ver el resultado. &lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt; El código necesario es simplemente:  &lt;p align="justify"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:en-us;mso-no-proof:yes;" lang="EN-US"&gt;&lt;span style="color:blue;"&gt;Dim&lt;/span&gt; MyWebClient &lt;span style="color:blue;"&gt;As&lt;/span&gt; &lt;span style="color:blue;"&gt;New&lt;/span&gt; WebClient      &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:en-us;mso-no-proof:yes;" lang="EN-US"&gt;&lt;span style="color:blue;"&gt;Dim&lt;/span&gt; ArregloBytes() &lt;span style="color:blue;"&gt;As&lt;/span&gt; &lt;span style="color:blue;"&gt;Byte       &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:en-us;mso-no-proof:yes;" lang="EN-US"&gt;ArregloBytes = MyWebClient.DownloadData(&lt;span style="color:#a31515;"&gt;&lt;a href="http://www.bing.com/"&gt;http://www.bing.com/&lt;/a&gt;&lt;/span&gt;)      &lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:en-us;mso-no-proof:yes;" lang="EN-US"&gt;&lt;span style="color:blue;"&gt;Dim&lt;/span&gt; oUTF8 &lt;span style="color:blue;"&gt;As&lt;/span&gt; &lt;span style="color:blue;"&gt;New&lt;/span&gt; UTF8Encoding      &lt;br /&gt;&lt;/span&gt;&lt;span style="line-height:115%;font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:en-us;mso-no-proof:yes;" lang="EN-US"&gt;resultado.Text = oUTF8.GetString(ArregloBytes)&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/gperez/image_5F00_38BA0041.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="image" border="0" alt="image" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/gperez/image_5F00_thumb_5F00_5356768D.png" width="534" height="382" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p align="justify"&gt;Posteriormente puedes buscar cadenas de texto, en el caso que necesites “replicar” algunas cosillas, ejejeje.&lt;/p&gt;  &lt;p&gt;Saludos!   &lt;br /&gt;Gonzalo&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=166959" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/gperez/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://geeks.ms/blogs/gperez/archive/tags/.NET/default.aspx">.NET</category><category domain="http://geeks.ms/blogs/gperez/archive/tags/Tips/default.aspx">Tips</category></item><item><title>¿Motivación o imposición?</title><link>http://geeks.ms/blogs/msierra/archive/2010/02/08/191-motivaci-243-n-o-imposici-243-n.aspx</link><pubDate>Mon, 08 Feb 2010 22:30:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:166852</guid><dc:creator>Miguel Sierra</dc:creator><slash:comments>5</slash:comments><description>&lt;p&gt;Es una cuesti&amp;oacute;n que lleva muchos d&amp;iacute;as d&amp;aacute;ndome vueltas en la cabeza...&lt;/p&gt;
&lt;p&gt;Los tiempos que corren son tremendamente competitivos, donde los m&amp;aacute;rgenes son ajustados, los plazos cortos y la exigencia de calidad y funcionalidad es muy alta. Es por ello que a todo responsable de equipos o proyectos le exigen m&amp;aacute;s eficiencia y por lo tanto un aumento de la productividad.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Pero mi pregunta es... &amp;iquest;c&amp;oacute;mo?&lt;/strong&gt;&lt;/p&gt;...(&lt;a href="http://geeks.ms/blogs/msierra/archive/2010/02/08/191-motivaci-243-n-o-imposici-243-n.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://geeks.ms/aggbug.aspx?PostID=166852" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/msierra/archive/tags/imposici_26002300_243_3B00_n/default.aspx">imposici&amp;#243;n</category><category domain="http://geeks.ms/blogs/msierra/archive/tags/motivaci_26002300_243_3B00_n/default.aspx">motivaci&amp;#243;n</category><category domain="http://geeks.ms/blogs/msierra/archive/tags/productividad/default.aspx">productividad</category></item><item><title>Intellisense para archivos .skin</title><link>http://geeks.ms/blogs/gtorres/archive/2010/02/08/intellisense-para-archivos-skin.aspx</link><pubDate>Mon, 08 Feb 2010 22:23:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:166906</guid><dc:creator>Gisela</dc:creator><slash:comments>8</slash:comments><description>&lt;p&gt;Hoy estuve trasteando con los archivos .skin y me sorprendi&amp;oacute; el hecho de que el intellisense no estuviera habilitado. Este va a ser un post muy corto pero creo que estoy muy mal acostumbrada y sin intellisense no puedo vivir =P&lt;/p&gt;
&lt;p&gt;Para habilitarlo s&amp;oacute;lo debemos seguir los siguientes pasos:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;En el men&amp;uacute; de Visual Studio seleccionamos &lt;strong&gt;Tools&lt;/strong&gt; &amp;gt; &lt;strong&gt;Options&lt;/strong&gt; y, dentro del apartado &lt;strong&gt;Text Editor&lt;/strong&gt;, nos ubicamos en &lt;strong&gt;File Extension &lt;/strong&gt;
&lt;p style="text-align:center;"&gt;&lt;strong&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/gtorres/File-Extension.png"&gt;&lt;img height="271" width="496" src="http://geeks.ms/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/gtorres/File-Extension.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;/strong&gt;.&amp;nbsp;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;En la parte superior de este apartado, tenemos un recuadro donde podemos escribir la extensi&amp;oacute;n y seleccionar el editor. En este caso, escribimos &lt;strong&gt;skin &lt;/strong&gt;y seleccionamos &lt;strong&gt;User Control Editor&lt;/strong&gt;. Para finalizar pulsamos en Add y OK.&amp;nbsp;&lt;br /&gt;
&lt;p style="text-align:center;"&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/gtorres/skin-extension.PNG"&gt;&lt;img height="114" width="473" src="http://geeks.ms/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/gtorres/skin-extension.PNG" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;Para que el cambio tenga efecto, es necesario cerrar todos los archivos de skins.&lt;br /&gt;
&lt;p style="text-align:center;"&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/gtorres/intellisense-activado.png"&gt;&lt;img height="364" width="512" src="http://geeks.ms/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/gtorres/intellisense-activado.png" border="0" alt="" /&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;iexcl;Y esto es todo! Ya podemos disfrutar de intellisense en estos archivos. &amp;iexcl;Uf! Necesitaba comentarlo para la gente que sufre por estas cosas como yo =D&lt;/p&gt;
&lt;p&gt;&amp;iexcl;Saludos!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=166906" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/gtorres/archive/tags/Visual+Studio/default.aspx">Visual Studio</category></item><item><title>[VS2010] Guía para la actualización de Lab Management de Beta 2 a Release Candidate</title><link>http://geeks.ms/blogs/elbruno/archive/2010/02/08/vs2010-gu-237-a-para-la-actualizaci-243-n-de-lab-management-de-beta-2-a-release-candidate.aspx</link><pubDate>Mon, 08 Feb 2010 14:43:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:166903</guid><dc:creator>El Bruno</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;&lt;a href="http://www.elbruno.com"&gt;&lt;img title="image" alt="image" src="http://img687.imageshack.us/img687/6816/image47dd1de4.png" border="0" height="167" width="606" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Buenas,&lt;/p&gt;
&lt;p&gt;este es uno de los temas que m&amp;aacute;s amargado me tiene, porque no he podido probar Lab Management todav&amp;iacute;a y creo que es una de las mejores incorporaciones a &lt;a title="Visual Studio 2010" href="http://msdn.microsoft.com/en-us/vstudio/dd582936.aspx" target="_blank"&gt;Visual Studio 2010&lt;/a&gt;. El motivo de la &amp;ldquo;no-prueba&amp;rdquo; es simple: problemas de hardware, no he podido encontrar el entorno adecuado para montar todo lo necesario para probar LM c&amp;oacute;modamente (lo podr&amp;iacute;a hacer en modo chapucero, pero no es la idea).&lt;/p&gt;
&lt;p&gt;Igualmente si has montado Lab Management Beta 2 y piensas actualizar a la Release Candidate (que sale dentro de poco), &lt;a href="http://blogs.msdn.com/lab_management/attachment/9959726.ashx"&gt;esta gu&amp;iacute;a&lt;/a&gt; te indica los pasos necesarios. Y por si fuera poco, adem&amp;aacute;s de preguntar en los foros de MSDN, este post seguro que te saca de apuros &lt;a title="http://blogs.msdn.com/lab_management/archive/2010/02/08/lab-management-2010-beta2-to-rc-upgrade-guide.aspx" href="http://blogs.msdn.com/lab_management/archive/2010/02/08/lab-management-2010-beta2-to-rc-upgrade-guide.aspx"&gt;http://blogs.msdn.com/lab_management/archive/2010/02/08/lab-management-2010-beta2-to-rc-upgrade-guide.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Saludos @ La Finca&lt;/p&gt;
&lt;p&gt;&lt;a href="http://elbruno.com"&gt;El Bruno&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Gu&amp;iacute;a de actualizaci&amp;oacute;n: &lt;a title="http://blogs.msdn.com/lab_management/attachment/9959726.ashx" href="http://blogs.msdn.com/lab_management/attachment/9959726.ashx"&gt;http://blogs.msdn.com/lab_management/attachment/9959726.ashx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Fuente: &lt;a title="http://blogs.msdn.com/lab_management/archive/2010/02/08/lab-management-2010-beta2-to-rc-upgrade-guide.aspx" href="http://blogs.msdn.com/lab_management/archive/2010/02/08/lab-management-2010-beta2-to-rc-upgrade-guide.aspx"&gt;http://blogs.msdn.com/lab_management/archive/2010/02/08/lab-management-2010-beta2-to-rc-upgrade-guide.aspx&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=166903" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/elbruno/archive/tags/Visual+Studio+Team+System/default.aspx">Visual Studio Team System</category><category domain="http://geeks.ms/blogs/elbruno/archive/tags/VSTS/default.aspx">VSTS</category><category domain="http://geeks.ms/blogs/elbruno/archive/tags/Visual+Studio+2010/default.aspx">Visual Studio 2010</category><category domain="http://geeks.ms/blogs/elbruno/archive/tags/Team+Foundation+Server+2010/default.aspx">Team Foundation Server 2010</category><category domain="http://geeks.ms/blogs/elbruno/archive/tags/Lab+Management/default.aspx">Lab Management</category></item><item><title>El Registro y los Servidores 2003</title><link>http://geeks.ms/blogs/juansa/archive/2010/02/08/el-registro-y-los-servidores-2003.aspx</link><pubDate>Mon, 08 Feb 2010 13:20:58 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:166895</guid><dc:creator>Juansa</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;&lt;u&gt;Servicio Servidor&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;Manualmente podemos optimizar el servicio Servidor, personalizándolo a favor del uso de memoria, de la red o de ambos.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/juansa.metablogapi/2526.lanmanserver_5F00_4AEE947C.jpg"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="lanmanserver" border="0" alt="lanmanserver" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/juansa.metablogapi/2514.lanmanserver_5F00_thumb_5F00_6E67E689.jpg" width="426" height="225" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;em&gt;HKLM\SYSTEM\CurrentControlSet\Services\lanmanserver\Size&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Valor REG_DWORD, con:&lt;/p&gt;  &lt;p&gt;0x01 para minimizar el uso de memoria.&lt;/p&gt;  &lt;p&gt;0x02 balancear el uso de memoria y el rendimiento de red.&lt;/p&gt;  &lt;p&gt;0x03 máximizar el rendimiento de red.&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&lt;u&gt;Autenticación&lt;/u&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;Hay una serie de personalizaciones que pueden ayudarnos a resolver problemas y optimizar la autenticación.&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Kerberos, Obligatoriedad de Catálogo Global y la habilitación de los mensajes de Winlogon extendidos para obtención de información.&lt;/em&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;&lt;u&gt;KERBEROS&lt;/u&gt;&lt;/em&gt;&lt;/p&gt;    &lt;p&gt;Kerberos es un mecanismo de autenticación que se usa para comprobar la identidad de un usuario o equipo. Es el método preferido para autenticar servicios en Windows Server 2003. Podemos modificar los parámetros de Kerberos para resolver contratiempos o simplemente para testear el protocolo, al acabar eliminamos las entradas añadidas, ya que podría influir en el rendimiento del equipo.&lt;/p&gt;    &lt;p&gt;En la llave: &lt;em&gt;&lt;strong&gt;HKLM\SYSTEM\CurrentControlSet\Control\Lsa\Kerberos\Parameters &lt;/strong&gt;&lt;/em&gt;con valores del tipo REG_DWORD.&lt;/p&gt;    &lt;table border="0" cellspacing="2" cellpadding="2" width="656"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td valign="top" width="133"&gt;SkewTime&lt;/td&gt;          &lt;td valign="top" width="133"&gt;5 (minutos)&lt;/td&gt;          &lt;td valign="top" width="380"&gt;Este valor es el máximo de diferencia de hora permitido entre el equipo cliente y el servidor que acepta la autenticación.&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="133"&gt;LogLevel&lt;/td&gt;          &lt;td valign="top" width="133"&gt;0&lt;/td&gt;          &lt;td valign="top" width="380"&gt;Indica si los sucesos se guardan en el Registro de sucesos del sistema. Cualquier valos distinto a 0 provocará que todos los sucesos relacionados con Kerberos se guarden.&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="133"&gt;MaxPacketSize&lt;/td&gt;          &lt;td valign="top" width="133"&gt;1465(bytes)&lt;/td&gt;          &lt;td valign="top" width="380"&gt;Tamaño máximo del paquete UDP. Si se supera el tamaño se usa TCP.&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="133"&gt;StartupTime&lt;/td&gt;          &lt;td valign="top" width="133"&gt;120(segundos)&lt;/td&gt;          &lt;td valign="top" width="380"&gt;Tiempo que espera Windows al KDC para iniciar antes de darse por vencido.&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="133"&gt;KdcWaitTime&lt;/td&gt;          &lt;td valign="top" width="133"&gt;10(segundos)&lt;/td&gt;          &lt;td valign="top" width="380"&gt;Tiempo que espera Windows una respuesta del KDC.&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="133"&gt;KdcBackoffTime&lt;/td&gt;          &lt;td valign="top" width="133"&gt;10(segundos)&lt;/td&gt;          &lt;td valign="top" width="380"&gt;Tiempo entre sucesivas llamadas al KDC si la anterior ha fallado.&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="133"&gt;KdcSendRetries&lt;/td&gt;          &lt;td valign="top" width="133"&gt;3&lt;/td&gt;          &lt;td valign="top" width="380"&gt;Intentos de contactar con el KDC.&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="133"&gt;DefaultEncryptionType&lt;/td&gt;          &lt;td valign="top" width="133"&gt;23 (0x17)&lt;/td&gt;          &lt;td valign="top" width="380"&gt;Tipo de cifrado para la preautenticación.&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="133"&gt;FarKdcTimeout&lt;/td&gt;          &lt;td valign="top" width="133"&gt;10(minutos)&lt;/td&gt;          &lt;td valign="top" width="380"&gt;Tiempo de caducidad usado para invalidar a un controlador de dominio desde un sitio distinto en la caché de controlador de dominio.&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="133"&gt;NearKdcTimeout&lt;/td&gt;          &lt;td valign="top" width="133"&gt;30(minutos)&lt;/td&gt;          &lt;td valign="top" width="380"&gt;Tiempo de caducidad usado para invalidar a un controlador de dominio en el mismo sitio en la caché de controlador de dominio.&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="133"&gt;StronglyEncryptDatagram&lt;/td&gt;          &lt;td valign="top" width="133"&gt;FALSE&lt;/td&gt;          &lt;td valign="top" width="380"&gt;Bandera que indica si se usa un cifrado de 128 bits, lo contrario a un cifrado débil, en paquetes de datagrama.&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="133"&gt;MaxReferralCount&lt;/td&gt;          &lt;td valign="top" width="133"&gt;6&lt;/td&gt;          &lt;td valign="top" width="380"&gt;Numero de referencias KDC que un cliente sigue antes de darse por vencido.&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="133"&gt;KerbDebugLevel&lt;/td&gt;          &lt;td valign="top" width="133"&gt;0&lt;/td&gt;          &lt;td valign="top" width="380"&gt;Indicador de depuración: 1 ON, 0 OFF.&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="133"&gt;MaxTokenSize&lt;/td&gt;          &lt;td valign="top" width="133"&gt;12000&lt;/td&gt;          &lt;td valign="top" width="380"&gt;Valor máximo del token Kerberos (Se recomienda siempre un valor menor a 65535).&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="133"&gt;SpnCacheTimeout&lt;/td&gt;          &lt;td valign="top" width="133"&gt;15(minutos)&lt;/td&gt;          &lt;td valign="top" width="380"&gt;Tiempo de vida de las entradas en caché del servicio principal de nombres SPN. En DCs la caché SPN está deshabilitada.&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="133"&gt;S4UCacheTimeout&lt;/td&gt;          &lt;td valign="top" width="133"&gt;15(minutos)&lt;/td&gt;          &lt;td valign="top" width="380"&gt;Tiempo de vida de las entradas negativas en caché S4U que se usan para restringir el número de solicitudes Proxy S4U desde un equipo en particular.&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="133"&gt;S4UTicketLifeTime&lt;/td&gt;          &lt;td valign="top" width="133"&gt;15(minutos)&lt;/td&gt;          &lt;td valign="top" width="380"&gt;Tiempo de vida de los tickets obtenidos por solicitudes proxy S4U.&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="133"&gt;RetryPdc&lt;/td&gt;          &lt;td valign="top" width="133"&gt;0&lt;/td&gt;          &lt;td valign="top" width="380"&gt;Indica si el cliente contactará con el DC primario para solicitudes de autenticación (AS_REQ) si recibe un error de contraseña caducada.           &lt;br /&gt;0=falso; distinto a 0=verdadero.&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="133"&gt;RequestOptions&lt;/td&gt;          &lt;td valign="top" width="133"&gt;Cualquier valor de la RFC 1510&lt;/td&gt;          &lt;td valign="top" width="380"&gt;Indica si hay opciones adicionales que puedan enviarse como opciones KDC en las solicitudes de Ticket de concesión de servicio (TGS_REQ).&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="133"&gt;ClientIPAddress&lt;/td&gt;          &lt;td valign="top" width="133"&gt;0&lt;/td&gt;          &lt;td valign="top" width="380"&gt;Indica si una dirección IP de cliente se añadirá en un AS_REQ para obligar al campo Caddr a contener direcciones IP en todos los tickets.           &lt;br /&gt;0=falso; cualquier otro = verdadero.&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="133"&gt;TgtRenewalTime&lt;/td&gt;          &lt;td valign="top" width="133"&gt;600(segundos)&lt;/td&gt;          &lt;td valign="top" width="380"&gt;Tiempo que Kerberos espera antes intentar renovar un ticket (TGT) antes de la caducidad del ticket.&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="133"&gt;AllowTgtSessionKey&lt;/td&gt;          &lt;td valign="top" width="133"&gt;0&lt;/td&gt;          &lt;td valign="top" width="380"&gt;Indica como se exportan las claves de sesión. El valor es 0 por seguridad.           &lt;br /&gt;0=falso, cualquier otro=verdadero. &lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;En la llave: &lt;em&gt;&lt;strong&gt;HKLM\SYSTEM\CurrentControlSet\Services\kdc &lt;/strong&gt;&lt;/em&gt;con valores del tipo REG_DWORD.&lt;/p&gt;    &lt;table border="0" cellspacing="2" cellpadding="2" width="658"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td valign="top" width="133"&gt;KdcUseClientAddresses&lt;/td&gt;          &lt;td valign="top" width="133"&gt;0&lt;/td&gt;          &lt;td valign="top" width="382"&gt;Indica si la dirección IP se añade a la respuesta de Ticket de concesión (TGS_REP).           &lt;br /&gt;0=falso; cualquier otro=verdadero.&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="133"&gt;KdcDontCheckAddresses&lt;/td&gt;          &lt;td valign="top" width="133"&gt;0&lt;/td&gt;          &lt;td valign="top" width="382"&gt;Indica si las direcciones IP para el TGS_REQ i el campo Caddr del TGT se comprobarán.           &lt;br /&gt;0=falso; cualqueir otro=verdadero.&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="133"&gt;NewConnectionTimeout&lt;/td&gt;          &lt;td valign="top" width="133"&gt;50(segundos)&lt;/td&gt;          &lt;td valign="top" width="382"&gt;Tiempo en que el extremo de una conexión TCP inicial permanecerá abierta para recibir datos antes de desconectarse.&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="133"&gt;MaxDatagramReplySize&lt;/td&gt;          &lt;td valign="top" width="133"&gt;1465(bytes)&lt;/td&gt;          &lt;td valign="top" width="382"&gt;Tamaño máximo de paquete UDP en los mensajes TGS_REP y AS_REP. Si el paquete excede el tamaño, el KDC devuelve un mensaje KRB_ERR_RESPONSE_TOO_BIG que solicita al cliente que cambie a TCP.&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="133"&gt;KdcExtraLogLevel&lt;/td&gt;          &lt;td valign="top" width="133"&gt;2&lt;/td&gt;          &lt;td valign="top" width="382"&gt;Indica que información escribirá y auditará el KDC en el registro de sucesos.&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="133"&gt;KdcDebugLevel&lt;/td&gt;          &lt;td valign="top" width="133"&gt;0&lt;/td&gt;          &lt;td valign="top" width="382"&gt;Depurador ON o depurador OFF.&lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;&lt;em&gt;&lt;u&gt;Deshabilitar obligación Catálogo Global&lt;/u&gt;&lt;/em&gt;&lt;/p&gt;    &lt;p&gt;Emplazar los servidores de Catálogo Global en sitios remotos suele ser deseable para mejorar el rendimiento del inicio de sesión de usuario, búsquedas y otras acciones que necesitan comunicación con el catálogo, y para reducir el tráfico WAN. Sin embargo, para reducir la intervención adminitrativa, las necesidades de hardware y otros relacionados, puede que no queramos tener un servidor de catálogo global en un sitio remoto. Esto es relevante en ciertos entornos, pero el problema es que los inicios de sesión necesitan que un controlador de dominio autentifique al usuario para contactar con el catálogo global y determinar si pertenece a un grupo universal. Si la oficina remota o sucursal no dispone de un catálogo global y no puede contactarse con uno, puede fallar el inicio de sesión del usuario.&lt;/p&gt;    &lt;p&gt;Windows Server 2003 ofrece una alternativa de caché de grupos universales. Cuando se habilita para un sitio, los usuarios que inician sesión mientras el catálogo global está en línea pueden seguir haciéndolo aún cuando el catálogo global esté fuera de línea en el próximo inicio de sesión.&lt;/p&gt;    &lt;p&gt;Para eliminar la obligación de catálogo global en un sitio y esquivar inicios denegados de sesión de usuario, lo habilitamos en el valor de configuración del controlador de dominio que lleva a cabo la autenticación del usuario:&lt;/p&gt;    &lt;p&gt;&lt;em&gt;IgnoreGCFailures (&lt;/em&gt;REG_DWORD&lt;em&gt;) en &lt;/em&gt;&lt;strong&gt;HKLM\SYSTEM\CurrentControlSet\Control\Lsa&lt;/strong&gt;, dándole un valor de 0x01 y reiniciando el DC.&lt;/p&gt;    &lt;p&gt;&lt;em&gt;&lt;u&gt;Habilitar mensajes de Winlogon extendidos&lt;/u&gt;&lt;/em&gt;&lt;/p&gt;    &lt;p&gt;Podemos configurar Windows para obtener mensajes de inicio de sesión, apagado, arranque y cierre de sesión extendidos, obteniendo información extendida para resolver cualquier incidencia en el comportamiento de estas acciones.&lt;/p&gt;    &lt;p&gt;Creamos el valor &lt;strong&gt;&lt;em&gt;verbosestatus &lt;/em&gt;&lt;/strong&gt;del tipo &lt;em&gt;REG_DWORD&lt;/em&gt; en la llave &lt;em&gt;&lt;strong&gt;HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System&lt;/strong&gt;,&lt;/em&gt; y le damos el valor 0x01.&lt;/p&gt;    &lt;p&gt;*Hay que comprobar que no exista el valor &lt;strong&gt;&lt;em&gt;DissableStatusMessages&lt;/em&gt;&lt;/strong&gt; en la misma llave sino no se mostrarán los mensajes.&lt;/p&gt;&lt;/blockquote&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=166895" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/juansa/archive/tags/Windows+Server/default.aspx">Windows Server</category><category domain="http://geeks.ms/blogs/juansa/archive/tags/Herramientas/default.aspx">Herramientas</category></item><item><title>NoSQL… ¿puede ser lo que necesitas?</title><link>http://geeks.ms/blogs/etomas/archive/2010/02/08/nosql-191-puede-ser-lo-que-necesitas.aspx</link><pubDate>Mon, 08 Feb 2010 11:36:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:166886</guid><dc:creator>Eduard Tomàs i Avellana</dc:creator><slash:comments>2</slash:comments><description>&lt;p&gt;Ultimamente se oye hablar cada vez m&amp;aacute;s de BBDD no relacionales o tal y como se las conoce ahora &amp;ldquo;NoSQL&amp;rdquo;. En &lt;a target="_blank" href="http://geeks.ms/controlpanel/blogs/posteditor.aspx/www.dosideas.com"&gt;dosideas&lt;/a&gt; publicaron un &lt;a target="_blank" href="http://www.dosideas.com/base-de-datos/657-nosql-el-movimiento-en-contra-de-las-bases-de-datos.html"&gt;interesante post al respecto de los sistemas NoSQL&lt;/a&gt;. La idea es renunciar a algunos de los principios (y funcionalidades) de las bases de datos &lt;em&gt;tradicionales &lt;/em&gt;(relacionales) a cambio de obtener mayores velocidades en el acceso a datos.&lt;/p&gt;
&lt;p&gt;Cuando nos adentramos en este mundo, debemos dejar de &lt;em&gt;pensar en tablas&lt;/em&gt;, ya que nuestros datos dejar&amp;aacute;n de estar guardados en formato relacional. Aunque existen varios &lt;em&gt;formatos&lt;/em&gt; en los cuales se guardan nuesteos datos parece ser que los m&amp;aacute;s comunes son &lt;em&gt;(clave,valor) &lt;/em&gt;o usar &lt;em&gt;documentos&lt;/em&gt; que son en cierto modo una extensi&amp;oacute;n de la (clave, valor). Si os pas&amp;aacute;is por el &lt;a target="_blank" href="http://en.wikipedia.org/wiki/NoSQL"&gt;art&amp;iacute;culo de la wikipedia sobre NoSQL&lt;/a&gt; hay varios enlaces a distintos sistemas NoSQL. A mi me gustar&amp;iacute;a hablaros de uno con el que he hecho algunas pruebas: &lt;a target="_blank" href="http://www.mongodb.org"&gt;MongoDB&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Montando el entorno&amp;hellip;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Para empezar a usar el entorno, basta con &lt;a target="_blank" href="http://www.mongodb.org/display/DOCS/Downloads"&gt;descargarnos los binarios&lt;/a&gt;. La versi&amp;oacute;n m&amp;aacute;s reciente estable es la 1.2.2. MongoDB usa el esquema de numeraci&amp;oacute;n de versiones par, donde las versiones estables siempre son pares y las de desarrollo son impares (as&amp;iacute; actualmente en desarrollo ya existe la 1.3, que cuando se estabilice pasar&amp;aacute; a ser 1.4). Para instalar MongoDB basta con descomprimir el zip donde m&amp;aacute;s os plazca :)&lt;/p&gt;
&lt;p&gt;MongoDB est&amp;aacute; escrita en C++ y viene con una librer&amp;iacute;a (.lib) y varios headers para ser usada directamente. Por suerte existe una API C# para MongoDB que os pod&amp;eacute;is descargar desde &lt;a href="http://github.com/samus/mongodb-csharp" title="http://github.com/samus/mongodb-csharp"&gt;http://github.com/samus/mongodb-csharp&lt;/a&gt; (pod&amp;eacute;is descargaros los binarios (MongoDB.Linq.dll y MongoDB.Driver.dll) o bien el c&amp;oacute;digo fuente (una soluci&amp;oacute;n VS2008 que genera los dos assemblies mencionados).&lt;/p&gt;
&lt;p&gt;Una vez teng&amp;aacute;is instalado MongoDB y los dos assemblies del driver para C#&amp;hellip; estamos listos para empezar!&lt;/p&gt;
&lt;p&gt;Para poner en marcha el servidor de MongoDB basta con ir donde hay&amp;aacute;is descomprimido MongoDB y lanzar el comando:&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Courier New;font-size:x-small;"&gt;mongod --dbpath &amp;lt;data_path&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;donde &lt;em&gt;&amp;lt;data_path&amp;gt;&lt;/em&gt; es el directorio de datos que quereis usar.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;El concepto de documentos&amp;hellip;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;MongoDB se define como base de datos de &lt;em&gt;documentos&lt;/em&gt;, entendiendo como un documento una estructura de datos que es una colecci&amp;oacute;n de elementos &amp;ldquo;clave, valor&amp;rdquo;, donde las claves son cadenas y los elementos cualquier cosa que se quiera. Aunque esto puede parecerse una tabla (donde las claves sean los nombres de los campos) se diferencia del concepto de tabla en que por un lado no tiene esquema fijo (una clave &lt;em&gt;puede&lt;/em&gt; &lt;em&gt;o no&lt;/em&gt; aparecer en un documento) y en que los valores van m&amp;aacute;s all&amp;aacute; de los admitidos generalmente por los campos de las bases de datos relacionales (p.ej. podemos guardar colecciones de &lt;em&gt;otros&lt;/em&gt; documentos como valores). El hecho que no haya esquema fijo hace estas bases de datos NoSql ideales para el desarrollo de soluciones que manejan datos poco estructurados.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Algunas operaciones b&amp;aacute;sicas&amp;hellip;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Para conectarnos a la BBDD basta con instanciar un objeto del tipo Mongo y llamar al m&amp;eacute;todo Connect. Una vez hayamos finalizado debemos llamar a Disconnect:&lt;/p&gt;
&lt;div id="codeSnippetWrapper" style="text-align:left;line-height:12pt;background-color:#f4f4f4;margin:20px 0px 10px;width:97.5%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;max-height:200px;font-size:8pt;overflow:auto;cursor:text;border:silver 1px solid;padding:4px;"&gt;
&lt;pre id="codeSnippet" style="text-align:left;line-height:12pt;background-color:#f4f4f4;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;var srv = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; Mongo();&lt;br /&gt;srv.Connect();&lt;br /&gt;&lt;span style="color:#008000;"&gt;// Operaciones con MongoDB&lt;/span&gt;&lt;br /&gt;srv.Disconnect();&lt;/pre&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;p&gt;Una vez estamos conectados al servidor debemos escojer la base de datos a utilizar. Esto lo podemos hacer con el m&amp;eacute;todo getDB:&lt;/p&gt;
&lt;div id="codeSnippetWrapper" style="text-align:left;line-height:12pt;background-color:#f4f4f4;margin:20px 0px 10px;width:97.5%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;max-height:200px;font-size:8pt;overflow:auto;cursor:text;border:silver 1px solid;padding:4px;"&gt;
&lt;pre id="codeSnippet" style="text-align:left;line-height:12pt;background-color:#f4f4f4;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;var db = srv.getDB(&lt;span style="color:#006080;"&gt;&amp;quot;MyAppDB&amp;quot;&lt;/span&gt;);&lt;/pre&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;p&gt;Una vez tenemos la base de datos ya podemos operar con ella. Lo que en una base de datos relacional son tablas con registros aqu&amp;iacute; son &lt;em&gt;colecciones&lt;/em&gt; con &lt;em&gt;documentos&lt;/em&gt;. A diferencia de una tabla relacional una MISMA colecci&amp;oacute;n puede tener documentos con distinto esquema (distintas claves):&lt;/p&gt;
&lt;div id="codeSnippetWrapper" style="text-align:left;line-height:12pt;background-color:#f4f4f4;margin:20px 0px 10px;width:97.5%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;max-height:200px;font-size:8pt;overflow:auto;cursor:text;border:silver 1px solid;padding:4px;"&gt;
&lt;pre id="codeSnippet" style="text-align:left;line-height:12pt;background-color:#f4f4f4;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span style="color:#008000;"&gt;// Obtenemos la coleccion &amp;#39;users&amp;#39;&lt;/span&gt;&lt;br /&gt;var iusers = db.GetCollection(&lt;span style="color:#006080;"&gt;&amp;quot;users&amp;quot;&lt;/span&gt;);&lt;br /&gt;&lt;span style="color:#008000;"&gt;// Creamos un usuario con login y pwd&lt;/span&gt;&lt;br /&gt;Document user = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; Document();&lt;br /&gt;user.Add(&lt;span style="color:#006080;"&gt;&amp;quot;login&amp;quot;&lt;/span&gt;, &lt;span style="color:#006080;"&gt;&amp;quot;edu&amp;quot;&lt;/span&gt;);&lt;br /&gt;user.Add(&lt;span style="color:#006080;"&gt;&amp;quot;pwd&amp;quot;&lt;/span&gt;, &lt;span style="color:#006080;"&gt;&amp;quot;mypassword&amp;quot;&lt;/span&gt;);&lt;br /&gt;&lt;span style="color:#008000;"&gt;// Insertamos el documento&lt;/span&gt;&lt;br /&gt;iusers.Insert(user);&lt;br /&gt;&lt;span style="color:#008000;"&gt;// Creamos otro documento. Este con login y pwd_hash&lt;/span&gt;&lt;br /&gt;user = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; Document();&lt;br /&gt;user.Add(&lt;span style="color:#006080;"&gt;&amp;quot;login&amp;quot;&lt;/span&gt;, &lt;span style="color:#006080;"&gt;&amp;quot;edu2&amp;quot;&lt;/span&gt;);&lt;br /&gt;user.Add(&lt;span style="color:#006080;"&gt;&amp;quot;pwd_hash&amp;quot;&lt;/span&gt;, &lt;span style="color:#006080;"&gt;&amp;quot;tH23H13&amp;quot;&lt;/span&gt;);&lt;br /&gt;&lt;span style="color:#008000;"&gt;// Insertamos el documento en la MISMA colecci&amp;oacute;n&lt;/span&gt;&lt;br /&gt;iusers.Insert(user);&lt;br /&gt;&lt;span style="color:#008000;"&gt;// Obtenemos todos los elementos de la colecci&amp;oacute;n&lt;/span&gt;&lt;br /&gt;var allUsers = iusers.FindAll();&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;int&lt;/span&gt; numUsers = allUsers.Documents.Count();&lt;/pre&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Un ejemplo&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Vamos a ver un ejemplo de uso de MongoDB&amp;hellip; Ahora que &lt;a target="_blank" href="http://geeks.ms/members/lfranco/default.aspx"&gt;Llu&amp;iacute;s&lt;/a&gt; nos est&amp;aacute; haciendo una &lt;a target="_blank" href="http://geeks.ms/blogs/lfranco/archive/2010/02/03/usando-asp-net-membrership-en-winforms-1-n.aspx"&gt;clase maestra sobre el membership provider&lt;/a&gt;, vamos a ver como podr&amp;iacute;amos implementar nuestro membership provider para que vaya contra MongoDB en lugar de contra una base de datos relacional. No voy a mostrar todo el c&amp;oacute;digo, s&amp;oacute;lo un par de extractos pero os dejo al final del post el enlace en formato zip con la soluci&amp;oacute;n de visual studio.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;El primer paso es definir que base de datos de MongoDB vamos a utilizar. No me he calentado mucho la cabeza: los membership providers tienen una propiedad ApplicationName que est&amp;aacute; pensada para eso. La idea es que un mismo proveedor puede manejar datos de distintas aplicaciones. El campo ApplicationName permite saber cual es la aplicaci&amp;oacute;n que se est&amp;aacute; manejando. Yo asumo que la BBDD de MongoDb se llamar&amp;aacute; igual que la aplicaci&amp;oacute;n:&lt;/p&gt;
&lt;div id="codeSnippetWrapper" style="text-align:left;line-height:12pt;background-color:#f4f4f4;margin:20px 0px 10px;width:97.5%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;max-height:200px;font-size:8pt;overflow:auto;cursor:text;border:silver 1px solid;padding:4px;"&gt;
&lt;pre id="codeSnippet" style="text-align:left;line-height:12pt;background-color:#f4f4f4;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;var srv = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; Mongo();&lt;br /&gt;srv.Connect();&lt;br /&gt;var db = srv.getDB(&lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;.ApplicationName);&lt;/pre&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;p&gt;Otro punto importante es no olvidarnos de llamar a Disconnect() cuando hemos terminado de trabajar con Mongo. La mejor manera de hacer esto, dado que la clase Mongo no implementa IDisposable es con try&amp;hellip;finally:&lt;/p&gt;
&lt;div id="codeSnippetWrapper" style="text-align:left;line-height:12pt;background-color:#f4f4f4;margin:20px 0px 10px;width:97.5%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;max-height:200px;font-size:8pt;overflow:auto;cursor:text;border:silver 1px solid;padding:4px;"&gt;
&lt;pre id="codeSnippet" style="text-align:left;line-height:12pt;background-color:#f4f4f4;margin:0em;width:100%;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;var srv = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; Mongo();&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;try&lt;/span&gt;&lt;br /&gt;{&lt;br /&gt;    srv.Connect();&lt;br /&gt;    &lt;span style="color:#008000;"&gt;// Operaciones con MongoDb&lt;/span&gt;&lt;br /&gt;}&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;finally&lt;/span&gt;&lt;br /&gt;{&lt;br /&gt;    srv.Disconnect();&lt;br /&gt;}&lt;/pre&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;p&gt;El membership provider que he creado &lt;strong&gt;no&lt;/strong&gt; implementa todas las funciones, pero s&amp;iacute; un grupo suficientemente &amp;aacute;mplio para que sea &lt;em&gt;usable&lt;/em&gt;: Es capaz de validar usuarios, a&amp;ntilde;adir usuarios y borrar usuarios. P.ej. esta es una captura de pantalla de la aplicaci&amp;oacute;n de configuraci&amp;oacute;n de ASP.NET usando este proveedor:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/etomas/image_5F00_469131AB.png"&gt;&lt;img height="164" width="244" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/etomas/image_5F00_thumb_5F00_694181F4.png" alt="image" border="0" title="image" style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Nada m&amp;aacute;s&amp;hellip; os dejo el enlace al c&amp;oacute;digo con un zip que incluye una soluci&amp;oacute;n de visual studio con el proveedor y una aplicaci&amp;oacute;n asp.net que lo utiliza (una p&amp;aacute;gina con un control login). Si os interesa&amp;hellip; echadle una ojeada! ;-)&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="http://cid-6521c259e9b1bec6.skydrive.live.com/self.aspx/BurbujasNet/ZipsPosts/MongoClient.zip"&gt;Enlace del fichero .zip&lt;/a&gt; (en mi skydrive).&lt;/p&gt;
&lt;p&gt;Saludos!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=166886" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/etomas/archive/tags/NoSql/default.aspx">NoSql</category></item><item><title>Nuestros planes para Windows Server 2008 R2</title><link>http://geeks.ms/blogs/juansa/archive/2010/02/08/nuestros-planes-para-windows-server-2008-r2.aspx</link><pubDate>Mon, 08 Feb 2010 10:25:30 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:166880</guid><dc:creator>Juansa</dc:creator><slash:comments>1</slash:comments><description>&lt;p&gt;Después de instalarlo supongo que hemos de configurarlo para ‘algo’ que deseamos, ¿no?.&lt;/p&gt;  &lt;p&gt;Tenemos funcionalidades ‘Roles’ y características añadidas para variedad de propósitos y de eso se trata, ¿que plan tenemos?&lt;/p&gt;  &lt;p&gt;Yo destacaría algunos roles:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Los referentes a Active Directory &lt;/li&gt;    &lt;li&gt;Hyper-v, y &lt;/li&gt;    &lt;li&gt;Servicios de Escritorio Remoto. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;A grosso modo, y teniendo en cuenta que el que se maneje con soltura con 2003 esto lo tiene superchupao, haremos una incursión a nuestros planes.&lt;/p&gt;  &lt;p&gt;Repaso de términos:&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;em&gt;&lt;u&gt;Queremos Active Directory&lt;/u&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Es una de las funciones más común en Windows Server 2008 R2, AD vigila el acceso y autenticación de aplicaciones y recursos de nuestra red, nos proporciona los servicios de directorio para que organicemos y aseguremos la infraestructura de red. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Bosque&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Principal estructura lógica de la estructura de directorio. Contiene todos los objetos de nuestro directorio, comenzando por Dominios. Los dominios de un bosque único automáticamente tendrán confianza transitiva en dos sentidos. También define varias cosas para todos los dominios en el bosque: PRIMERO, el esquema de la estructura AD – El esquema contiene la definición y atributos para todos los objetos en el bosque y es muy importante para AD ya que define diversos objetos como usuarios y grupos. Definirá que propiedades tendrán estos objetos, extenderá la compatibilidad con nuevos objetos y propiedades necesarias en aplicaciones como el correo electrónico. Y SEGUNDO, el bosque contiene la información de replicación para un funcionamiento adecuado del directorio. Finalmente, el bosque mantiene el catálogo global que proporciona capacidades de búsqueda para él mismo.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;em&gt;Dominio&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Los dominios son la división del bosque en partes lógicas. Se crean como ayuda al control de replicación de datos y son instrumentos que nos permitirán escalar en nuestra estructura de directorio. El dominio contiene todos los principales de seguridad de la organización. También maneja la autenticación de red y mediante ella proporciona la base de protección de los recursos. Los dominios ayudan a administrar las confianzas, se consideran límites de seguridad de la red y no solo nos permiten segmentar el acceso a los recursos rápidamente sino que también son una herramienta para delegar tareas administrativas.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Árboles&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Dentro de un bosque hay… árboles. Lugar de residencia de los dominios. Un árbol es donde tenemos dominios compartiendo un espacio de nombres común, un contexto de seguridad para compartir los muchos recursos ubicados en un dominio. Cualesquiera dominios que instalemos por debajo del primer dominio se convierten en dominios hijos y tienen un nuevo nombre DNS. Sin embargo, el nombre hereda el del padre. El padre &lt;em&gt;&lt;strong&gt;dominio_padre.com&lt;/strong&gt;&lt;/em&gt;, el hijo &lt;em&gt;&lt;strong&gt;dominio_hijo.dominio_padre.com&lt;/strong&gt;&lt;/em&gt;. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Confianzas&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Las relaciones de confianza hacen que los dominios autentiquen recursos no almacenados en el propio dominio. Estas confianzas pueden ser de un sentido o de dos. Normalmente son de dos sentidos. Dentro de un único árbol en un bosque todos los dominios tienen una relación en dos sentidos automáticamente entre ellos. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;OU&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Esto proporciona una organización lógica de un dominio. Sin el uso de OUs, el dominio es un gigante de objetos desorganizados dificultando la administración. Nos ofrecen la posibilidad de organizar con lógica los objetos de nuestro directorio, normalmente cuentas de usuarios y grupos, sin embargo hay más objetos en un dominio aunque usaremos más las cuentas de usuario y equipo. Los beneficios administrativos son varios. Búsqueda de usuarios o grupos, delegación de administración de las OU que nos permite tener múltiples administradores sin que tengan privilegios en todo el dominio. Y como no, la facilidad de implementación de las directivas de grupo, una herramienta muy útil.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Usuario&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Cuenta que garantiza el inicio de sesión en la red.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Grupo&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Forma de organización de usuarios y grupos para dar acceso seguro a los recursos de la red.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;DC&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Sevidor principal donde se tienen los objetos del dominio. Responsable de la replicación a otros DC.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;RODC&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Variación de DC, en este caso de sólo-lectura.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Sitios&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Cuando se diseñan los dominios de AD, OUs y los muchos objetos que ofrecen los contenedores lógicos para ayuda de nuestra estructura, tenemos un elemento físico de AD importante: el sitio. Los sitios nos permiten controlar la estructura &lt;strong&gt;&lt;em&gt;física&lt;/em&gt;&lt;/strong&gt; de la red. Ayudan al gobierno de las funciones principales del entorno:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Replicación &lt;/li&gt;    &lt;li&gt;Autentificación y, &lt;/li&gt;    &lt;li&gt;Ubicación de servicio. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Con los sitios definimos los límites de nuestra red mediante las direcciones IP y las subredes, que nos dan un mecanismo para controlar el tráfico.&lt;/p&gt;  &lt;p&gt;Cuando se planea la estructura AD se comienza desde arriba: el bósque y los dominios. Cuando instalamos el primer controlador de dominio, éste se convierte en el dominio raíz y en el principio del bosque. Definimos el espacio de nombres DNS al instalar el primer DC.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;em&gt;&lt;u&gt;Sólo Hyper-v por favor…&lt;/u&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Una demanda creciente es el uso de técnicas de virtualización para el relanzamiento de recursos reutilizables que ayuden a la consolidación y flexibilidad del servidor. Windows Server 2008 R2 Hyper-v está basado en la tecnología del hypervisor. Lo que permite a sistemas virtuales acceder al hardware del servidor eficientemente. A diferencia de otras tecnologías de virtualización, Hyper-v no integra controladores de terceros en la capa del hypervisor. Los controladores que son utilizados por los sistemas virtuales se colocan en la partición padre, que es el sistema operativo host. Todas las máquinas virtuales que instalemos se ubicarán en particiones hijas.&lt;/p&gt;  &lt;p&gt;Decidir tener un servidor que maneje la carga de virtualización puede parecer simple, pero este role necesita planearse a conciencia. Microsoft proporciona una herramienta: &lt;a href="http://technet.microsoft.com/en-us/library/bb977556.aspx" target="_blank"&gt;MAP toolkit&lt;/a&gt; con la que podremos analizar y sacar informes que nos ayuden a decidir nuestro Hyper-v.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;em&gt;&lt;u&gt;Servicios de escritorio remoto&lt;/u&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Lo que hasta ahora eran Terminal Services ha pasado a Remote Desktop Services (RDS) en 2008 R2. Su funcionalidad tiene mucho de la misma de TS en 2008. Estos servicios nos servirán para proporcionar una presentación virtualizada de nuestro entrono. La metodología para planear su implementación es como la de virtualización.&lt;/p&gt;  &lt;p&gt;Cuando instalamos RDS debemos considerar el orden adecuado de instalación de estos servicios comparándolos con las aplicaciones que usaremos en el servidor RDS. La regla general a seguir es instalar las aplicaciones y luego RDS para evitar problemillas potenciales y reinstalaciones de aplicaciones. Estas aplicaciones, en muchos casos, tienen instrucciones de instalación concretas para compatibilizarlas con su funcionamiento en Terminal Server.&lt;/p&gt;  &lt;p&gt;Otra consideración es el cómo permitir a los clientes autentificarse contra el servidor y cuál es el nivel de seguridad. Hay dos opciones, Obligar a autentificación a nivel de red y no obligar. Esta decisión puede tener impacto sobre el tipo de clientes y el nivel de seguridad proporcionado por nuestro RDS. También controla el momento de autentificación de los clientes durante el proceso de inicio de sesión, si obligamos, el usuario se autentica antes de establecer la conexión de escritorio remoto con lo que el nivel de seguridad es mayor, sin embargo, se necesita que los clientes ejecuten al menos la versión 6.0 de escritorio remoto y que el cliente Windows sea compatible con el protocolo CredSSP, Vista Xp sp3. Si la elección es no obligar a la autenticación a nivel de red, permitiremos a cualquier versión de escritorio remoto a conectar, lo que significa una segurida menor ya que la autentificación se produce después en el proceso de conexión.&lt;/p&gt;  &lt;p&gt;Como consejo: No es nada recomendable tener los servicios RDS en un servicor con AD en marcha (DC), primero porque creamos riesgos innecesarios a AD y segundo por la carga de trabajo que representa y la degradación de rendimiento que puede causar.&lt;/p&gt;  &lt;p&gt;Hay dos roles de RDS: Remote Desktop Gateway y RemoteApp and Desktop Web Access, que requieren de la instalación de más servicios para su función correcta.&lt;/p&gt;  &lt;p&gt;Si instalamos Remote Desktop Gateway, necesitaremos el servidor Web, NAP, RPC sobre HTTP y las herramientas de administración de Remote Server.&lt;/p&gt;  &lt;p&gt;Si instalamos RemoteApp and Desktop Web Access, necesitaremos el servidor Web y las herramientas de administración de Remote Server.&lt;/p&gt;  &lt;p&gt;Las funciones de RDS:&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Remote Desktop Session Host:&lt;/strong&gt; Un servidor Host de sesión de Escritorio remoto es el servidor que hospeda programas basados en Windows o todo el escritorio de Windows para clientes de Servicios de Escritorio remoto. Los usuarios pueden conectarse a un servidor Host de sesión de Escritorio remoto para ejecutar programas, guardar archivos y usar los recursos de red de dicho servidor. Los usuarios pueden obtener acceso a un servidor Host de sesión de Escritorio remoto mediante Conexión a Escritorio remoto o con RemoteApp.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Remote Desktop Licensing:&lt;/strong&gt; Servidor que administra las licencias de acceso de cliente de Escritorio remoto (CAL de RDS) que son necesarias para la conexión de cada dispositivo o usuario a un servidor Host de sesión de Escritorio remoto. Administración de licencias de Escritorio remoto se usa para instalar y emitir CAL de RD en un servidor de licencias de Escritorio remoto, y para realizar el seguimiento de la disponibilidad de las mismas. Es un componente necesario para RDS.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Remote Desktop Connection Broker: &lt;/strong&gt;El Agente de conexión a escritorio remoto es una función para granjas de servidores, ayuda esencial en el balanceo de carga de las conexiones al servidor.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Remote Desktop Gateway:&lt;/strong&gt; Puerta de enlace de Escritorio remoto es un servicio que permite a los usuarios conectar con el servidor de escritorio remoto a través de internet, sin la necesidad de conexión directa con la red corporativa.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;RemoteApp and Desktop Web Access: &lt;/strong&gt;Esto permite a los usuarios conectar vía navegador web con los espacios de trabajo remotos configurados en el servidor RDS; este servicio también proporciona valores de configuración que pueden dejarse en el Menú de inicio del equipo cliente. La página web proporciona acceso a las aplicaciones o escritorios que están autorizados para acceso web.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Remote Desktop Virtualization Host: &lt;/strong&gt;Habilita al servidor RDS a proporcionar servicios de virtualización de escritorios. Este servicio necesita de Hyper-v.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=166880" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/juansa/archive/tags/Windows+Server/default.aspx">Windows Server</category></item><item><title>Hola a todos!! apoyenme con un clic!! Apoyenme porfis http://tinyurl.com/TodosGanan</title><link>http://geeks.ms/blogs/juank/archive/2010/02/07/hola-a-todos-apoyenme-con-un-clic-apoyenme-porfis-http-tinyurl-com-todosganan.aspx</link><pubDate>Mon, 08 Feb 2010 04:02:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:166869</guid><dc:creator>Juan Carlos Ruiz Pacheco</dc:creator><slash:comments>1</slash:comments><description>Hola a todos!!! quiero utilizar la convocatoria de mi blog para que porfa me apoyen con un clic!! Apoyenme porfis http://tinyurl.com/TodosGanan ....(&lt;a href="http://geeks.ms/blogs/juank/archive/2010/02/07/hola-a-todos-apoyenme-con-un-clic-apoyenme-porfis-http-tinyurl-com-todosganan.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://geeks.ms/aggbug.aspx?PostID=166869" width="1" height="1"&gt;</description></item><item><title>Visual Studio 2010 &amp; .NET Framework 4 Training Kit (Release Enero)</title><link>http://geeks.ms/blogs/malmeyda/archive/2010/02/07/visual-studio-2010-amp-net-framework-4-training-kit-release-enero.aspx</link><pubDate>Mon, 08 Feb 2010 02:55:20 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:166861</guid><dc:creator>Miguel</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;&lt;b&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=752CB725-969B-4732-A383-ED5740F02E93&amp;amp;displaylang=en" target="_blank"&gt;&lt;img style="margin:0px 0px 0px 15px;" title="clip_image001" border="0" alt="clip_image001" align="right" src="http://blogs.msdn.com/blogfiles/mvplead/WindowsLiveWriter/VisualStudio2010QuickReferenceGuidance_DD6D/clip_image001_thumb.png" width="183" height="98" /&gt;&lt;/a&gt;&lt;/b&gt;Esta disponible una nueva versión del Visual Studio 2010 &amp;amp; .NET Framework 4 Training Kit. Esta versión descargable posee diversos talleres de formación de metro e incluye 17 presentaciones, demostraciones de 21 y 26 laboratorios de práctica. La previsualización de enero agrega contenido para Office, SharePoint y Application Lifecycle Management!&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=752CB725-969B-4732-A383-ED5740F02E93&amp;amp;displaylang=en" target="_blank"&gt;&lt;font color="#0000ff"&gt;&lt;strong&gt;Visual Studio 2010 &amp;amp; .NET Framework 4 Training Kit&lt;/strong&gt;&lt;/font&gt;&lt;/a&gt;; incluye presentaciones, laboratorios prácticos y demostraciones. Este contenido está diseñado para ayudarnos a aprender cómo usar las características de Visual Studio 2010 y una variedad de tecnologías de marco, incluyendo:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;     &lt;p&gt;C# 4.0 &lt;/p&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;p&gt;Visual Basic 10 &lt;/p&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;p&gt;F# &lt;/p&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;p&gt;Parallel Extensions &lt;/p&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;p&gt;Windows Communication Foundation &lt;/p&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;p&gt;Windows Workflow &lt;/p&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;p&gt;Windows Presentation Foundation &lt;/p&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;p&gt;ASP.NET 4 &lt;/p&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;p&gt;Windows 7 &lt;/p&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;p&gt;Entity Framework &lt;/p&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;p&gt;ADO.NET Data Services &lt;/p&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;p&gt;Managed Extensibility Framework &lt;/p&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;p&gt;Visual Studio Team System &lt;/p&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Esta nueva versión del &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=752CB725-969B-4732-A383-ED5740F02E93&amp;amp;displaylang=en" target="_blank"&gt;&lt;strong&gt;&lt;font color="#0000ff"&gt;Training Kit&lt;/font&gt;&lt;/strong&gt;&lt;/a&gt; trabaja con Visual Studio 2010 Beta 2 &amp;amp; .NET Framework 4 Beta 2. Podemos descargarlo desde &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=752CB725-969B-4732-A383-ED5740F02E93&amp;amp;displaylang=en" target="_blank"&gt;&lt;font color="#0000ff"&gt;&lt;strong&gt;aquí&lt;/strong&gt;&lt;/font&gt;&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Disfrútenlo,&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="https://mvp.support.microsoft.com/profile=EEC2BB02-FFA8-461C-A497-882A0DBC79C6" target="_blank"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="Logo_Blogs" border="0" alt="Logo_Blogs" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/malmeyda/Logo_5F00_Blogs_5F00_7FB16AB3.jpg" width="244" height="101" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=166861" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/malmeyda/archive/tags/Windows+7/default.aspx">Windows 7</category><category domain="http://geeks.ms/blogs/malmeyda/archive/tags/Visual+Studio.NET+2010/default.aspx">Visual Studio.NET 2010</category><category domain="http://geeks.ms/blogs/malmeyda/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://geeks.ms/blogs/malmeyda/archive/tags/Office+2010/default.aspx">Office 2010</category></item><item><title>Próximos WebCast de Febrero de la Comunidad ITPRO System</title><link>http://geeks.ms/blogs/juanrafael/archive/2010/02/07/pr-243-ximos-webcast-de-febrero-de-la-comunidad-itpro-system.aspx</link><pubDate>Mon, 08 Feb 2010 00:34:48 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:166857</guid><dc:creator>Juan Rafael</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Hola a todos.&lt;/p&gt;  &lt;p&gt;Continuando con el programa de los WebCast de Verano 2010 de la &lt;a href="http://limaitpro.sqlpass.org"&gt;Comunidad ITPRO System&lt;/a&gt; se ha programado los siguientes correspondientes al mes de Febrero. (Las horas están el GMT –5, Perú ). Pueden seguirnos en el twitter en @limaitpro .&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/juanrafael/WebCastVerano2010_5F00_3C891612.jpg"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="WebCast Verano 2010" border="0" alt="WebCast Verano 2010" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/juanrafael/WebCastVerano2010_5F00_thumb_5F00_7818FF05.jpg" width="490" height="318" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Subject:&amp;#160; Seguridad en Windows 7      &lt;br /&gt;&lt;/strong&gt;    &lt;br /&gt;Start Time:&amp;#160;&amp;#160; Tuesday, Feb 9, 2010 10:00 AM COT     &lt;br /&gt;End Time:&amp;#160;&amp;#160;&amp;#160;&amp;#160; Tuesday, Feb 9, 2010 11:00 AM COT&lt;/p&gt;  &lt;p&gt;Attendee URL:&amp;#160; &lt;a href="https://www.livemeeting.com/cc/usergroups/join?id=9B74D9&amp;amp;role=attend"&gt;https://www.livemeeting.com/cc/usergroups/join?id=9B74D9&amp;amp;role=attend&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Subject:&amp;#160; Powerpivot de SQ 2008 R2      &lt;br /&gt;&lt;/strong&gt;    &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;Start Time:&amp;#160;&amp;#160;&amp;#160;&amp;#160; Thursday, Feb 11, 2010 6:00 PM COT    &lt;br /&gt;End Time:&amp;#160;&amp;#160;&amp;#160;&amp;#160; Thursday, Feb 11, 2010 7:00 PM COT&lt;/p&gt;  &lt;p&gt;Attendee URL:&amp;#160; &lt;a href="https://www.livemeeting.com/cc/usergroups/join?id=H3CJJD&amp;amp;role=attend"&gt;https://www.livemeeting.com/cc/usergroups/join?id=H3CJJD&amp;amp;role=attend&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Subject:&amp;#160; Conociendo Customization Manager en Microsoft Dynamics SL 7      &lt;br /&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Start Time:&amp;#160;&amp;#160;&amp;#160;&amp;#160; Saturday, Feb 13, 2010 10:00 AM COT    &lt;br /&gt;End Time:&amp;#160;&amp;#160;&amp;#160;&amp;#160; Saturday, Feb 13, 2010 11:00 AM COT&lt;/p&gt;  &lt;p&gt;Attendee URL:&amp;#160; &lt;a href="https://www.livemeeting.com/cc/usergroups/join?id=34FK8B&amp;amp;role=attend"&gt;https://www.livemeeting.com/cc/usergroups/join?id=34FK8B&amp;amp;role=attend&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Subject:&amp;#160; Upgrade de Windows XP a Windows 7 &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Start Time:&amp;#160;&amp;#160;&amp;#160;&amp;#160; Tuesday, Feb 23, 2010 10:00 AM COT    &lt;br /&gt;End Time:&amp;#160;&amp;#160;&amp;#160;&amp;#160; Tuesday, Feb 23, 2010 11:00 AM COT&lt;/p&gt;  &lt;p&gt;Attendee URL:&amp;#160; &lt;a href="https://www.livemeeting.com/cc/usergroups/join?id=MSM2KM&amp;amp;role=attend"&gt;https://www.livemeeting.com/cc/usergroups/join?id=MSM2KM&amp;amp;role=attend&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Subject:&amp;#160; Business Intelligence con Sharepoint 2010      &lt;br /&gt;&lt;/strong&gt;    &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;Start Time:&amp;#160;&amp;#160;&amp;#160;&amp;#160; Thursday, Feb 25, 2010 6:00 PM COT    &lt;br /&gt;End Time:&amp;#160;&amp;#160;&amp;#160;&amp;#160; Thursday, Feb 25, 2010 7:00 PM COT&lt;/p&gt;  &lt;p&gt;Attendee URL:&amp;#160; &lt;a href="https://www.livemeeting.com/cc/usergroups/join?id=N72DPQ&amp;amp;role=attend"&gt;https://www.livemeeting.com/cc/usergroups/join?id=N72DPQ&amp;amp;role=attend&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Subject:&amp;#160;&amp;#160;&amp;#160;&amp;#160; Desarrollo con VB NET (VBT) y Microsoft Dynamics SL 7      &lt;br /&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Start Time:&amp;#160;&amp;#160;&amp;#160;&amp;#160; Saturday, Feb 27, 2010 10:00 AM COT    &lt;br /&gt;End Time:&amp;#160;&amp;#160;&amp;#160;&amp;#160; Saturday, Feb 27, 2010 11:00 AM COT     &lt;br /&gt;Attendee URL:&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;&lt;a href="https://www.livemeeting.com/cc/usergroups/join?id=CSC33W&amp;amp;role=attend"&gt;https://www.livemeeting.com/cc/usergroups/join?id=CSC33W&amp;amp;role=attend&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Saludos,&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=166857" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/juanrafael/archive/tags/WebCast/default.aspx">WebCast</category><category domain="http://geeks.ms/blogs/juanrafael/archive/tags/Microsoft+Dynamics/default.aspx">Microsoft Dynamics</category><category domain="http://geeks.ms/blogs/juanrafael/archive/tags/Windows+7/default.aspx">Windows 7</category><category domain="http://geeks.ms/blogs/juanrafael/archive/tags/Microsoft+Dynamics+SL/default.aspx">Microsoft Dynamics SL</category><category domain="http://geeks.ms/blogs/juanrafael/archive/tags/SQL+Server+2008+R2/default.aspx">SQL Server 2008 R2</category><category domain="http://geeks.ms/blogs/juanrafael/archive/tags/Sharepoint+2010/default.aspx">Sharepoint 2010</category></item><item><title>SharePoint 2010: Novedades en los flujos de trabajo (III)!</title><link>http://geeks.ms/blogs/ciin/archive/2010/02/07/sharepoint-2010-novedades-en-los-flujos-de-trabajo-iii.aspx</link><pubDate>Sun, 07 Feb 2010 22:20:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:166849</guid><dc:creator>Juan Carlos González Martín</dc:creator><slash:comments>0</slash:comments><description>&lt;p align="justify"&gt;Siguiendo con la serie de posts en torno a novedades en los flujos de trabajo en SharePoint 2010, en esta ocasi&amp;oacute;n vamos a evaluar como partiendo de un flujo dise&amp;ntilde;ado con Microsoft Office Visio 2010, este puede ser exportado a un archivo .vwi que posteriormente se puede importar en SharePoint Designer 2010 (SPD 2010) para implementar de forma &amp;ldquo;real&amp;rdquo; el flujo de trabajo y desplegarlo en un sitio de SharePoint. Antes de comenzar os recuerdo cu&amp;aacute;les son los enlaces a los post previos sobre flujos de trabajo en SharePoint 2010:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://geeks.ms/blogs/ciin/archive/2009/11/02/sharepoint-2010-novedades-en-los-flujos-de-trabajo-i.aspx"&gt;SharePoint 2010: Novedades en los flujos de trabajo (I)!&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://geeks.ms/blogs/ciin/archive/2009/11/13/sharepoint-2010-novedades-en-los-flujos-de-trabajo-ii.aspx"&gt;SharePoint 2010: Novedades en los flujos de trabajo (II)!&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;Dise&amp;ntilde;o del flujo de trabajo con Microsoft Office Visio 2010&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div align="justify"&gt;Abrimos Visio 2010 y creamos un nuevo documento de tipo Flujo de trabajo de Microsoft SharePoint.&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div align="justify"&gt;Desde la paleta de formas disponibles, arrastramos a la superficie de dise&amp;ntilde;o un terminador de inicio y otro de fin disponibles en la categor&amp;iacute;a Formas r&amp;aacute;pidas. Arrastramos a continuaci&amp;oacute;n una forma de tipo Comparar origen&amp;hellip;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div align="justify"&gt;Desde la categor&amp;iacute;a Acciones del flujo de trabajo de SharePoint arrastramos dos formas de tipo Registrar en historial.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div align="center"&gt;
&lt;table align="center" width="750" cellpadding="2" cellspacing="0" border="0"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td width="250" valign="top"&gt;&lt;a href="http://www.ciin.es/imagenes/SharePoint2010Novedadesenlosflujosdetrab_B3EE/image.png"&gt;&lt;img height="161" width="244" src="http://www.ciin.es/imagenes/SharePoint2010Novedadesenlosflujosdetrab_B3EE/image_thumb.png" alt="image" border="0" title="image" style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" /&gt;&lt;/a&gt; &lt;/td&gt;
&lt;td width="250" valign="top"&gt;&lt;a href="http://www.ciin.es/imagenes/SharePoint2010Novedadesenlosflujosdetrab_B3EE/image_3.png"&gt;&lt;img height="244" width="158" src="http://www.ciin.es/imagenes/SharePoint2010Novedadesenlosflujosdetrab_B3EE/image_thumb_3.png" alt="image" border="0" title="image" style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" /&gt;&lt;/a&gt; &lt;/td&gt;
&lt;td width="250" valign="top"&gt;&lt;a href="http://www.ciin.es/imagenes/SharePoint2010Novedadesenlosflujosdetrab_B3EE/image_4.png"&gt;&lt;img height="244" width="87" src="http://www.ciin.es/imagenes/SharePoint2010Novedadesenlosflujosdetrab_B3EE/image_thumb_4.png" alt="image" border="0" title="image" style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" /&gt;&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Configuramos las formas arrastradas de la siguiente forma: 
&lt;ul&gt;
&lt;li&gt;Forma Comparar origen&amp;hellip;, cambiamos el texto por defecto a &amp;iquest;Es importante? &lt;/li&gt;
&lt;li&gt;Primera forma Registrar en historial, cambiamos el texto por defecto a Si es importante. &lt;/li&gt;
&lt;li&gt;Repetimos el proceso para la otra forma Registrar historial. En este caso el texto a a&amp;ntilde;adir es No es importante. &lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Conectamos las formas de acuerdo al diagrama siguiente utilizando para ello el contector disponible en la pesta&amp;ntilde;a Inicio de Visio 2010. &lt;/li&gt;
&lt;li&gt;
&lt;div align="justify"&gt;Para cada una de las dos ramas que sale de la forma de comparaci&amp;oacute;n, tendremos que especificar a qu&amp;eacute; resultado de la condici&amp;oacute;n se refiere: se cumple vs no se cumple. Para ello, seleccionamos uno de los conectores, hacemos clic con el bot&amp;oacute;n derecho y pulsamos &amp;ldquo;S&amp;iacute;&amp;rdquo;. Repetimos la operaci&amp;oacute;n para el otro conector y pulsamos &amp;ldquo;No&amp;rdquo;.&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div align="justify"&gt;A trav&amp;eacute;s de la pesta&amp;ntilde;a Proceso, comprobamos que el flujo de trabajo no tiene ning&amp;uacute;n error de dise&amp;ntilde;o. Para ello utilizamos la opci&amp;oacute;n Comprobar diagrama.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div align="center"&gt;
&lt;table align="center" width="750" cellpadding="2" cellspacing="0" border="0"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td width="250" valign="top"&gt;&lt;a href="http://www.ciin.es/imagenes/SharePoint2010Novedadesenlosflujosdetrab_B3EE/image_5.png"&gt;&lt;img height="165" width="244" src="http://www.ciin.es/imagenes/SharePoint2010Novedadesenlosflujosdetrab_B3EE/image_thumb_5.png" alt="image" border="0" title="image" style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" /&gt;&lt;/a&gt; &lt;/td&gt;
&lt;td width="250" valign="top"&gt;&lt;a href="http://www.ciin.es/imagenes/SharePoint2010Novedadesenlosflujosdetrab_B3EE/image_6.png"&gt;&lt;img height="165" width="244" src="http://www.ciin.es/imagenes/SharePoint2010Novedadesenlosflujosdetrab_B3EE/image_thumb_6.png" alt="image" border="0" title="image" style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" /&gt;&lt;/a&gt; &lt;/td&gt;
&lt;td width="250" valign="top"&gt;&lt;a href="http://www.ciin.es/imagenes/SharePoint2010Novedadesenlosflujosdetrab_B3EE/image_7.png"&gt;&lt;img height="165" width="244" src="http://www.ciin.es/imagenes/SharePoint2010Novedadesenlosflujosdetrab_B3EE/image_thumb_7.png" alt="image" border="0" title="image" style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" /&gt;&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;div align="center"&gt;&amp;nbsp;&lt;/div&gt;
&lt;div align="justify"&gt;&lt;strong&gt;&lt;em&gt;Implementaci&amp;oacute;n del flujo con SharePoint Designer 2010&lt;/em&gt;&lt;/strong&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div align="justify"&gt;Exportamos el flujo de trabajo a trav&amp;eacute;s de la opci&amp;oacute;n Exportar disponible en la pesta&amp;ntilde;a Proceso. Esta acci&amp;oacute;n implica que el flujo se exporte en la forma de un archivo vwi que luego importaremos en SharePoint Designer 2010 (SPD 2010).&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div align="justify"&gt;Iniciamos SPD 2010 y abrimos uno de los sitios de trabajo disponibles.&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div align="justify"&gt;Nos vamos a la secci&amp;oacute;n Flujos de trabajo y pulsamos la opci&amp;oacute;n Importar desde Visio disponible en la Ribbon.&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;En la primera ventana del asistente, especificamos la ruta d&amp;oacute;nde se encuentra el flujo de trabajo exportado.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;En la siguiente ventana especificamos el tipo de flujo de trabajo a crear. Tenemos dos opciones:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;De lista, es decir, el flujo se vincula desde el inicio a la lista. &lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Reutilizable, es decir, podemos elegir entre vincularlo a un tipo de contenido concreto o no.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div align="center"&gt;
&lt;table align="center" width="750" cellpadding="2" cellspacing="0" border="0"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td width="250" valign="top"&gt;&lt;a href="http://www.ciin.es/imagenes/SharePoint2010Novedadesenlosflujosdetrab_B3EE/image_8.png"&gt;&lt;img height="86" width="244" src="http://www.ciin.es/imagenes/SharePoint2010Novedadesenlosflujosdetrab_B3EE/image_thumb_8.png" alt="image" border="0" title="image" style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" /&gt;&lt;/a&gt; &lt;/td&gt;
&lt;td width="250" valign="top"&gt;&lt;a href="http://www.ciin.es/imagenes/SharePoint2010Novedadesenlosflujosdetrab_B3EE/image_9.png"&gt;&lt;img height="174" width="244" src="http://www.ciin.es/imagenes/SharePoint2010Novedadesenlosflujosdetrab_B3EE/image_thumb_9.png" alt="image" border="0" title="image" style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" /&gt;&lt;/a&gt; &lt;/td&gt;
&lt;td width="250" valign="top"&gt;&lt;a href="http://www.ciin.es/imagenes/SharePoint2010Novedadesenlosflujosdetrab_B3EE/image_10.png"&gt;&lt;img height="174" width="244" src="http://www.ciin.es/imagenes/SharePoint2010Novedadesenlosflujosdetrab_B3EE/image_thumb_10.png" alt="image" border="0" title="image" style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" /&gt;&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Pulsamos finalizar para concluir el asistente y a continuaci&amp;oacute;n se muestra el dise&amp;ntilde;ador de flujos de trabajo de SPD 2010. &lt;/li&gt;
&lt;li&gt;
&lt;div align="justify"&gt;A&amp;ntilde;adimos un par&amp;aacute;metro al flujo de trabajo a trav&amp;eacute;s de la opci&amp;oacute;n Par&amp;aacute;metros de formulario de inicio. Este par&amp;aacute;metro lo configuramos de tipo S&amp;iacute;/No. Especificamos como valor predeterminado S&amp;iacute;.&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div align="justify"&gt;Lo siguiente que haremos es configurar las acciones y condiciones que forman parte del flujo de trabajo. Para la condici&amp;oacute;n, pulsamos sobre el enlace Valor y especificamos que vamos a utilizar para la comparaci&amp;oacute;n el par&amp;aacute;metro que acabamos de crear. A&amp;ntilde;adimos como operador de comparaci&amp;oacute;n Es igual a y como valor S&amp;iacute;.&amp;nbsp;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div align="center"&gt;
&lt;table align="center" width="750" cellpadding="2" cellspacing="0" border="0"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td width="250" valign="top"&gt;&lt;a href="http://www.ciin.es/imagenes/SharePoint2010Novedadesenlosflujosdetrab_B3EE/image_11.png"&gt;&lt;img height="92" width="244" src="http://www.ciin.es/imagenes/SharePoint2010Novedadesenlosflujosdetrab_B3EE/image_thumb_11.png" alt="image" border="0" title="image" style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" /&gt;&lt;/a&gt; &lt;/td&gt;
&lt;td width="250" valign="top"&gt;&lt;a href="http://www.ciin.es/imagenes/SharePoint2010Novedadesenlosflujosdetrab_B3EE/image_12.png"&gt;&lt;img height="98" width="244" src="http://www.ciin.es/imagenes/SharePoint2010Novedadesenlosflujosdetrab_B3EE/image_thumb_12.png" alt="image" border="0" title="image" style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" /&gt;&lt;/a&gt; &lt;/td&gt;
&lt;td width="250" valign="top"&gt;&lt;a href="http://www.ciin.es/imagenes/SharePoint2010Novedadesenlosflujosdetrab_B3EE/image_13.png"&gt;&lt;img height="105" width="244" src="http://www.ciin.es/imagenes/SharePoint2010Novedadesenlosflujosdetrab_B3EE/image_thumb_13.png" alt="image" border="0" title="image" style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" /&gt;&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div align="justify"&gt;Configuramos cada una de las acciones Registrar en historial con los siguientes mensajes (Notar como podemos a&amp;ntilde;adir campos de la lista o del flujo de trabajo en el mensaje):&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Si es un anuncio importante. &lt;/li&gt;
&lt;li&gt;No es un anuncio importante. &lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Finalizadas estas configuraciones, el flujo de trabajo deber&amp;iacute;a tener el siguiente aspecto que se muestra m&amp;aacute;s abajo. &lt;/li&gt;
&lt;li&gt;A trav&amp;eacute;s del bot&amp;oacute;n Buscar errores nos aseguramos que el flujo de trabajo est&amp;aacute; correctamente parametrizado. &lt;/li&gt;
&lt;li&gt;Finalmente, publicamos el flujo de trabajo a trav&amp;eacute;s del bot&amp;oacute;n Publicar y comprobamos que funciona como se espera. &lt;/li&gt;
&lt;/ul&gt;
&lt;div align="center"&gt;
&lt;table align="center" width="750" cellpadding="2" cellspacing="0" border="0"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td width="250" valign="top"&gt;&lt;a href="http://www.ciin.es/imagenes/SharePoint2010Novedadesenlosflujosdetrab_B3EE/image_14.png"&gt;&lt;img height="92" width="244" src="http://www.ciin.es/imagenes/SharePoint2010Novedadesenlosflujosdetrab_B3EE/image_thumb_14.png" alt="image" border="0" title="image" style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" /&gt;&lt;/a&gt; &lt;/td&gt;
&lt;td width="250" valign="top"&gt;&lt;a href="http://www.ciin.es/imagenes/SharePoint2010Novedadesenlosflujosdetrab_B3EE/image_15.png"&gt;&lt;img height="99" width="244" src="http://www.ciin.es/imagenes/SharePoint2010Novedadesenlosflujosdetrab_B3EE/image_thumb_15.png" alt="image" border="0" title="image" style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" /&gt;&lt;/a&gt; &lt;/td&gt;
&lt;td width="250" valign="top"&gt;&lt;a href="http://www.ciin.es/imagenes/SharePoint2010Novedadesenlosflujosdetrab_B3EE/image_16.png"&gt;&lt;img height="98" width="244" src="http://www.ciin.es/imagenes/SharePoint2010Novedadesenlosflujosdetrab_B3EE/image_thumb_16.png" alt="image" border="0" title="image" style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" /&gt;&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div align="justify"&gt;Nos vamos a nuestro sitio y navegamos hasta la lista a la que hemos vinculado el flujo de trabajo. A trav&amp;eacute;s del men&amp;uacute;&amp;nbsp; contextual de uno de los elementos de la lista, pulsamos la opci&amp;oacute;n Flujos de trabajo.&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div align="justify"&gt;A continuaci&amp;oacute;n se muestra la p&amp;aacute;gina con los flujos de trabajo asociados a la lista. Hacemos clic en el flujo de trabajo que hemos creado desde SPD 2010.&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div align="justify"&gt;Lo siguiente que se muestra es el formulario de inicio del flujo. Lo iniciamos pulsando el bot&amp;oacute;n Iniciar.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p align="justify"&gt;&lt;strong&gt;&lt;em&gt;Prueba del flujo de trabajo en un sitio de SharePoint 2010&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;div align="center"&gt;
&lt;table align="center" width="750" cellpadding="2" cellspacing="0" border="0"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td width="250" valign="top"&gt;&lt;a href="http://www.ciin.es/imagenes/SharePoint2010Novedadesenlosflujosdetrab_B3EE/image_17.png"&gt;&lt;img height="95" width="244" src="http://www.ciin.es/imagenes/SharePoint2010Novedadesenlosflujosdetrab_B3EE/image_thumb_17.png" alt="image" border="0" title="image" style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" /&gt;&lt;/a&gt; &lt;/td&gt;
&lt;td width="250" valign="top"&gt;&lt;a href="http://www.ciin.es/imagenes/SharePoint2010Novedadesenlosflujosdetrab_B3EE/image_18.png"&gt;&lt;img height="88" width="244" src="http://www.ciin.es/imagenes/SharePoint2010Novedadesenlosflujosdetrab_B3EE/image_thumb_18.png" alt="image" border="0" title="image" style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" /&gt;&lt;/a&gt; &lt;/td&gt;
&lt;td width="250" valign="top"&gt;&lt;a href="http://www.ciin.es/imagenes/SharePoint2010Novedadesenlosflujosdetrab_B3EE/image_19.png"&gt;&lt;img height="67" width="244" src="http://www.ciin.es/imagenes/SharePoint2010Novedadesenlosflujosdetrab_B3EE/image_thumb_19.png" alt="image" border="0" title="image" style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" /&gt;&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div align="justify"&gt;Despu&amp;eacute;s de pulsar el bot&amp;oacute;n Iniciar, somos redirigidos de nuevo a la Lista inicial y veremos que dispone de una columna m&amp;aacute;s en la que se visualiza el estado de ejecuci&amp;oacute;n del flujo de trabajo. Si pinchamos sobre el enlace relativo a ese estado, seremos redirigidos a la p&amp;aacute;gina de estado del flujo de trabajo en la que podremos comprobar que el mensaje esperado se ha escrito en la lista de historial.&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;En el caso de SharePoint Server, hay algunas capacidades adicionales a tener en cuenta: 
&lt;ul&gt;
&lt;li&gt;Los formularios que se generan son de Infopath 2010 y se visualizar&amp;aacute;n en el navegador gracias a Infopath Forms Services. &lt;/li&gt;
&lt;li&gt;Podemos a&amp;ntilde;adir la caracter&amp;iacute;stica de visualizaci&amp;oacute;n de la ejecuci&amp;oacute;n del flujo de trabajo. En este caso os muestro como se visualizar&amp;iacute;a un workflow de sitio similar al que hemos creado con anterioridad.&amp;nbsp;&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div align="center"&gt;
&lt;table align="center" width="750" cellpadding="2" cellspacing="0" border="0"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td width="250" valign="top"&gt;&lt;a href="http://www.ciin.es/imagenes/SharePoint2010Novedadesenlosflujosdetrab_B3EE/image_20.png"&gt;&lt;img height="93" width="244" src="http://www.ciin.es/imagenes/SharePoint2010Novedadesenlosflujosdetrab_B3EE/image_thumb_20.png" alt="image" border="0" title="image" style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" /&gt;&lt;/a&gt; &lt;/td&gt;
&lt;td width="250" valign="top"&gt;&lt;a href="http://www.ciin.es/imagenes/SharePoint2010Novedadesenlosflujosdetrab_B3EE/image_21.png"&gt;&lt;img height="108" width="244" src="http://www.ciin.es/imagenes/SharePoint2010Novedadesenlosflujosdetrab_B3EE/image_thumb_21.png" alt="image" border="0" title="image" style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" /&gt;&lt;/a&gt; &lt;/td&gt;
&lt;td width="250" valign="top"&gt;&lt;a href="http://www.ciin.es/imagenes/SharePoint2010Novedadesenlosflujosdetrab_B3EE/image_22.png"&gt;&lt;img height="140" width="244" src="http://www.ciin.es/imagenes/SharePoint2010Novedadesenlosflujosdetrab_B3EE/image_thumb_22.png" alt="image" border="0" title="image" style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" /&gt;&lt;/a&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="250" valign="top"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td width="250" valign="top"&gt;&lt;a href="http://www.ciin.es/imagenes/SharePoint2010Novedadesenlosflujosdetrab_B3EE/image_23.png"&gt;&lt;img height="160" width="244" src="http://www.ciin.es/imagenes/SharePoint2010Novedadesenlosflujosdetrab_B3EE/image_thumb_23.png" alt="image" border="0" title="image" style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" /&gt;&lt;/a&gt; &lt;/td&gt;
&lt;td width="250" valign="top"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p&gt;Y hasta aqu&amp;iacute; llega este tercer post sobre las novedades en lo que a trabajo con flujos de trabajo se refiere en plataforma SharePoint 2010.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=166849" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/ciin/archive/tags/SharePoint+2010/default.aspx">SharePoint 2010</category><category domain="http://geeks.ms/blogs/ciin/archive/tags/SharePoint+Foundation+2010/default.aspx">SharePoint Foundation 2010</category></item><item><title>Más rápido con Visual Studio 2010. Depuración colaborativa</title><link>http://geeks.ms/blogs/adiazmartin/archive/2010/02/07/m-225-s-r-225-pido-con-visual-studio-2010-depuraci-243-n-colaborativa.aspx</link><pubDate>Sun, 07 Feb 2010 13:55:05 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:166823</guid><dc:creator>Alberto Diaz Martin</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Cuantas veces le hemos enviado un bug a otro desarrollador y no poder volver reproducirlo. El equipo de Visual Studio nos quiere ayudar con estos problemillas. Una de las nuevas funcionalidades que tenemos es la posibilidad de crear depuraciones en colaboración. Os pongo un ejemplo y lo explico.&lt;/p&gt;  &lt;p&gt;&lt;img style="display:block;float:none;margin-left:auto;margin-right:auto;" src="http://zjcbeq.bay.livefilestore.com/y1pUsVlrav9BFfV7I9rHjLKJ0rS4WZyLq8jkqxGf6tOKUKjcARM-acqaRmyGrmYkh4Tus-RjTvOX1s612VkmJ38ZY63cHzpWXsB/SharedDebugging_1.jpg" alt="" /&gt;&lt;/p&gt;  &lt;p&gt;Cuando el &lt;strong&gt;Desarrollador 1&lt;/strong&gt; le envía el error al &lt;strong&gt;Desarrollador 2&lt;/strong&gt;, se pierde mucha información que el &lt;strong&gt;Desarrollador 1&lt;/strong&gt; ya ha investigado y que el &lt;strong&gt;Desarrollador 2&lt;/strong&gt; tiene que volver a encontrar e investigar.&lt;/p&gt;  &lt;p&gt;Veamos cómo podemos mejorar este proceso utilizando Visual Studio 2010. El &lt;strong&gt;Desarrollador 1&lt;/strong&gt; depurando su código encuentra que puede existir un error en la llamada a un método de un componente del &lt;strong&gt;Desarrollador 2&lt;/strong&gt;. &lt;/p&gt;  &lt;p&gt;&lt;img style="display:block;float:none;margin-left:auto;margin-right:auto;" src="http://zjcbeq.bay.livefilestore.com/y1pJ7RifUNxX6ldHuumg9DWTQtakEM0RAEygVPRot4odbDyLPJCOxBI9ATX_jrJ5Kw_R_rEP0W-Wb2l391AG0Deau099rJlgvWm/SharedDebugging_3.jpg" width="640" height="321" alt="" /&gt;&lt;/p&gt;  &lt;p&gt;En este punto, el &lt;strong&gt;Desarrollador 1&lt;/strong&gt; debería de enviar el error al &lt;strong&gt;Desarrollador 2&lt;/strong&gt;, pero en vez de enviárselo y que el &lt;strong&gt;Desarrollador 2&lt;/strong&gt; tenga que volver a realizar la depuración, generará una serie de información de depuración que se le envía al &lt;strong&gt;Desarrollador 2&lt;/strong&gt; con el error. El &lt;strong&gt;Desarrollador 1&lt;/strong&gt; comparte su entorno de depuración con el &lt;strong&gt;Desarrollador 2&lt;/strong&gt;. Lo primero de todo es exportar el breakpoint actual para que el &lt;strong&gt;Desarrollador 2&lt;/strong&gt; sepa dónde tiene que empezar la depuración del error.&lt;/p&gt;  &lt;p&gt;&lt;img style="display:block;float:none;margin-left:auto;margin-right:auto;" src="http://zjcbeq.bay.livefilestore.com/y1pd6CyUhTmTyJqUmZp4le1uw300LyvsMU-hLQsrWQRhPG_ICvQ44351G6hdYybQaX7yWor4X5bZeaFabZxuRtU54lOxMHvEfuJ/SharedDebugging_4.jpg" alt="" /&gt;&lt;/p&gt;  &lt;p&gt;Lo siguiente es compartir la información que el &lt;strong&gt;Desarrollador 2&lt;/strong&gt; debe de inspeccionar al depurar. Para hacer esto, primero debemos anclar la variable que causa el error y exportar esos datos de depuración. Incluso podemos añadirle comentarios a la variable para que lo lea el &lt;strong&gt;Desarrollador 2&lt;/strong&gt;.&lt;/p&gt;  &lt;p&gt;&lt;img style="display:block;float:none;margin-left:auto;margin-right:auto;" src="http://zjcbeq.bay.livefilestore.com/y1pOcj_LQacXF0c4fe0x8QRHaIe-CkVo3-Kz-cAosUcDdGnTS4RGGjYzv3BY3EVZDi5A2vTMISAKthaJLRYcNzohdtDYyF3a8Te/SharedDebugging_5.jpg" width="640" height="321" alt="" /&gt;&lt;/p&gt;  &lt;p&gt;Ahora, el &lt;strong&gt;Desarrollador 2&lt;/strong&gt; puede continuar con la depuración del &lt;strong&gt;Desarrollador 1 &lt;/strong&gt;importando la información de depuración que se le ha enviado. &lt;/p&gt;  &lt;p&gt;&lt;img style="display:block;float:none;margin-left:auto;margin-right:auto;" src="http://zjcbeq.bay.livefilestore.com/y1pE4Gw7pFqF7pedxAEUKgOsQLnXoolWTlG605bQUF1ehi4lmTHFgb5MYEMHxJjp5gmFi9IKutcpTlDvf35pdBVcH7QetDpsin2/SharedDebugging_2.jpg" alt="" /&gt;&lt;/p&gt;  &lt;p&gt;Cuando el &lt;strong&gt;Desarrollador 2 &lt;/strong&gt;importa el entorno de depuración, puede continuar con el mismo, incluso con los valores de las variables y los comentarios que se han exportado. &lt;/p&gt;  &lt;p&gt;Este proceso de Depuración Colaborativa nos permite mejorar la integración del equipo de Testers y que estos sean capaces de enviar errores e información de calidad para poder reproducirlos y corregirlos. Aunque no hayamos hablado de él, tenemos que tener en cuenta el nuevo proceso de depuración de Visual Studio 2010 llamado &lt;strong&gt;Intellitrace&lt;/strong&gt;. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Intellitrace&lt;/strong&gt; nos permite mantener un histórico de nuestra depuración para poder navegar hacia atrás en nuestro código y visualizar el estado de este. Espero poder escribir un artículo en breve sobre él explicando su uso y sus ventajas (por ejemplo, si estamos probando nuestra aplicación y se produce una excepción, no tenemos que poner un breakpoint y volver a empezar hasta llegar a él para depurar el error, si tenemos habilitado &lt;strong&gt;Intellitrace&lt;/strong&gt; automáticamente podremos depurar la excepción cuando esta se produzca).&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Saludos a todos…&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=166823" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/adiazmartin/archive/tags/Desarrollo/default.aspx">Desarrollo</category><category domain="http://geeks.ms/blogs/adiazmartin/archive/tags/Visual+Studio+2010/default.aspx">Visual Studio 2010</category></item><item><title>Objetos dinámicos en .NET 4.0: La clase ExpandoObject</title><link>http://geeks.ms/blogs/jalarcon/archive/2010/02/07/objetos-din-225-micos-en-net-4-0-la-clase-expandoobject.aspx</link><pubDate>Sun, 07 Feb 2010 12:06:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:166821</guid><dc:creator>José M. Alarcón Aguín</dc:creator><slash:comments>1</slash:comments><description>.NET 4.0 dispone de soporte para tiempo de ejecuci&amp;oacute;n de lenguajes din&amp;aacute;micos, el DLR (Dynamic Language Runtime). El prop&amp;oacute;sito del DLR es permitir que los lenguajes de tipo din&amp;aacute;mico -como PHP, JavaScript, Ruby, Python, Lisp o Groovy, por citar unos cuantos- puedan ejecutarse en la plataforma y adem&amp;aacute;s interactuar con c&amp;oacute;digo escrito en un lenguaje .NET -como C# o VB. El DLR introduce en el framework una serie de clases din&amp;aacute;micas de comportamiento din&amp;aacute;mico...(&lt;a href="http://geeks.ms/blogs/jalarcon/archive/2010/02/07/objetos-din-225-micos-en-net-4-0-la-clase-expandoobject.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://geeks.ms/aggbug.aspx?PostID=166821" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/jalarcon/archive/tags/Programaci_26002300_243_3B00_n/default.aspx">Programaci&amp;#243;n</category><category domain="http://geeks.ms/blogs/jalarcon/archive/tags/Visual+Studio/default.aspx">Visual Studio</category></item><item><title>Inyección de dependecias e Inversión de control</title><link>http://geeks.ms/blogs/gtorres/archive/2010/02/07/inyeccion-de-dependecias-e-inversion-de-control-con-structuremap.aspx</link><pubDate>Sun, 07 Feb 2010 00:40:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:166588</guid><dc:creator>Gisela</dc:creator><slash:comments>15</slash:comments><description>&lt;p&gt;La verdad, no soy consciente de cu&amp;aacute;ntos son los desarrolladores que conocen el significado de Inyecci&amp;oacute;n de Dependencias (Dependency Injection) o Inversi&amp;oacute;n de control (Inversion of Control). Para ser sincera, nunca trabaj&amp;eacute; con ello en ning&amp;uacute;n proyecto real pero si he intentado recopilar informaci&amp;oacute;n y conceptos para poder aplicarlos a mis proyectos personales.&lt;/p&gt;
&lt;p&gt;Generalmente, cuando tenemos una clase que depende de otras para ciertas acciones, necesitamos inicializar instancias de las mismas para poder utilizarlas posteriormente. En ocasiones, una de las alternativas puede ser crear un objeto de dichas clases de forma privada e inicializarlas, utilizando el constructor de la clase principal.&lt;/p&gt;
&lt;p&gt;Si vemos estas acciones desde el punto de vista de la Inyecci&amp;oacute;n de Dependencias y la Inversi&amp;oacute;n de Control, no ser&amp;iacute;a la forma m&amp;aacute;s &amp;oacute;ptima debido a que la &lt;b&gt;clase que sufre estas dependencias no deber&amp;iacute;a ser la responsable de la creaci&amp;oacute;n de las mismas&lt;/b&gt;.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&amp;iquest;QU&amp;Eacute; CONSEGUIMOS?&lt;/b&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Desacoplamiento&lt;/b&gt;.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Mejora la posibilidad de testeo de la aplicaci&amp;oacute;n&lt;/b&gt;.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Mejor mantenimiento &lt;/b&gt;a la hora de realizar cambios de los componentes, gracias a la &lt;b&gt;modularidad&lt;/b&gt;.&lt;/li&gt;
&lt;li&gt;[...]&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ambos conceptos est&amp;aacute;n tan ligados que, en ocasiones, no se hace distinci&amp;oacute;n. Se utiliza el concepto &lt;b&gt;Inversi&amp;oacute;n de Control&lt;/b&gt; para delegar en otro componente, un framework por ejemplo, la responsabilidad de crear las instancias necesarias en lugar de crearlas nosotros mismos. Por otro lado, la &lt;b&gt;Inyecci&amp;oacute;n de Dependencias&lt;/b&gt; es el t&amp;eacute;rmino utilizado cuando una clase depende de otra y, a trav&amp;eacute;s del constructor generalmente acepta un par&amp;aacute;metro del tipo del cual depende.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Para llevar a cabo el patr&amp;oacute;n de dise&amp;ntilde;o de Inyecci&amp;oacute;n de Dependencias, es necesario el uso de interfaces y, lo m&amp;aacute;s &amp;oacute;ptimo ser&amp;iacute;a utilizar alguno de los frameworks disponibles para llevar a cabo la Inversi&amp;oacute;n de Control. Algunos de estos frameworks son: &lt;a target="_blank" href="http://www.springframework.net/"&gt;Spring.NET&lt;/a&gt;,&amp;nbsp; &lt;a target="_blank" href="http://www.castleproject.org/container/index.html"&gt;Windsor Container&lt;/a&gt;, &lt;a target="_blank" href="http://structuremap.sourceforge.net/"&gt;StructureMap&lt;/a&gt;, &lt;a href="http://www.pnpguidance.net/Category/Unity.aspx" target="_blank"&gt;Unity&lt;/a&gt;, etc&amp;eacute;tera.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;EJEMPLO A EVITAR&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Por ver un ejemplo, supongamos que tenemos el siguiente c&amp;oacute;digo:&lt;/p&gt;
&lt;div style="border:1px solid silver;margin:20px 0px 10px;padding:4px;overflow:auto;background-color:#f4f4f4;font-family:&amp;#39;Courier New&amp;#39;,Courier,Monospace;font-size:8pt;line-height:12pt;cursor:text;max-height:900px;width:97.5%;direction:ltr;text-align:left;" id="codeSnippetWrapper"&gt;
&lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;background-color:#f4f4f4;font-family:&amp;#39;Courier New&amp;#39;,Courier,Monospace;font-size:8pt;line-height:12pt;color:black;width:100%;direction:ltr;text-align:left;" id="codeSnippet"&gt;&lt;span style="color:#0000ff;"&gt;using&lt;/span&gt; System.Web.Mvc;&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;using&lt;/span&gt; IoC.Models;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;namespace&lt;/span&gt; IoC.Controllers&lt;br /&gt;{&lt;br /&gt;    [HandleError]&lt;br /&gt;    &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;class&lt;/span&gt; HomeController : Controller&lt;br /&gt;    {&lt;br /&gt;        &lt;span style="color:#0000ff;"&gt;private&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;readonly&lt;/span&gt; ITwitterService _twitterService;&lt;br /&gt;        &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; HomeController()&lt;br /&gt;        {&lt;br /&gt;            _twitterService = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; TwitterService();&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; ActionResult Index()&lt;br /&gt;        {&lt;br /&gt;            &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; View(_twitterService.FetchTweets());&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;Tenemos un controlador, en una aplicaci&amp;oacute;n ASP.NET MVC, donde estamos haciendo uso de una librer&amp;iacute;a que conecta con Twitter. Cuando se solicita la acci&amp;oacute;n Index de este controlador, el controlador se crea, a trav&amp;eacute;s del constructor inicializa la variable _twitterService y realiza la llamada a FetchTweets. Esto funciona sin problemas, pero supone un inconveniente a la hora de realizar pruebas unitarias.&lt;br /&gt;&lt;br /&gt; Por otro lado, si el d&amp;iacute;a de ma&amp;ntilde;ana queremos, por ejemplo, utilizar otra clase que implemente ITwitterService bien porque hemos cambiado de librer&amp;iacute;a, porque la forma de trabajar con Twitter es totalmente distinta, etc&amp;eacute;tera, deber&amp;iacute;amos modificar a su vez este controlador(es) para modificar en el constructor la clase que implementa la interfaz a partir de ahora. Este es un caso bien simple pero &amp;iquest;Y si nuestros controladores son dependientes de m&amp;aacute;s de una clase y las mismas est&amp;aacute;n en constante revisi&amp;oacute;n, actualizaci&amp;oacute;n, modificaci&amp;oacute;n, etc&amp;eacute;tera? La soluci&amp;oacute;n es bien simple:&lt;/p&gt;
&lt;div style="border:1px solid silver;margin:20px 0px 10px;padding:4px;overflow:auto;background-color:#f4f4f4;font-family:&amp;#39;Courier New&amp;#39;,Courier,Monospace;font-size:8pt;line-height:12pt;cursor:text;max-height:900px;width:97.5%;direction:ltr;text-align:left;" id="codeSnippetWrapper"&gt;
&lt;pre style="border-style:none;margin:0em;padding:0px;overflow:visible;background-color:#f4f4f4;font-family:&amp;#39;Courier New&amp;#39;,Courier,Monospace;font-size:8pt;line-height:12pt;color:black;width:100%;direction:ltr;text-align:left;" id="codeSnippet"&gt;&lt;span style="color:#0000ff;"&gt;using&lt;/span&gt; System.Web.Mvc;&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;using&lt;/span&gt; IoC.Models;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;namespace&lt;/span&gt; IoC.Controllers&lt;br /&gt;{&lt;br /&gt;    [HandleError]&lt;br /&gt;    &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;class&lt;/span&gt; HomeController : Controller&lt;br /&gt;    {&lt;br /&gt;        &lt;span style="color:#0000ff;"&gt;private&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;readonly&lt;/span&gt; ITwitterService _twitterService;&lt;br /&gt;        &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; HomeController(&lt;b&gt;ITwitterService twitterService&lt;/b&gt;)&lt;br /&gt;        {&lt;br /&gt;            _twitterService = &lt;b&gt;twitterService&lt;/b&gt;;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; ActionResult Index()&lt;br /&gt;        {&lt;br /&gt;            &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; View(_twitterService.FetchTweets());&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;Gracias a la inyecci&amp;oacute;n de dependencias, liberamos al controlador de la carga de generar las instancias que necesita, lo abstraemos del tipo de clase que implementa la interfaz en este momento y conseguimos modularizar la aplicaci&amp;oacute;n.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;PRUEBAS UNITARIAS&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;Si&amp;nbsp;quisi&amp;eacute;ramos&amp;nbsp;hacer un test, por ejemplo, que comprobara que al llamar a la acci&amp;oacute;n Index el m&amp;eacute;todo FetchTweets es llamado, sin realizar la llamada real a Twitter e incluso sin hacer uso de la conexi&amp;oacute;n que esto requiere a&amp;nbsp;Internet,&amp;nbsp;podr&amp;iacute;amos&amp;nbsp;hacerlo de la siguiente manera:&lt;/p&gt;
&lt;div id="codeSnippetWrapper" style="border:1px solid silver;margin:20px 0px 10px;padding:4px;overflow:auto;background-color:#f4f4f4;font-family:&amp;#39;Courier New&amp;#39;,Courier,Monospace;font-size:8pt;line-height:12pt;cursor:text;max-height:900px;width:97.5%;direction:ltr;text-align:left;"&gt;
&lt;pre id="codeSnippet" style="border-style:none;margin:0em;padding:0px;overflow:visible;background-color:#f4f4f4;font-family:&amp;#39;Courier New&amp;#39;,Courier,Monospace;font-size:8pt;line-height:12pt;color:black;width:100%;direction:ltr;text-align:left;"&gt;&lt;span style="color:#0000ff;"&gt;using&lt;/span&gt; IoC.Controllers;&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;using&lt;/span&gt; IoC.Models;&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;using&lt;/span&gt; Microsoft.VisualStudio.TestTools.UnitTesting;&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;using&lt;/span&gt; Rhino.Mocks;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;namespace&lt;/span&gt; IoC.Tests.Controllers&lt;br /&gt;{&lt;br /&gt;    [TestClass]&lt;br /&gt;    &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;class&lt;/span&gt; HomeControllerTest&lt;br /&gt;    {&lt;br /&gt;        [TestMethod]&lt;br /&gt;        &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; HomeController_AlLlamarALaAccionIndex_FetchTweetsEsLlamado()&lt;br /&gt;        {&lt;br /&gt;            &lt;span style="color:#008000;"&gt;//Arrange&lt;/span&gt;&lt;br /&gt;            &lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; mockTwitterService = MockRepository.GenerateMock&amp;lt;TwitterService&amp;gt;();&lt;br /&gt;            mockTwitterService.Stub(m =&amp;gt; m.FetchTweets()).Return(&lt;span style="color:#0000ff;"&gt;null&lt;/span&gt;);&lt;br /&gt;            &lt;span style="color:#0000ff;"&gt;var&lt;/span&gt; homeController = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; HomeController(mockTwitterService);&lt;br /&gt;            &lt;br /&gt;            &lt;span style="color:#008000;"&gt;//Act&lt;/span&gt;&lt;br /&gt;            homeController.Index();&lt;br /&gt;&lt;br /&gt;            &lt;span style="color:#008000;"&gt;//Assert&lt;/span&gt;&lt;br /&gt;            mockTwitterService.AssertWasCalled(m =&amp;gt; m.FetchTweets());&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;&lt;b&gt;Nota: En este ejemplo he utilizado la librer&amp;iacute;a &lt;a target="_blank" title="Descarga RhinoMocks" href="http://www.ayende.com/projects/rhino-mocks/downloads.aspx"&gt;RhinoMocks&lt;/a&gt; para crear la prueba unitaria.&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Esto es realmente importante si queremos hacer pruebas unitarias de la aplicaci&amp;oacute;n, pero tambi&amp;eacute;n es cierto que se nos presenta el siguiente problema &lt;b&gt;&amp;iquest;Cada vez que llame a HomeController voy a tener que encargarme y asegurarme en cada caso de que reciba una instancia de las interfaces que solicita el constructor? &lt;/b&gt;Aqu&amp;iacute; es donde entra en juego IoC y los numerosos frameworks existentes para este rol.&lt;br /&gt;&lt;br /&gt;Para ver un peque&amp;ntilde;o ejemplo de c&amp;oacute;mo podr&amp;iacute;amos delegar esta funcionalidad en uno de los frameworks que soportan Inversi&amp;oacute;n del Control, voy a utilizar &lt;b&gt;StructureMap&lt;/b&gt; como demostraci&amp;oacute;n. Para descargar la &amp;uacute;ltima versi&amp;oacute;n del framework podemos dirigirnos a este &lt;a target="_blank" href="http://sourceforge.net/projects/structuremap/files/"&gt;enlace&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;CONFIGURANDO STRUCTUREMAP&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;En este ejemplo, vamos a configurar StructureMap de tal forma que sepa c&amp;oacute;mo actuar en el caso de requerir una instancia para una interfaz de tipo &lt;b&gt;ITwitterService&lt;/b&gt;. Para ello, me he creado la siguiente clase:&lt;/p&gt;
&lt;div id="codeSnippetWrapper" style="border:1px solid silver;margin:20px 0px 10px;padding:4px;overflow:auto;background-color:#f4f4f4;font-family:&amp;#39;Courier New&amp;#39;,Courier,Monospace;font-size:8pt;line-height:12pt;cursor:text;max-height:500px;width:97.5%;direction:ltr;text-align:left;"&gt;
&lt;pre id="codeSnippet" style="border-style:none;margin:0em;padding:0px;overflow:visible;background-color:#f4f4f4;font-family:&amp;#39;Courier New&amp;#39;,Courier,Monospace;font-size:8pt;line-height:12pt;color:black;width:100%;direction:ltr;text-align:left;"&gt;&lt;span style="color:#0000ff;"&gt;using&lt;/span&gt; IoC.Models;&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;using&lt;/span&gt; StructureMap;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;namespace&lt;/span&gt; IoC.StructureMapConfiguration&lt;br /&gt;{&lt;br /&gt;    &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;static&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;class&lt;/span&gt; BootStrapper&lt;br /&gt;    {&lt;br /&gt;        &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;static&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; SetupContainer()&lt;br /&gt;        {&lt;br /&gt;            ObjectFactory.Configure(s =&amp;gt; s.For&amp;lt;ITwitterService&amp;gt;().Use&amp;lt;TwitterService&amp;gt;());&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;/pre&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;p&gt;En una sola l&amp;iacute;nea, le estoy indicando que para la interfaz ITwitterService, debemos usar una instancia de la clase TwitterService. La magia de todo esto es que, si el d&amp;iacute;a de ma&amp;ntilde;ana esta interfaz es implementada por otra clase, y adem&amp;aacute;s esta interfaz es usada en numerosos sitios de nuestra aplicaci&amp;oacute;n, solamente debemos modificar esta l&amp;iacute;nea para que la clase que la implementa comience a servirse como dependencia en los casos que lo requiera.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;CONTROLADORES ASP.NET MVC YSTRUCTUREMAP&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Por otro lado, si lo que queremos es trabajar con ASP.NET MVC, debemos realizar una serie de cambios: Cuando nosotros hacemos una petici&amp;oacute;n en una aplicaci&amp;oacute;n con ASP.NET MVC, la clase &lt;b&gt;ControllerBuilder &lt;/b&gt;genera de forma autom&amp;aacute;tica el controlador solicitado, se despacha la petici&amp;oacute;n y el controlador finaliza. Para poder utilizar las propiedades de StructureMap, necesitamos crear una clase que herede de la factor&amp;iacute;a de controladores. De esta manera, controlaremos el momento en el cual se solicita una instancia de un controlador y, si este tiene dependencias, poder administrarlas con la configuraci&amp;oacute;n realizada anteriormente para StructureMap en la clase BootStraper.&lt;/p&gt;
&lt;div id="codeSnippetWrapper" style="border:1px solid silver;margin:20px 0px 10px;padding:4px;overflow:auto;background-color:#f4f4f4;font-family:&amp;#39;Courier New&amp;#39;,Courier,Monospace;font-size:8pt;line-height:12pt;cursor:text;max-height:500px;width:97.5%;direction:ltr;text-align:left;"&gt;
&lt;pre id="codeSnippet" style="border-style:none;margin:0em;padding:0px;overflow:visible;background-color:#f4f4f4;font-family:&amp;#39;Courier New&amp;#39;,Courier,Monospace;font-size:8pt;line-height:12pt;color:black;width:100%;direction:ltr;text-align:left;"&gt;&lt;span style="color:#0000ff;"&gt;using&lt;/span&gt; System;&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;using&lt;/span&gt; System.Web.Mvc;&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;using&lt;/span&gt; System.Web.Routing;&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;using&lt;/span&gt; StructureMap;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;namespace&lt;/span&gt; IoC.StructureMapConfiguration&lt;br /&gt;{&lt;br /&gt;    &lt;span style="color:#0000ff;"&gt;internal&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;class&lt;/span&gt; StructureControllerFactory : DefaultControllerFactory&lt;br /&gt;    {&lt;br /&gt;        &lt;span style="color:#0000ff;"&gt;protected&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;override&lt;/span&gt; IController GetControllerInstance(RequestContext requestContext, Type controllerType)&lt;br /&gt;        {&lt;br /&gt;            &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (controllerType != &lt;span style="color:#0000ff;"&gt;null&lt;/span&gt;)&lt;br /&gt;                &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; ObjectFactory.GetInstance(controllerType) &lt;span style="color:#0000ff;"&gt;as&lt;/span&gt; IController;&lt;br /&gt;&lt;br /&gt;            &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;base&lt;/span&gt;.GetControllerInstance(requestContext, controllerType);&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;/pre&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;p&gt;&lt;b&gt;INICIALIZANDO LA CONFIGURACI&amp;Oacute;N DE STRUCTUREMAP Y ASOCIADO LA NUEVA FACTOR&amp;Iacute;A DE CONTROLADORES&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Para finalizar, necesitamos inicializar tanto la configuraci&amp;oacute;n creada en BootStraper, para que StructureMap reconozca la interfaz especificada, como la asignaci&amp;oacute;n de la nueva factor&amp;iacute;a de controladores a la aplicaci&amp;oacute;n ASP.NET MVC. La mejor ubicaci&amp;oacute;n para este caso concreto, podr&amp;iacute;a ser el archivo &lt;b&gt;Global.asax.&lt;/b&gt;&lt;/p&gt;
&lt;div id="codeSnippetWrapper" style="border:1px solid silver;margin:20px 0px 10px;padding:4px;overflow:auto;background-color:#f4f4f4;font-family:&amp;#39;Courier New&amp;#39;,Courier,Monospace;font-size:8pt;line-height:12pt;cursor:text;max-height:900px;width:97.5%;direction:ltr;text-align:left;"&gt;
&lt;pre id="codeSnippet" style="border-style:none;margin:0em;padding:0px;overflow:visible;background-color:#f4f4f4;font-family:&amp;#39;Courier New&amp;#39;,Courier,Monospace;font-size:8pt;line-height:12pt;color:black;width:100%;direction:ltr;text-align:left;"&gt;&lt;span style="color:#0000ff;"&gt;using&lt;/span&gt; System.Web.Mvc;&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;using&lt;/span&gt; System.Web.Routing;&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;using&lt;/span&gt; IoC.StructureMapConfiguration;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;namespace&lt;/span&gt; IoC&lt;br /&gt;{&lt;br /&gt;    &lt;span style="color:#008000;"&gt;// Note: For instructions on enabling IIS6 or IIS7 classic mode, &lt;/span&gt;&lt;br /&gt;    &lt;span style="color:#008000;"&gt;// visit http://go.microsoft.com/?LinkId=9394801&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;class&lt;/span&gt; MvcApplication : System.Web.HttpApplication&lt;br /&gt;    {&lt;br /&gt;        &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;static&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; RegisterRoutes(RouteCollection routes)&lt;br /&gt;        {&lt;br /&gt;            routes.IgnoreRoute(&lt;span style="color:#006080;"&gt;&amp;quot;{resource}.axd/{*pathInfo}&amp;quot;&lt;/span&gt;);&lt;br /&gt;&lt;br /&gt;            routes.MapRoute(&lt;br /&gt;                &lt;span style="color:#006080;"&gt;&amp;quot;Default&amp;quot;&lt;/span&gt;,                                              &lt;span style="color:#008000;"&gt;// Route name&lt;/span&gt;&lt;br /&gt;                &lt;span style="color:#006080;"&gt;&amp;quot;{controller}/{action}/{id}&amp;quot;&lt;/span&gt;,                           &lt;span style="color:#008000;"&gt;// URL with parameters&lt;/span&gt;&lt;br /&gt;                &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; { controller = &lt;span style="color:#006080;"&gt;&amp;quot;Home&amp;quot;&lt;/span&gt;, action = &lt;span style="color:#006080;"&gt;&amp;quot;Index&amp;quot;&lt;/span&gt;, id = &lt;span style="color:#006080;"&gt;&amp;quot;&amp;quot;&lt;/span&gt; }  &lt;span style="color:#008000;"&gt;// Parameter defaults&lt;/span&gt;&lt;br /&gt;            );&lt;br /&gt;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span style="color:#0000ff;"&gt;protected&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; Application_Start()&lt;br /&gt;        {&lt;br /&gt;            AreaRegistration.RegisterAllAreas();&lt;br /&gt;&lt;br /&gt;            RegisterRoutes(RouteTable.Routes);&lt;br /&gt;&lt;br /&gt;           &lt;b&gt; &lt;span style="text-decoration:underline;"&gt;BootStrapper.SetupContainer();&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;            &lt;span style="text-decoration:underline;"&gt;ControllerBuilder.Current.SetControllerFactory(&lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; StructureControllerFactory());&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;/pre&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;p&gt;Si arrancamos la aplicaci&amp;oacute;n, comprobar&amp;iacute;amos que efectivamente se crea un controlador con su dependencia y delegamos esta acci&amp;oacute;n gracias a la Inversi&amp;oacute;n de Control.&lt;/p&gt;
&lt;p&gt;Adjunto el &lt;a target="_blank" href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Components.PostAttachments/00.00.16.65.88/IoC-StructureMap-MVC.rar"&gt;proyecto&lt;/a&gt; por si fuera de utilidad.&lt;/p&gt;
&lt;p&gt;&amp;iexcl;Saludos!&lt;/p&gt;
&lt;p style="text-align:right;"&gt;&lt;i&gt;Gracias a &lt;a target="_blank" href="http://hadihariri.com/blogengine/"&gt;Hadi Hariri&lt;/a&gt; por sus ense&amp;ntilde;anzas :)&lt;/i&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=166588" width="1" height="1"&gt;</description><enclosure url="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Components.PostAttachments/00.00.16.65.88/IoC-StructureMap-MVC.rar" length="1746800" type="application/rar" /><category domain="http://geeks.ms/blogs/gtorres/archive/tags/ASP.NET+MVC/default.aspx">ASP.NET MVC</category><category domain="http://geeks.ms/blogs/gtorres/archive/tags/DI/default.aspx">DI</category><category domain="http://geeks.ms/blogs/gtorres/archive/tags/IoC/default.aspx">IoC</category><category domain="http://geeks.ms/blogs/gtorres/archive/tags/StructureMap/default.aspx">StructureMap</category></item><item><title>ADO.NET Entity Framework: creación de aplicaciones N-Capas!</title><link>http://geeks.ms/blogs/ciin/archive/2010/02/06/ado-net-entity-framework-creaci-243-n-de-aplicaciones-n-capas.aspx</link><pubDate>Sat, 06 Feb 2010 22:13:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:166789</guid><dc:creator>Juan Carlos González Martín</dc:creator><slash:comments>1</slash:comments><description>&lt;p align="justify"&gt;Una de las cuestiones que m&amp;aacute;s dudas plantea a la hora de considerar ADO.NET Entity Framework como tecnolog&amp;iacute;a base para abstraernos del acceso a datos en las aplicaciones que vamos a construir es como de f&amp;aacute;cil es construir aplicaciones distribuidas con esta tecnolog&amp;iacute;a. Como siempre, sobre este tema hay algunos recursos en la red que permiten ver un poco de luz y llegar a la conclusi&amp;oacute;n de que f&amp;aacute;cil no es, pero se puede hacer. Aqu&amp;iacute; os dejo una serie de enlaces sobre la creaci&amp;oacute;n de aplicaciones N-Capas con ADO.NET EF.&lt;/p&gt;
&lt;p align="justify"&gt;&lt;strong&gt;&lt;em&gt;N-Capas en EF 1.0&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p align="justify"&gt;La primera versi&amp;oacute;n de EF ten&amp;iacute;a un soporte bastante limitado para la creaci&amp;oacute;n de aplicaciones N-Capas. A&amp;uacute;n as&amp;iacute;, hay varios recursos en la red muy recomendables en torno al tema.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div align="justify"&gt;Actualizaci&amp;oacute;n de datos en aplicaciones N-Capas basadas en EF 1.0 (Fuente: Blog de Cesar de la Torre): &lt;a href="http://community.dynamics.com/blogs/cesardalatorre/comments/9584.aspx" title="http://community.dynamics.com/blogs/cesardalatorre/comments/9584.aspx"&gt;http://community.dynamics.com/blogs/cesardalatorre/comments/9584.aspx&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div align="justify"&gt;Transporte de grafos con EF 1.0:&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://blogs.msdn.com/dsimmons/archive/2008/01/20/entitybag-part-i-goals.aspx"&gt;http://blogs.msdn.com/dsimmons/archive/2008/01/20/entitybag-part-i-goals.aspx&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://blogs.msdn.com/dsimmons/archive/2008/01/20/entitybag-part-ii-modes-and-constructor.aspx"&gt;http://blogs.msdn.com/dsimmons/archive/2008/01/20/entitybag-part-ii-modes-and-constructor.aspx&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://blogs.msdn.com/dsimmons/archive/2008/01/21/entitybag-part-iii-public-surface-and-serialization.aspx"&gt;http://blogs.msdn.com/dsimmons/archive/2008/01/21/entitybag-part-iii-public-surface-and-serialization.aspx&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://blogs.msdn.com/dsimmons/archive/2008/01/22/entitybag-part-iv-contextsnapshot-fields-and-properties.aspx"&gt;http://blogs.msdn.com/dsimmons/archive/2008/01/22/entitybag-part-iv-contextsnapshot-fields-and-properties.aspx&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://blogs.msdn.com/dsimmons/archive/2008/01/23/entitybag-part-v-contexsnapshot-constructing-and-applying.aspx"&gt;http://blogs.msdn.com/dsimmons/archive/2008/01/23/entitybag-part-v-contexsnapshot-constructing-and-applying.aspx&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://blogs.msdn.com/dsimmons/archive/2008/01/24/entitybag-part-vi-relationshipentry.aspx"&gt;http://blogs.msdn.com/dsimmons/archive/2008/01/24/entitybag-part-vi-relationshipentry.aspx&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://blogs.msdn.com/dsimmons/archive/2008/01/28/entitybag-wrap-up-and-future-directions.aspx"&gt;http://blogs.msdn.com/dsimmons/archive/2008/01/28/entitybag-wrap-up-and-future-directions.aspx&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Objetos desconectados en N-Capas: &lt;a href="http://www.sitechno.com/Blog/DisconnectedNTierObjectsUsingEntityFramework.aspx" title="http://www.sitechno.com/Blog/DisconnectedNTierObjectsUsingEntityFramework.aspx"&gt;http://www.sitechno.com/Blog/DisconnectedNTierObjectsUsingEntityFramework.aspx&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;EF POCO Adapter: &lt;a href="http://code.msdn.microsoft.com/EFPocoAdapter/Release/ProjectReleases.aspx?ReleaseId=1580" title="http://code.msdn.microsoft.com/EFPocoAdapter/Release/ProjectReleases.aspx?ReleaseId=1580"&gt;http://code.msdn.microsoft.com/EFPocoAdapter/Release/ProjectReleases.aspx?ReleaseId=1580&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;
&lt;p align="justify"&gt;&lt;strong&gt;&lt;em&gt;Mejoras en EF 4.0&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p align="justify"&gt;La nueva versi&amp;oacute;n de EF va a traer mejoras en lo que a soporte de n-capas se refiere.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div align="justify"&gt;Mejoras en n-capas en EF 4.0:&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div align="justify"&gt;&lt;a href="http://blogs.msdn.com/adonet/archive/2009/05/14/sneak-preview-n-tier-development-with-entity-framework-4-0.aspx" title="http://blogs.msdn.com/adonet/archive/2009/05/14/sneak-preview-n-tier-development-with-entity-framework-4-0.aspx"&gt;http://blogs.msdn.com/adonet/archive/2009/05/14/sneak-preview-n-tier-development-with-entity-framework-4-0.aspx&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div align="justify"&gt;&amp;nbsp;&lt;a href="http://blogs.msdn.com/efdesign/archive/2008/11/20/n-tier-improvements-for-entity-framework.aspx" title="http://blogs.msdn.com/efdesign/archive/2008/11/20/n-tier-improvements-for-entity-framework.aspx"&gt;http://blogs.msdn.com/efdesign/archive/2008/11/20/n-tier-improvements-for-entity-framework.aspx&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div align="justify"&gt;Aspectos a tener en cuenta cuando trabajamos con EF 4.0 en aplicaciones n-capas: &lt;a href="http://thedatafarm.com/blog/data-access/n-tier-methods-in-entity-framework-4-ndash-use-with-care/" title="http://thedatafarm.com/blog/data-access/n-tier-methods-in-entity-framework-4-ndash-use-with-care/"&gt;http://thedatafarm.com/blog/data-access/n-tier-methods-in-entity-framework-4-ndash-use-with-care/&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div align="justify"&gt;Ejemplos de N-Capas con EF 1.0:&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div align="justify"&gt;&lt;a href="http://romiller.com/Default.aspx?tabid=36&amp;amp;EntryID=46" title="http://romiller.com/Default.aspx?tabid=36&amp;amp;EntryID=46"&gt;http://romiller.com/Default.aspx?tabid=36&amp;amp;EntryID=46&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p align="justify"&gt;&lt;strong&gt;&lt;em&gt;Otros enlaces de inter&amp;eacute;s&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div align="justify"&gt;Patrones de aplicaciones N Capas: &lt;a href="http://msdn.microsoft.com/en-us/magazine/ee321569.aspx" title="http://msdn.microsoft.com/en-us/magazine/ee321569.aspx"&gt;http://msdn.microsoft.com/en-us/magazine/ee321569.aspx&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=166789" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/ciin/archive/tags/ADO.NET+Entity+Framework/default.aspx">ADO.NET Entity Framework</category><category domain="http://geeks.ms/blogs/ciin/archive/tags/.NET+Framework+4.0/default.aspx">.NET Framework 4.0</category></item><item><title>{TRAINING} – SQL SERVER 2008</title><link>http://geeks.ms/blogs/johnbulla/archive/2010/02/05/training-sql-server-2008.aspx</link><pubDate>Sat, 06 Feb 2010 03:42:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:166776</guid><dc:creator>johnbulla</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;

&lt;/p&gt;
&lt;p align="justify"&gt;Hola a tod@s:&lt;/p&gt;
&lt;p align="justify"&gt;Quiero aprovechar para invitarlos a otra serie de entrenamiento sobre SQL Server 2008, aprovechen y no los pierdan.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/johnbulla/Training_5F00_SQLSERVER2008_5F00_005F2A1F.png"&gt;&lt;img style="border-right-width:0px;display:block;float:none;border-top-width:0px;border-bottom-width:0px;margin-left:auto;border-left-width:0px;margin-right:auto;" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/johnbulla/Training_5F00_SQLSERVER2008_5F00_thumb_5F00_51F57EA4.png" width="534" border="0" height="599" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;table style="width:100%;" class="style1"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style="width:62px;" class="style3"&gt;
&lt;p align="center"&gt;&lt;b&gt;FECHA&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="width:85px;" class="style3"&gt;
&lt;p align="center"&gt;&lt;b&gt;HORA&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="width:201px;" class="style3"&gt;
&lt;p align="center"&gt;&lt;b&gt;TEMA&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="width:92px;" class="style5"&gt;&lt;i&gt;&lt;/i&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="width:62px;" class="style2" rowspan="2"&gt;&lt;span style="font-family:&amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;;color:black;font-size:8.5pt;"&gt;9 Febrero&lt;/span&gt;&lt;/td&gt;
&lt;td style="width:85px;" class="style2"&gt;&lt;span style="font-family:&amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;;color:black;font-size:8.5pt;"&gt;10:00 a 11:00&lt;/span&gt;&lt;/td&gt;
&lt;td class="style2"&gt;&lt;span style="font-family:&amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;;color:black;font-size:8.5pt;"&gt;SQL Server 2008 Core Content&lt;/span&gt;&lt;/td&gt;
&lt;td style="width:92px;" class="style2" rowspan="2"&gt;&lt;span style="font-family:&amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;;color:black;font-size:8.5pt;"&gt;&lt;span style="color:red;"&gt;&lt;a href="http://microsoft.researchexpress.net/tracking/mail_tracking.asp?id_usuario=1306439&amp;amp;id_evento=2&amp;amp;id_envio=17266&amp;amp;id_shot=62715&amp;amp;desc=&amp;amp;url=http://www.livemeeting.com/cc/wwe_uk/present?id=1032441414&amp;amp;pw=949B70F2&amp;amp;recording_agreement=accepted&amp;amp;formSubmitted=true"&gt;&lt;span style="text-decoration:none;"&gt;&lt;img id="_x0000_i1025" src="http://www.microsoft.com/mexico/emails/10/imagesSQLmx/flecha.png" width="22" border="0" height="10" alt="" /&gt;&lt;/span&gt;&lt;/a&gt;&amp;nbsp;&lt;a href="http://microsoft.researchexpress.net/tracking/mail_tracking.asp?id_usuario=1306439&amp;amp;id_evento=2&amp;amp;id_envio=17266&amp;amp;id_shot=62715&amp;amp;desc=&amp;amp;url=http://msevents.microsoft.com/CUI/InviteOnly.aspx?EventID=48-DA-16-79-B7-49-E3-E2-17-5B-49-E4-0E-A3-96-90&amp;amp;Culture=es-MX" target="_blank"&gt;Reg&amp;iacute;strese&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="width:85px;" class="style2"&gt;&lt;span style="font-family:&amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;;color:black;font-size:8.5pt;"&gt;11:00 a 12:00&lt;/span&gt;&lt;/td&gt;
&lt;td class="style2"&gt;&lt;span style="font-family:&amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;;color:black;font-size:8.5pt;"&gt;Performance &amp;amp; Scalability&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="width:62px;" class="style2" rowspan="2"&gt;&lt;span style="font-family:&amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;;color:black;font-size:8.5pt;"&gt;10 Febrero&lt;/span&gt;&lt;/td&gt;
&lt;td style="width:85px;height:18px;" class="style2"&gt;&lt;span style="font-family:&amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;;color:black;font-size:8.5pt;"&gt;10:00 a 11:00&lt;/span&gt;&lt;/td&gt;
&lt;td class="style2"&gt;&lt;span style="font-family:&amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;;color:black;font-size:8.5pt;"&gt;Security&lt;/span&gt;&lt;/td&gt;
&lt;td style="width:92px;" class="style2" rowspan="2"&gt;&lt;span style="font-family:&amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;;color:black;font-size:8.5pt;"&gt;&lt;a href="http://microsoft.researchexpress.net/tracking/mail_tracking.asp?id_usuario=1306439&amp;amp;id_evento=2&amp;amp;id_envio=17266&amp;amp;id_shot=62715&amp;amp;desc=&amp;amp;url=http://www.livemeeting.com/cc/wwe_uk/present?id=1032441529&amp;amp;pw=32718D04&amp;amp;recording_agreement=accepted&amp;amp;formSubmitted=true"&gt;&lt;span style="text-decoration:none;"&gt;&lt;img id="_x0000_i1026" src="http://www.microsoft.com/mexico/emails/10/imagesSQLmx/flecha.png" width="22" border="0" height="10" alt="" /&gt;&lt;/span&gt;&lt;/a&gt; &lt;span style="color:red;"&gt;&lt;a href="http://microsoft.researchexpress.net/tracking/mail_tracking.asp?id_usuario=1306439&amp;amp;id_evento=2&amp;amp;id_envio=17266&amp;amp;id_shot=62715&amp;amp;desc=&amp;amp;url=http://msevents.microsoft.com/CUI/InviteOnly.aspx?EventID=9E-50-73-D2-36-EA-37-BD-A0-A8-96-ED-0F-9F-D3-75&amp;amp;Culture=es-MX" target="_blank"&gt;Reg&amp;iacute;strese&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="width:85px;" class="style2"&gt;&lt;span style="font-family:&amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;;color:black;font-size:8.5pt;"&gt;11:00 a 12:00&lt;/span&gt;&lt;/td&gt;
&lt;td class="style2"&gt;&lt;span style="font-family:&amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;;color:black;font-size:8.5pt;"&gt;Server Consolidation &lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="width:62px;" class="style2" rowspan="2"&gt;&lt;span style="font-family:&amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;;color:black;font-size:8.5pt;"&gt;11 Febrero&lt;/span&gt;&lt;/td&gt;
&lt;td style="width:85px;" class="style2"&gt;&lt;span style="font-family:&amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;;color:black;font-size:8.5pt;"&gt;10:00 a 11:00&lt;/span&gt;&lt;/td&gt;
&lt;td class="style2"&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;;color:black;font-size:8.5pt;"&gt;Virtualization &lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="width:92px;" class="style2" rowspan="2"&gt;&lt;span style="font-family:&amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;;color:black;font-size:8.5pt;"&gt;&lt;a href="http://microsoft.researchexpress.net/tracking/mail_tracking.asp?id_usuario=1306439&amp;amp;id_evento=2&amp;amp;id_envio=17266&amp;amp;id_shot=62715&amp;amp;desc=&amp;amp;url=http://www.livemeeting.com/cc/wwe_uk/present?id=1032441531&amp;amp;pw=C2A177D9&amp;amp;recording_agreement=accepted&amp;amp;formSubmitted=true"&gt;&lt;span style="text-decoration:none;"&gt;&lt;img id="_x0000_i1027" src="http://www.microsoft.com/mexico/emails/10/imagesSQLmx/flecha.png" width="22" border="0" height="10" alt="" /&gt;&lt;/span&gt;&lt;/a&gt; &lt;span style="color:red;"&gt;&lt;a href="http://microsoft.researchexpress.net/tracking/mail_tracking.asp?id_usuario=1306439&amp;amp;id_evento=2&amp;amp;id_envio=17266&amp;amp;id_shot=62715&amp;amp;desc=&amp;amp;url=http://msevents.microsoft.com/CUI/InviteOnly.aspx?EventID=9E-50-73-D2-36-EA-37-BD-92-9A-2C-AB-A5-AE-33-CF&amp;amp;Culture=es-MX" target="_blank"&gt;Reg&amp;iacute;strese&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="width:85px;" class="style2"&gt;&lt;span style="font-family:&amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;;color:black;font-size:8.5pt;"&gt;11:00 a 12:00 &lt;/span&gt;&lt;/td&gt;
&lt;td class="style2"&gt;&lt;span style="font-family:&amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;;color:black;font-size:8.5pt;"&gt;High Availability Always On &lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="width:62px;" class="style2" rowspan="2"&gt;&lt;span style="font-family:&amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;;color:black;font-size:8.5pt;"&gt;12 Febrero&lt;/span&gt;&lt;/td&gt;
&lt;td style="width:85px;" class="style2"&gt;&lt;span style="font-family:&amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;;color:black;font-size:8.5pt;"&gt;10:00 a 11:00 &lt;/span&gt;&lt;/td&gt;
&lt;td class="style2"&gt;&lt;span style="font-family:&amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;;color:black;font-size:8.5pt;"&gt;Manageability &lt;/span&gt;&lt;/td&gt;
&lt;td style="width:92px;" class="style2" rowspan="2"&gt;&lt;span style="font-family:&amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;;color:black;font-size:8.5pt;"&gt;&lt;a href="http://microsoft.researchexpress.net/tracking/mail_tracking.asp?id_usuario=1306439&amp;amp;id_evento=2&amp;amp;id_envio=17266&amp;amp;id_shot=62715&amp;amp;desc=&amp;amp;url=http://www.livemeeting.com/cc/wwe_uk/present?id=1032441533&amp;amp;pw=9C97B1BB&amp;amp;recording_agreement=accepted&amp;amp;formSubmitted=true"&gt;&lt;span style="text-decoration:none;"&gt;&lt;img id="_x0000_i1028" src="http://www.microsoft.com/mexico/emails/10/imagesSQLmx/flecha.png" width="22" border="0" height="10" alt="" /&gt;&lt;/span&gt;&lt;/a&gt; &lt;span style="color:red;"&gt;&lt;a href="http://microsoft.researchexpress.net/tracking/mail_tracking.asp?id_usuario=1306439&amp;amp;id_evento=2&amp;amp;id_envio=17266&amp;amp;id_shot=62715&amp;amp;desc=&amp;amp;url=http://msevents.microsoft.com/CUI/InviteOnly.aspx?EventID=9E-50-73-D2-36-EA-37-BD-E5-7B-8D-7E-6C-7B-98-F7&amp;amp;Culture=es-MX" target="_blank"&gt;Reg&amp;iacute;strese&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="width:85px;" class="style2"&gt;&lt;span style="font-family:&amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;;color:black;font-size:8.5pt;"&gt;11:00 a 12:00&lt;/span&gt;&lt;/td&gt;
&lt;td class="style2"&gt;&lt;span style="font-family:&amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;;color:black;font-size:8.5pt;"&gt;OLTP Enterprise Data Management &lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="width:62px;" class="style2" rowspan="2"&gt;&lt;span style="font-family:&amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;;color:black;font-size:8.5pt;"&gt;16 Febrero&lt;/span&gt;&lt;/td&gt;
&lt;td style="width:85px;" class="style2"&gt;&lt;span style="font-family:&amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;;color:black;font-size:8.5pt;"&gt;10:00 a 11:00&lt;/span&gt;&lt;/td&gt;
&lt;td class="style2"&gt;&lt;span style="font-family:&amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;;color:black;font-size:8.5pt;"&gt;Data Warehousing&lt;/span&gt;&lt;/td&gt;
&lt;td style="width:92px;" class="style2" rowspan="2"&gt;&lt;span style="font-family:&amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;;color:black;font-size:8.5pt;"&gt;&lt;a href="http://microsoft.researchexpress.net/tracking/mail_tracking.asp?id_usuario=1306439&amp;amp;id_evento=2&amp;amp;id_envio=17266&amp;amp;id_shot=62715&amp;amp;desc=&amp;amp;url=http://www.livemeeting.com/cc/wwe_uk/present?id=1032441535&amp;amp;pw=5FE6B630&amp;amp;recording_agreement=accepted&amp;amp;formSubmitted=true"&gt;&lt;span style="text-decoration:none;"&gt;&lt;img id="_x0000_i1029" src="http://www.microsoft.com/mexico/emails/10/imagesSQLmx/flecha.png" width="22" border="0" height="10" alt="" /&gt;&lt;/span&gt;&lt;/a&gt; &lt;span style="color:red;"&gt;&lt;a href="http://microsoft.researchexpress.net/tracking/mail_tracking.asp?id_usuario=1306439&amp;amp;id_evento=2&amp;amp;id_envio=17266&amp;amp;id_shot=62715&amp;amp;desc=&amp;amp;url=http://msevents.microsoft.com/CUI/InviteOnly.aspx?EventID=9E-50-73-D2-36-EA-37-BD-D1-7B-D5-1A-39-BE-7D-12&amp;amp;Culture=es-MX" target="_blank"&gt;Reg&amp;iacute;strese&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="width:85px;" class="style2"&gt;&lt;span style="font-family:&amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;;color:black;font-size:8.5pt;"&gt;11:00 a 12:00&lt;/span&gt;&lt;/td&gt;
&lt;td class="style2"&gt;&lt;span style="font-family:&amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;;color:black;font-size:8.5pt;"&gt;Data Mining&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="width:62px;" class="style2" rowspan="2"&gt;&lt;span style="font-family:&amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;;color:black;font-size:8.5pt;"&gt;17 Febrero&lt;/span&gt;&lt;/td&gt;
&lt;td style="width:85px;" class="style2"&gt;&lt;span style="font-family:&amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;;color:black;font-size:8.5pt;"&gt;10:00 a 11:00&lt;/span&gt;&lt;/td&gt;
&lt;td class="style2"&gt;&lt;span style="font-family:&amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;;color:black;font-size:8.5pt;"&gt;Business Intelligence&lt;/span&gt;&lt;/td&gt;
&lt;td style="width:92px;" class="style2" rowspan="2"&gt;&lt;span style="font-family:&amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;;color:black;font-size:8.5pt;"&gt;&lt;a href="http://microsoft.researchexpress.net/tracking/mail_tracking.asp?id_usuario=1306439&amp;amp;id_evento=2&amp;amp;id_envio=17266&amp;amp;id_shot=62715&amp;amp;desc=&amp;amp;url=http://www.livemeeting.com/cc/wwe_uk/present?id=1032441537&amp;amp;pw=B46321EA&amp;amp;recording_agreement=accepted&amp;amp;formSubmitted=true"&gt;&lt;span style="text-decoration:none;"&gt;&lt;img id="_x0000_i1030" src="http://www.microsoft.com/mexico/emails/10/imagesSQLmx/flecha.png" width="22" border="0" height="10" alt="" /&gt;&lt;/span&gt;&lt;/a&gt; &lt;span style="color:red;"&gt;&lt;a href="http://microsoft.researchexpress.net/tracking/mail_tracking.asp?id_usuario=1306439&amp;amp;id_evento=2&amp;amp;id_envio=17266&amp;amp;id_shot=62715&amp;amp;desc=&amp;amp;url=http://msevents.microsoft.com/CUI/InviteOnly.aspx?EventID=9E-50-73-D2-36-EA-37-BD-05-AD-F6-15-88-6A-45-84&amp;amp;Culture=es-MX" target="_blank"&gt;Reg&amp;iacute;strese&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="width:85px;" class="style2"&gt;&lt;span style="font-family:&amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;;color:black;font-size:8.5pt;"&gt;11:00 a 12:00&lt;/span&gt;&lt;/td&gt;
&lt;td class="style2"&gt;&lt;span style="font-family:&amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;;color:black;font-size:8.5pt;"&gt;Analysis Services&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="width:62px;" class="style2" rowspan="2"&gt;&lt;span style="font-family:&amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;;color:black;font-size:8.5pt;"&gt;18 Febrero&lt;/span&gt;&lt;/td&gt;
&lt;td style="width:85px;height:19px;" class="style2"&gt;&lt;span style="font-family:&amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;;color:black;font-size:8.5pt;"&gt;10:00 a 11:00&lt;/span&gt;&lt;/td&gt;
&lt;td class="style2"&gt;&lt;span style="font-family:&amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;;color:black;font-size:8.5pt;"&gt;Integration Services&lt;/span&gt;&lt;/td&gt;
&lt;td style="width:92px;" class="style2" rowspan="2"&gt;&lt;span style="font-family:&amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;;color:black;font-size:8.5pt;"&gt;&lt;a href="http://microsoft.researchexpress.net/tracking/mail_tracking.asp?id_usuario=1306439&amp;amp;id_evento=2&amp;amp;id_envio=17266&amp;amp;id_shot=62715&amp;amp;desc=&amp;amp;url=http://www.livemeeting.com/cc/wwe_uk/present?id=1032441539&amp;amp;pw=F7C61692&amp;amp;recording_agreement=accepted&amp;amp;formSubmitted=true"&gt;&lt;span style="text-decoration:none;"&gt;&lt;img id="_x0000_i1031" src="http://www.microsoft.com/mexico/emails/10/imagesSQLmx/flecha.png" width="22" border="0" height="10" alt="" /&gt;&lt;/span&gt;&lt;/a&gt; &lt;span style="color:red;"&gt;&lt;a href="http://microsoft.researchexpress.net/tracking/mail_tracking.asp?id_usuario=1306439&amp;amp;id_evento=2&amp;amp;id_envio=17266&amp;amp;id_shot=62715&amp;amp;desc=&amp;amp;url=http://msevents.microsoft.com/CUI/InviteOnly.aspx?EventID=9E-50-73-D2-36-EA-37-BD-07-0E-20-A5-E2-D9-9F-03&amp;amp;Culture=es-MX" target="_blank"&gt;Reg&amp;iacute;strese&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="width:85px;" class="style2"&gt;&lt;span style="font-family:&amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;;color:black;font-size:8.5pt;"&gt;11:00 a 12:00&lt;/span&gt;&lt;/td&gt;
&lt;td class="style2"&gt;&lt;span style="font-family:&amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;;color:black;font-size:8.5pt;"&gt;Reporting Services&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="width:62px;" class="style2" rowspan="2"&gt;&lt;span style="font-family:&amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;;color:black;font-size:8.5pt;"&gt;19 Febrero&lt;/span&gt;&lt;/td&gt;
&lt;td style="width:85px;height:16px;" class="style2"&gt;&lt;span style="font-family:&amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;;color:black;font-size:8.5pt;"&gt;10:00 a 11:00&lt;/span&gt;&lt;/td&gt;
&lt;td class="style2"&gt;&lt;span style="font-family:&amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;;color:black;font-size:8.5pt;"&gt;PowerPivot for Excel 2010&lt;/span&gt;&lt;/td&gt;
&lt;td style="width:92px;" class="style2" rowspan="2"&gt;&lt;span style="font-family:&amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;;color:black;font-size:8.5pt;"&gt;&lt;a href="http://microsoft.researchexpress.net/tracking/mail_tracking.asp?id_usuario=1306439&amp;amp;id_evento=2&amp;amp;id_envio=17266&amp;amp;id_shot=62715&amp;amp;desc=&amp;amp;url=http://www.livemeeting.com/cc/wwe_uk/present?id=1032441541&amp;amp;pw=056DD8F4&amp;amp;recording_agreement=accepted&amp;amp;formSubmitted=true"&gt;&lt;span style="text-decoration:none;"&gt;&lt;img id="_x0000_i1032" src="http://www.microsoft.com/mexico/emails/10/imagesSQLmx/flecha.png" width="22" border="0" height="10" alt="" /&gt;&lt;/span&gt;&lt;/a&gt; &lt;span style="color:red;"&gt;&lt;a href="http://microsoft.researchexpress.net/tracking/mail_tracking.asp?id_usuario=1306439&amp;amp;id_evento=2&amp;amp;id_envio=17266&amp;amp;id_shot=62715&amp;amp;desc=&amp;amp;url=http://msevents.microsoft.com/CUI/InviteOnly.aspx?EventID=9E-50-73-D2-36-EA-37-BD-20-F7-93-CF-B3-C9-70-67&amp;amp;Culture=es-MX" target="_blank"&gt;Reg&amp;iacute;strese&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="width:85px;" class="style2"&gt;&lt;span style="font-family:&amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;;color:black;font-size:8.5pt;"&gt;11:00 a 12:00&lt;/span&gt;&lt;/td&gt;
&lt;td class="style2"&gt;&lt;span style="font-family:&amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;;color:black;font-size:8.5pt;"&gt;Spatial Data &lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Saludos,&lt;/p&gt;
&lt;p&gt;&lt;a class="addthis_button" href="http://www.addthis.com/bookmark.php?v=250&amp;amp;pub=johnbulla"&gt;&lt;img style="border-right-width:0px;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" alt="Bookmark and Share" src="http://s7.addthis.com/static/btn/v2/lg-share-en.gif" width="125" height="16" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=166776" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/johnbulla/archive/tags/Business+Intelligence/default.aspx">Business Intelligence</category><category domain="http://geeks.ms/blogs/johnbulla/archive/tags/SQL+Server+2008/default.aspx">SQL Server 2008</category><category domain="http://geeks.ms/blogs/johnbulla/archive/tags/Datos+Espaciales/default.aspx">Datos Espaciales</category><category domain="http://geeks.ms/blogs/johnbulla/archive/tags/Reporting+Services/default.aspx">Reporting Services</category><category domain="http://geeks.ms/blogs/johnbulla/archive/tags/SQL+Server+2008+R2/default.aspx">SQL Server 2008 R2</category><category domain="http://geeks.ms/blogs/johnbulla/archive/tags/Data+Mining/default.aspx">Data Mining</category><category domain="http://geeks.ms/blogs/johnbulla/archive/tags/Data+Warehousing/default.aspx">Data Warehousing</category><category domain="http://geeks.ms/blogs/johnbulla/archive/tags/Integration+Services/default.aspx">Integration Services</category><category domain="http://geeks.ms/blogs/johnbulla/archive/tags/Analysis+Services/default.aspx">Analysis Services</category></item><item><title>SQL Server 2008 R2 Update for Developers Training Kit</title><link>http://geeks.ms/blogs/johnbulla/archive/2010/02/05/sql-server-2008-r2-update-for-developers-training-kit.aspx</link><pubDate>Sat, 06 Feb 2010 03:42:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:166777</guid><dc:creator>johnbulla</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;amp;FamilyID=fffaad6a-0153-4d41-b289-a3ed1d637c0d"&gt;&lt;img height="74" width="400" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/johnbulla/SQLServer2008_5F00_R2_5F00_2_5F00_5C417FAC.png" border="0" style="border-right-width:0px;display:block;float:none;border-top-width:0px;border-bottom-width:0px;margin-left:auto;border-left-width:0px;margin-right:auto;" alt="" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p align="justify"&gt;Hace un par de d&amp;iacute;as Microsoft&amp;reg; libero una actualizaci&amp;oacute;n del Training Kit para desarrolladores de SQL Server 2008 R2.&lt;/p&gt;
&lt;p align="justify"&gt;SQL Server 2008 R2 ofrece una impresionante gama de capacidades para los desarrolladores que se basan en las innovaciones clave introducidas en SQL Server 2008. SQL Server 2008 R2 Update for Developers Training Kit es ideal para desarrolladores que quieren entender c&amp;oacute;mo aprovechar las ventajas de las mejoras clave introducidas en SQL Server 2008 y SQL Server 2008 R2 en sus aplicaciones, as&amp;iacute; como para los desarrolladores que son nuevos en SQL Server.&lt;/p&gt;
&lt;p align="justify"&gt;La actualizaci&amp;oacute;n de este Kit viene con m&amp;aacute;s&amp;nbsp; videos, presentaciones, demos y hand-on labs.&lt;/p&gt;
&lt;p align="justify"&gt;Lo pueden descargar &lt;a target="_blank" href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;amp;FamilyID=fffaad6a-0153-4d41-b289-a3ed1d637c0d"&gt;aqu&amp;iacute;&lt;/a&gt;.&lt;/p&gt;
&lt;p align="justify"&gt;Espero lo disfruten.&lt;/p&gt;
&lt;p align="justify"&gt;Saludos,&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.addthis.com/bookmark.php?v=250&amp;amp;pub=johnbulla" class="addthis_button"&gt;&lt;img height="16" width="125" src="http://s7.addthis.com/static/btn/v2/lg-share-en.gif" alt="Bookmark and Share" style="border-right-width:0px;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=166777" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/johnbulla/archive/tags/SQL+Server+2008/default.aspx">SQL Server 2008</category><category domain="http://geeks.ms/blogs/johnbulla/archive/tags/SQL+Server+2008+R2/default.aspx">SQL Server 2008 R2</category><category domain="http://geeks.ms/blogs/johnbulla/archive/tags/Training+Kit/default.aspx">Training Kit</category></item><item><title>[eventos] Charla presencial de XNA en la Universitat de Lleida</title><link>http://geeks.ms/blogs/jbosch/archive/2010/02/05/eventos-charla-presencial-de-xna-en-la-universitat-de-lleida.aspx</link><pubDate>Fri, 05 Feb 2010 14:25:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:166734</guid><dc:creator>Jesús Bosch</dc:creator><slash:comments>2</slash:comments><description>El pr&amp;oacute;ximo 11 de febrero celebramos en la Universitat de Lleida el Microsoft Break Lleida. Habr&amp;aacute; varias charlas por parte de ponentes variopintos. Como no pod&amp;iacute;a ser de otra forma en cualquier evento universitario... va a haber una charla de XNA, que dar&amp;aacute; un servidor. Va a ser una charla introductoria, en la que presentar&amp;eacute; el framework, sus posibilidades en distintos dispositivos, las posibilidades de distribuci&amp;oacute;n en el Marketpace de XBOX Live, as&amp;iacute;...(&lt;a href="http://geeks.ms/blogs/jbosch/archive/2010/02/05/eventos-charla-presencial-de-xna-en-la-universitat-de-lleida.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://geeks.ms/aggbug.aspx?PostID=166734" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/jbosch/archive/tags/XNA/default.aspx">XNA</category><category domain="http://geeks.ms/blogs/jbosch/archive/tags/Evento+presencial/default.aspx">Evento presencial</category><category domain="http://geeks.ms/blogs/jbosch/archive/tags/DotNetClubs/default.aspx">DotNetClubs</category></item><item><title>Experiencia Silverlight para Joaquín Sabina</title><link>http://geeks.ms/blogs/rvivancos/archive/2010/02/05/experiencia-silverlight-para-joaqu-237-n-sabina.aspx</link><pubDate>Fri, 05 Feb 2010 13:26:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:166731</guid><dc:creator>Roberto Vivancos</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rvivancos/image_5F00_65054EBB.png"&gt;&lt;img style="display:block;float:none;margin-left:auto;margin-right:auto;" title="image" alt="image" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rvivancos/image_5F00_thumb_5F00_07F57492.png" width="500" height="300" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;El nuevo videoclip de Joaquín Sabina viene aderezado con la tecnología Silverlight, enriqueciendo la experiencia de usuario.&lt;/p&gt;  &lt;p&gt;Ver el site: &lt;a title="http://joaquinsabina.es.msn.com/" href="http://joaquinsabina.es.msn.com/"&gt;http://joaquinsabina.es.msn.com/&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=166731" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/rvivancos/archive/tags/Silverlight/default.aspx">Silverlight</category></item><item><title>[Tips] Multiples DataKeyName en una Grilla (o cuando la tabla tiene una clave compuesta)</title><link>http://geeks.ms/blogs/gperez/archive/2010/02/05/tips-multiples-datakeyname-en-una-grilla-o-cuando-la-tabla-tiene-una-clave-compuesta.aspx</link><pubDate>Fri, 05 Feb 2010 12:09:06 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:166723</guid><dc:creator>Gonzalo Perez</dc:creator><slash:comments>0</slash:comments><description>&lt;p align="justify"&gt;Hola que tal?, ya que me han formulado esta pregunta varias veces, quiero dejarla como tips, no es que no me gusta que me pregunten, pero de este modo, la info está accesible más rápidamente.&lt;/p&gt;  &lt;p align="justify"&gt;El gridview que conocemos , es un control que es muy potente, obviamente podemos potenciarlo más y algunas empresas como Telerik tienen su propia implementación mucho más potente. Una de las características más importantes es su facilidad de uso y de configuración en escenarios “Cero Código”&amp;#160; para agregar comportamientos de Eliminacion, Modificación&amp;#160; y selección. Esto es bastante sencillo cuando se tiene que la grilla está mostrando datos de una tabla que tiene una clave principal que no es compuesta, como por ejemplo un ID Correlativo, pero algunas veces, tenemos que la grilla tiene una clave principal compuesta, este escenario es totalmente soportado por nuestra grilla.&lt;/p&gt;  &lt;p align="justify"&gt;Una de las propiedades de la grilla, necesario para poder agregar declarativamente los comportamientos es el DataKeyName, que representa el campo clave de la grilla. Ahora bien, si tenemos una clave compuesta el DataKeyName sería algo así:&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="line-height:115%;font-family:&amp;#39;Courier New&amp;#39;;color:red;font-size:10pt;mso-ansi-language:en-us;mso-no-proof:yes;" lang="EN-US"&gt;DataKeyNames&lt;/span&gt;&lt;span style="line-height:115%;font-family:&amp;#39;Courier New&amp;#39;;color:blue;font-size:10pt;mso-ansi-language:en-us;mso-no-proof:yes;" lang="EN-US"&gt;=&amp;quot;ID1,ID2&amp;quot;&lt;/span&gt;&lt;span style="mso-ansi-language:en-us;" lang="EN-US"&gt;     &lt;p&gt;&lt;/p&gt;   &lt;/span&gt;&lt;/p&gt;  &lt;p align="justify"&gt;Hasta el momento todo bien, ahora, si tenemos otro control Gridview, para un maestro detalle, en el que tenemos que la selección de la primera grilla, nos muestra los detalles para la segunda grilla, (voy a utilizar un SqlDataSource), vamos a tener el SelectCommand:&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;color:red;font-size:10pt;mso-ansi-language:en-us;mso-no-proof:yes;" lang="EN-US"&gt;SelectCommand&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;color:blue;font-size:10pt;mso-ansi-language:en-us;mso-no-proof:yes;" lang="EN-US"&gt;=&amp;quot;SELECT IDDET, GLOSA_DET FROM DETALLE WHERE ID1_DET = @ID1 AND ID2_DET=@ID2&amp;quot;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:en-us;mso-no-proof:yes;" lang="EN-US"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;y la los parámetros: (acá está lo distinto, ya que el asistente no nos permite hacer esto, tenemos que hacerlo a mano)&lt;/p&gt;  &lt;p style="line-height:normal;margin-bottom:0pt;mso-layout-grid-align:none;" class="MsoNormal"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:en-us;mso-no-proof:yes;" lang="EN-US"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;SelectParameters&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;       &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:en-us;mso-no-proof:yes;" lang="EN-US"&gt;&lt;span style="color:blue;"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;asp&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ControlParameter&lt;/span&gt; &lt;span style="color:red;"&gt;ControlID&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;GridView1&amp;quot;&lt;/span&gt; &lt;span style="color:red;"&gt;Name&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;ID1&amp;quot;&lt;/span&gt; &lt;span style="color:red;"&gt;PropertyName&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;SelectedDataKey.Values[ID1]&amp;quot;&lt;/span&gt; &lt;span style="color:red;"&gt;Type&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Int32&amp;quot;&lt;/span&gt; &lt;span style="color:blue;"&gt;/&amp;gt;       &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:en-us;mso-no-proof:yes;" lang="EN-US"&gt;&lt;span style="color:blue;"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;asp&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ControlParameter&lt;/span&gt; &lt;span style="color:red;"&gt;ControlID&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;GridView1&amp;quot;&lt;/span&gt; &lt;span style="color:red;"&gt;Name&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;ID2&amp;quot;&lt;/span&gt; &lt;span style="color:red;"&gt;PropertyName&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;SelectedDataKey.Values[ID2]&amp;quot;&lt;/span&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160; &lt;/span&gt;&lt;span style="color:red;"&gt;Type&lt;/span&gt;&lt;span style="color:blue;"&gt;=&amp;quot;Int32&amp;quot;&lt;/span&gt; &lt;span style="color:blue;"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="line-height:115%;font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:en-us;mso-no-proof:yes;" lang="EN-US"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;/span&gt;&lt;span style="line-height:115%;font-family:&amp;#39;Courier New&amp;#39;;color:blue;font-size:10pt;mso-no-proof:yes;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="line-height:115%;font-family:&amp;#39;Courier New&amp;#39;;color:#a31515;font-size:10pt;mso-no-proof:yes;"&gt;SelectParameters&lt;/span&gt;&lt;span style="line-height:115%;font-family:&amp;#39;Courier New&amp;#39;;color:blue;font-size:10pt;mso-no-proof:yes;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="mso-ansi-language:en-us;" lang="EN-US"&gt;     &lt;p&gt;&lt;/p&gt;   &lt;/span&gt;&lt;/p&gt;  &lt;p align="justify"&gt;Como ves, se extrae del SelectDataKey, los dos parámetros para poder hacer el select.&lt;/p&gt;  &lt;p align="justify"&gt;Ahora bien, si lo que necesitas es , por medio de código programático, obtener estos valores entonces tenemos:&lt;/p&gt;  &lt;p align="left"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:en-us;mso-no-proof:yes;" lang="EN-US"&gt;&lt;span style="color:blue;"&gt;Protected&lt;/span&gt; &lt;span style="color:blue;"&gt;Sub&lt;/span&gt; GridView1_SelectedIndexChanged(&lt;span style="color:blue;"&gt;ByVal&lt;/span&gt; sender &lt;span style="color:blue;"&gt;As&lt;/span&gt; &lt;span style="color:blue;"&gt;Object&lt;/span&gt;, &lt;span style="color:blue;"&gt;ByVal&lt;/span&gt; e &lt;span style="color:blue;"&gt;As&lt;/span&gt; System.EventArgs) &lt;span style="color:blue;"&gt;Handles&lt;/span&gt; GridView1.SelectedIndexChanged      &lt;p&gt;&lt;/p&gt;   &lt;/span&gt;&lt;/p&gt;  &lt;p style="line-height:normal;margin-bottom:0pt;mso-layout-grid-align:none;" class="MsoNormal"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:en-us;mso-no-proof:yes;" lang="EN-US"&gt;SqlDataSource2.SelectParameters(0).DefaultValue = GridView1.DataKeys(&lt;span style="color:blue;"&gt;Me&lt;/span&gt;.GridView1.SelectedRow.RowIndex).Values(0)      &lt;p&gt;&lt;/p&gt;   &lt;/span&gt;&lt;/p&gt;  &lt;p style="line-height:normal;margin-bottom:0pt;mso-layout-grid-align:none;" class="MsoNormal"&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-ansi-language:en-us;mso-no-proof:yes;" lang="EN-US"&gt;SqlDataSource2.SelectParameters(1).DefaultValue = GridView1.DataKeys(&lt;span style="color:blue;"&gt;Me&lt;/span&gt;.GridView1.SelectedRow.RowIndex).Values(1)      &lt;p&gt;&lt;/p&gt;   &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="line-height:115%;font-family:&amp;#39;Courier New&amp;#39;;color:blue;font-size:10pt;mso-no-proof:yes;"&gt;End&lt;/span&gt;&lt;span style="line-height:115%;font-family:&amp;#39;Courier New&amp;#39;;font-size:10pt;mso-no-proof:yes;"&gt; &lt;span style="color:blue;"&gt;Sub&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" align="justify"&gt;En donde SqlDataSource2 es el DS de la grilla detalle, y GridView1 es la grilla con los datos del Maestro.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Como vez, es bastante sencillo, espero que te sirva el Tip :)&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Saludos,   &lt;br /&gt;Gonzalo&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=166723" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/gperez/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://geeks.ms/blogs/gperez/archive/tags/.NET/default.aspx">.NET</category><category domain="http://geeks.ms/blogs/gperez/archive/tags/Tips/default.aspx">Tips</category></item><item><title>Usando ASP.NET membrership en Winforms (3 / n)</title><link>http://geeks.ms/blogs/lfranco/archive/2010/02/05/usando-asp-net-membrership-en-winforms-3-n.aspx</link><pubDate>Fri, 05 Feb 2010 10:10:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:166716</guid><dc:creator>Lluis Franco</dc:creator><slash:comments>5</slash:comments><description>&lt;h4&gt;El modelo de objetos de membres&amp;iacute;a (Membership object model)&lt;/h4&gt;
&lt;p align="justify"&gt;&lt;a href="http://www.uyssoft.com/blog/images/UsandoASP.NETmembrershipenWinforms3n_F964/Membershipom.png"&gt;&lt;img height="186" width="244" src="http://www.uyssoft.com/blog/images/UsandoASP.NETmembrershipenWinforms3n_F964/Membershipom_thumb.png" alt="Membershipom" border="0" title="Membershipom" style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p align="justify"&gt;O lo que es lo mismo, el pan nuestro de cada d&amp;iacute;a en lo relativo a administrar la seguridad basada en membres&amp;iacute;a. Para acceder a este cojunto de clases es necesario agregar los namespaces &lt;strong&gt;System.Web&lt;/strong&gt; y &lt;strong&gt;System.Web.Extensions&lt;/strong&gt;, que contienen las clases necesarias para interactuar con la base de datos de membres&amp;iacute;a descrita en el art&amp;iacute;culo anterior.&lt;/p&gt;
&lt;p align="justify"&gt;&lt;a href="http://www.uyssoft.com/blog/images/UsandoASP.NETmembrershipenWinforms3n_F964/References.png"&gt;&lt;img height="298" width="359" src="http://www.uyssoft.com/blog/images/UsandoASP.NETmembrershipenWinforms3n_F964/References_thumb.png" alt="References" border="0" title="References" style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p align="justify"&gt;Conocer este conjunto de clases es vital para poder aprovechar todas las caracter&amp;iacute;sticas de este sistema, de modo que aqu&amp;iacute; va una tabla con las principales elementos y funcionalidades:&lt;/p&gt;
&lt;table cellpadding="0" border="0"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign="bottom"&gt;
&lt;p&gt;&lt;b&gt;Clase/interfaz&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="bottom"&gt;
&lt;p&gt;&lt;b&gt;Funciones&lt;/b&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top"&gt;
&lt;p&gt;&lt;a href="http://msdn.microsoft.com/es-es/library/system.web.security.membership.aspx"&gt;Membership&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Proporciona los servicios de suscripci&amp;oacute;n generales.&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top"&gt;
&lt;p&gt;Crea un nuevo usuario.&lt;/p&gt;
&lt;p&gt;Elimina un usuario.&lt;/p&gt;
&lt;p&gt;Actualiza un usuario con nueva informaci&amp;oacute;n.&lt;/p&gt;
&lt;p&gt;Devuelve una lista de usuarios.&lt;/p&gt;
&lt;p&gt;Encuentra un usuario por el nombre o el correo electr&amp;oacute;nico.&lt;/p&gt;
&lt;p&gt;Valida (autentica) un usuario.&lt;/p&gt;
&lt;p&gt;Obtiene el n&amp;uacute;mero de usuarios conectados.&lt;/p&gt;
&lt;p&gt;Busca los usuarios por el nombre de usuario o la direcci&amp;oacute;n de correo electr&amp;oacute;nico.&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top"&gt;
&lt;p&gt;&lt;a href="http://msdn.microsoft.com/es-es/library/system.web.security.membershipuser.aspx"&gt;MembershipUser&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Proporciona informaci&amp;oacute;n sobre un usuario concreto.&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top"&gt;
&lt;p&gt;Obtiene la contrase&amp;ntilde;a y la pregunta de la contrase&amp;ntilde;a.&lt;/p&gt;
&lt;p&gt;Cambia la contrase&amp;ntilde;a.&lt;/p&gt;
&lt;p&gt;Determina si el usuario est&amp;aacute; conectado.&lt;/p&gt;
&lt;p&gt;Determina si el usuario est&amp;aacute; validado.&lt;/p&gt;
&lt;p&gt;Devuelve la fecha de la &amp;uacute;ltima actividad, del &amp;uacute;ltimo inicio de sesi&amp;oacute;n y del &amp;uacute;ltimo cambio de contrase&amp;ntilde;a.&lt;/p&gt;
&lt;p&gt;Desbloquea un usuario.&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top"&gt;
&lt;p&gt;&lt;a href="http://msdn.microsoft.com/es-es/library/system.web.security.membershipprovider.aspx"&gt;MembershipProvider&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Define la funcionalidad de los proveedores de datos que el sistema de suscripci&amp;oacute;n puede utilizar.&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top"&gt;
&lt;p&gt;Define los m&amp;eacute;todos y las propiedades que necesita implementar un proveedor utilizado en la suscripci&amp;oacute;n.&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top"&gt;
&lt;p&gt;&lt;a href="http://msdn.microsoft.com/es-es/library/system.web.security.membershipprovidercollection.aspx"&gt;MembershipProviderCollection&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top"&gt;
&lt;p&gt;Devuelve una colecci&amp;oacute;n de todos los proveedores disponibles.&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top"&gt;
&lt;p&gt;&lt;a href="http://msdn.microsoft.com/es-es/library/system.web.security.membershipusercollection.aspx"&gt;MembershipUserCollection&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top"&gt;
&lt;p&gt;Almacena las referencias a los objetos &lt;a href="http://msdn.microsoft.com/es-es/library/system.web.security.membershipuser.aspx"&gt;MembershipUser&lt;/a&gt;.&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top"&gt;
&lt;p&gt;&lt;a href="http://msdn.microsoft.com/es-es/library/system.web.security.membershipcreatestatus.aspx"&gt;MembershipCreateStatus&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top"&gt;
&lt;p&gt;Proporciona los valores descriptivos de &amp;eacute;xito o error al crear un nuevo usuario suscrito.&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top"&gt;
&lt;p&gt;&lt;a href="http://msdn.microsoft.com/es-es/library/system.web.security.membershipcreateuserexception.aspx"&gt;MembershipCreateUserException&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top"&gt;
&lt;p&gt;Define la excepci&amp;oacute;n que se produce si no se puede crear un usuario. Hay un valor de enumeraci&amp;oacute;n &lt;a href="http://msdn.microsoft.com/es-es/library/system.web.security.membershipcreatestatus.aspx"&gt;MembershipCreateStatus&lt;/a&gt; disponible a trav&amp;eacute;s de la propiedad &lt;a href="http://msdn.microsoft.com/es-es/library/system.web.security.membershipcreateuserexception.statuscode.aspx"&gt;StatusCode&lt;/a&gt; que describe el motivo de la excepci&amp;oacute;n.&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top"&gt;
&lt;p&gt;&lt;a href="http://msdn.microsoft.com/es-es/library/system.web.security.membershippasswordformat.aspx"&gt;MembershipPasswordFormat&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top"&gt;
&lt;p&gt;Especifica los posibles formatos de almacenamiento de contrase&amp;ntilde;as utilizados por los proveedores de suscripciones incluidos con ASP.NET (&lt;b&gt;Clear&lt;/b&gt;, &lt;b&gt;Hashed&lt;/b&gt;, &lt;b&gt;Encrypted&lt;/b&gt;).&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h4&gt;Configurando nuestra aplicaci&amp;oacute;n&lt;/h4&gt;
&lt;p align="justify"&gt;&lt;strong&gt;Nota: &lt;/strong&gt;Esto pensaba dejarlo para m&amp;aacute;s adelante, pero lo posteo aqu&amp;iacute; tambi&amp;eacute;n por si alguien quiere animarse a hacer pruebas ;-)&lt;/p&gt;
&lt;p align="justify"&gt;Para poder acceder al modelo de objetos, adem&amp;aacute;s de agregar las dos referencias que hemos comentado antes, tambi&amp;eacute;n es necesario modificar el fichero de configuraci&amp;oacute;n de la aplicaci&amp;oacute;n (Web.config en un proyecto Web y App.config en un proyecto WinForms). Existen multitud de &lt;a href="http://msdn.microsoft.com/es-es/library/6e9y4s5t.aspx"&gt;art&amp;iacute;culos&lt;/a&gt; que describen c&amp;oacute;mo hacerlo en el primero de los casos, as&amp;iacute; que nos vamos a centrar en el segundo.&lt;/p&gt;
&lt;p align="justify"&gt;Empezaremos con la configuraci&amp;oacute;n m&amp;iacute;nima para que funcione nuestra aplicaci&amp;oacute;n, y posteriormente iremos viendo distintas opciones para permitir que el sistema de seguridad se comporte de un modo distinto, por ejemplo, pidiendo una contrase&amp;ntilde;a no tan restrictiva, o que no sea necesario indicar el email del usuario, o la pregunta y respuesta de seguridad.&lt;/p&gt;
&lt;p align="justify"&gt;El primer paso para configurar nuestra aplicaci&amp;oacute;n es agregar un fichero de configuraci&amp;oacute;n (App.config) a nuestro proyeco, o si ya tenemos uno, abrirlo para su edici&amp;oacute;n. Toda la configuraci&amp;oacute;n se va a centrar en dos secciones: &amp;lt;connectionStrings&amp;gt; y &amp;lt;system.web&amp;gt;. En la primera es especificar&amp;aacute; una entrada que apunte a la base de datos de membres&amp;iacute;a, mientras que en la segunda se especificar&amp;aacute;n los valores para los proveedores de usuarios y roles:&lt;/p&gt;
&lt;div&gt;
&lt;div style="line-height:12pt;background-color:#f4f4f4;width:100%;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;
&lt;pre style="line-height:12pt;background-color:white;margin:0em;width:100%;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;configuration&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="line-height:12pt;background-color:#f4f4f4;margin:0em;width:100%;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;  &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;connectionStrings&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="line-height:12pt;background-color:white;margin:0em;width:100%;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;    &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;add&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;name&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;MemberShipConnectionString&amp;quot;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="line-height:12pt;background-color:#f4f4f4;margin:0em;width:100%;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;         &lt;span style="color:#ff0000;"&gt;connectionString&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;data source=.\SQLEXPRESS;Integrated Security=True;DataBase=Test&amp;quot;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="line-height:12pt;background-color:white;margin:0em;width:100%;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;         &lt;span style="color:#ff0000;"&gt;providerName&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;System.Data.SqlClient&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="line-height:12pt;background-color:#f4f4f4;margin:0em;width:100%;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;  &lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;connectionStrings&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="line-height:12pt;background-color:white;margin:0em;width:100%;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;  &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;system.web&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="line-height:12pt;background-color:#f4f4f4;margin:0em;width:100%;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;    &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;roleManager&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;enabled&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;true&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="line-height:12pt;background-color:white;margin:0em;width:100%;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;      &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;providers&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="line-height:12pt;background-color:#f4f4f4;margin:0em;width:100%;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;        &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;clear&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="line-height:12pt;background-color:white;margin:0em;width:100%;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;        &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;add&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;name&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;AspNetSqlRoleProvider&amp;quot;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="line-height:12pt;background-color:#f4f4f4;margin:0em;width:100%;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;             &lt;span style="color:#ff0000;"&gt;type&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;System.Web.Security.SqlRoleProvider&amp;quot;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="line-height:12pt;background-color:white;margin:0em;width:100%;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;             &lt;span style="color:#ff0000;"&gt;connectionStringName&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;MemberShipConnectionString&amp;quot;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="line-height:12pt;background-color:#f4f4f4;margin:0em;width:100%;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;             &lt;span style="color:#ff0000;"&gt;applicationName&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;Test&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="line-height:12pt;background-color:white;margin:0em;width:100%;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;      &lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;providers&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="line-height:12pt;background-color:#f4f4f4;margin:0em;width:100%;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;    &lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;roleManager&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="line-height:12pt;background-color:white;margin:0em;width:100%;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;    &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;membership&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;defaultProvider&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;SqlProvider&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="line-height:12pt;background-color:#f4f4f4;margin:0em;width:100%;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;      &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;providers&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="line-height:12pt;background-color:white;margin:0em;width:100%;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;        &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;clear&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="line-height:12pt;background-color:#f4f4f4;margin:0em;width:100%;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;        &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;add&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;name&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;SqlProvider&amp;quot;&lt;/span&gt; &lt;/pre&gt;
&lt;pre style="line-height:12pt;background-color:white;margin:0em;width:100%;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;             &lt;span style="color:#ff0000;"&gt;type&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;System.Web.Security.SqlMembershipProvider&amp;quot;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="line-height:12pt;background-color:#f4f4f4;margin:0em;width:100%;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;             &lt;span style="color:#ff0000;"&gt;connectionStringName&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;MemberShipConnectionString&amp;quot;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="line-height:12pt;background-color:white;margin:0em;width:100%;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;             &lt;span style="color:#ff0000;"&gt;applicationName&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;Test&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="line-height:12pt;background-color:#f4f4f4;margin:0em;width:100%;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;      &lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;providers&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="line-height:12pt;background-color:white;margin:0em;width:100%;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;    &lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;membership&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="line-height:12pt;background-color:#f4f4f4;margin:0em;width:100%;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;  &lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;system.web&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="line-height:12pt;background-color:white;margin:0em;width:100%;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;configuration&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p align="justify"&gt;Oservemos que la cadena de configuraci&amp;oacute;n apunta a la BD que creamos en el post anterior, y que esta cadena de conexi&amp;oacute;n se usa en la configuraci&amp;oacute;n de los proveedores de usuarios y roles. Otro detalle muy importante es que la clave applicationName contiene el nombre de nuestra aplicaci&amp;oacute;n para el sistema de membres&amp;iacute;a, de modo que todos los usuarios y roles que se creen estar&amp;aacute;n agrupados bajo este nombre de aplicaci&amp;oacute;n.&lt;/p&gt;
&lt;p align="justify"&gt;Por defecto, esta configuraci&amp;oacute;n hace que al momento de crear un usuario sea necesario proporcionar: Nombre, contrase&amp;ntilde;a de un m&amp;iacute;nimo de 7 car&amp;aacute;cteres y uno de ellos &amp;lsquo;especial&amp;rsquo; (por ejemplo: @#$%), email, pregunta de seguridad, respuesta de seguridad, y si va a estar aprobado o no. No est&amp;aacute; nada mal, de hecho podr&amp;iacute;amos decir que la configuraci&amp;oacute;n predeterminada es a su vez, la m&amp;aacute;s segura.&lt;/p&gt;
&lt;p align="justify"&gt;Si deseamos cambiar esta configuraci&amp;oacute;n, par permitir que un usuario no pueda preguntarle al sistema cu&amp;aacute;l es su contrase&amp;ntilde;a (s&amp;oacute;lo pueda resetearla), o por ejemplo para &amp;lsquo;relajar&amp;rsquo; un poco la seguridad (que quede claro que esto no lo recomiendo en absoluto, y que es simplemente un ejercicio did&amp;aacute;ctico) podemos agregar atributos al fichero de configuraci&amp;oacute;n:&lt;/p&gt;
&lt;div&gt;
&lt;div style="line-height:12pt;background-color:#f4f4f4;width:100%;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;
&lt;pre style="line-height:12pt;background-color:white;margin:0em;width:100%;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;membership&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;defaultProvider&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;SqlProvider&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="line-height:12pt;background-color:#f4f4f4;margin:0em;width:100%;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;  &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;providers&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="line-height:12pt;background-color:white;margin:0em;width:100%;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;    &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;clear&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="line-height:12pt;background-color:#f4f4f4;margin:0em;width:100%;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;    &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;add&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;name&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;SqlProvider&amp;quot;&lt;/span&gt; &lt;/pre&gt;
&lt;pre style="line-height:12pt;background-color:white;margin:0em;width:100%;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;         &lt;span style="color:#ff0000;"&gt;type&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;System.Web.Security.SqlMembershipProvider&amp;quot;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="line-height:12pt;background-color:#f4f4f4;margin:0em;width:100%;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;         &lt;span style="color:#ff0000;"&gt;connectionStringName&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;MemberShipConnectionString&amp;quot;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="line-height:12pt;background-color:white;margin:0em;width:100%;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;         &lt;span style="color:#ff0000;"&gt;applicationName&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;Test&amp;quot;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="line-height:12pt;background-color:#f4f4f4;margin:0em;width:100%;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;         &lt;span style="color:#ff0000;"&gt;enablePasswordRetrieval&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;false&amp;quot;&lt;/span&gt; &lt;/pre&gt;
&lt;pre style="line-height:12pt;background-color:white;margin:0em;width:100%;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;         &lt;span style="color:#ff0000;"&gt;enablePasswordReset&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;true&amp;quot;&lt;/span&gt; &lt;/pre&gt;
&lt;pre style="line-height:12pt;background-color:#f4f4f4;margin:0em;width:100%;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;         &lt;span style="color:#ff0000;"&gt;requiresQuestionAndAnswer&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;false&amp;quot;&lt;/span&gt; &lt;/pre&gt;
&lt;pre style="line-height:12pt;background-color:white;margin:0em;width:100%;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;         &lt;span style="color:#ff0000;"&gt;requiresUniqueEmail&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;false&amp;quot;&lt;/span&gt; &lt;/pre&gt;
&lt;pre style="line-height:12pt;background-color:#f4f4f4;margin:0em;width:100%;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;         &lt;span style="color:#ff0000;"&gt;passwordFormat&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;Hashed&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="line-height:12pt;background-color:white;margin:0em;width:100%;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;  &lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;providers&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="line-height:12pt;background-color:#f4f4f4;margin:0em;width:100%;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;membership&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p align="justify"&gt;Ten&amp;eacute;is una lista completa de los atributos en las propiedades de la clase &lt;a href="http://msdn.microsoft.com/es-es/library/system.web.security.sqlmembershipprovider_properties.aspx"&gt;SqlMemberShipProvider&lt;/a&gt;.&lt;/p&gt;
&lt;p align="justify"&gt;Y ahora, un poco de &amp;lsquo;chicha&amp;rsquo; en forma de c&amp;oacute;digo:&lt;/p&gt;
&lt;h4&gt;Ejemplos a chol&amp;oacute;n:&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="text-decoration:underline;"&gt;Crear un usuario:&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;div&gt;
&lt;div style="line-height:12pt;background-color:#f4f4f4;width:100%;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;
&lt;pre style="line-height:12pt;background-color:white;margin:0em;width:100%;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;MembershipUser user = Membership.CreateUser(&lt;span style="color:#006080;"&gt;&amp;quot;admin&amp;quot;&lt;/span&gt;, &lt;span style="color:#006080;"&gt;&amp;quot;$admin123&amp;quot;&lt;/span&gt;);&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;M&amp;aacute;s sencillo imposible, verdad? Ahora bien, hay que tener presente que este c&amp;oacute;digo fallar&amp;aacute; con la configuraci&amp;oacute;n predeterminada, ya que debe suministrarse email, y la pregunta y respuesta de seguridad. En su lugar deber&amp;iacute;a usarse este c&amp;oacute;digo:&lt;/p&gt;
&lt;div&gt;
&lt;div style="line-height:12pt;background-color:#f4f4f4;width:100%;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;
&lt;pre style="line-height:12pt;background-color:white;margin:0em;width:100%;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;MembershipCreateStatus status;&lt;/pre&gt;
&lt;pre style="line-height:12pt;background-color:#f4f4f4;margin:0em;width:100%;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;MembershipUser user = Membership.CreateUser(&lt;/pre&gt;
&lt;pre style="line-height:12pt;background-color:white;margin:0em;width:100%;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;    &lt;span style="color:#006080;"&gt;&amp;quot;admin&amp;quot;&lt;/span&gt;, &lt;span style="color:#006080;"&gt;&amp;quot;$admin123&amp;quot;&lt;/span&gt;, &lt;span style="color:#006080;"&gt;&amp;quot;admin@test.com&amp;quot;&lt;/span&gt;,&lt;/pre&gt;
&lt;pre style="line-height:12pt;background-color:#f4f4f4;margin:0em;width:100%;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;    &lt;span style="color:#006080;"&gt;&amp;quot;pregunta de seguridad?&amp;quot;&lt;/span&gt;, &lt;span style="color:#006080;"&gt;&amp;quot;respuesta de seguridad&amp;quot;&lt;/span&gt;, &lt;/pre&gt;
&lt;pre style="line-height:12pt;background-color:white;margin:0em;width:100%;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;    &lt;span style="color:#0000ff;"&gt;true&lt;/span&gt;, &lt;span style="color:#0000ff;"&gt;out&lt;/span&gt; status);&lt;/pre&gt;
&lt;pre style="line-height:12pt;background-color:#f4f4f4;margin:0em;width:100%;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (status == MembershipCreateStatus.Success)&lt;/pre&gt;
&lt;pre style="line-height:12pt;background-color:white;margin:0em;width:100%;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;{&lt;/pre&gt;
&lt;pre style="line-height:12pt;background-color:#f4f4f4;margin:0em;width:100%;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;    MessageBox.Show(&lt;span style="color:#006080;"&gt;&amp;quot;Usuario creado correctamente!&amp;quot;&lt;/span&gt;);&lt;/pre&gt;
&lt;pre style="line-height:12pt;background-color:white;margin:0em;width:100%;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;}&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Bueno, tampoco no es demasiado complicado. La &amp;uacute;nica diferencia es que se proporcionan m&amp;aacute;s argumentos y que devuelve un objeto que define el estado de la creaci&amp;oacute;n del usuario, para saber si se ha creado con &amp;eacute;xito.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="text-decoration:underline;"&gt;Eliminar un usuario:&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;div&gt;
&lt;div style="line-height:12pt;background-color:#f4f4f4;width:100%;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;
&lt;pre style="line-height:12pt;background-color:white;margin:0em;width:100%;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;Membership.DeleteUser(&lt;span style="color:#006080;"&gt;&amp;quot;admin&amp;quot;&lt;/span&gt;);&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Casi demasiado facil :-P&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="text-decoration:underline;"&gt;Obtener un usuario:&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;div&gt;
&lt;div style="line-height:12pt;background-color:#f4f4f4;width:100%;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;
&lt;pre style="line-height:12pt;background-color:white;margin:0em;width:100%;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;MembershipUser user = Membership.GetUser(&lt;span style="color:#006080;"&gt;&amp;quot;admin&amp;quot;&lt;/span&gt;);&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;A partir de este usuario recuperado podemos efectuar cualquier operaci&amp;oacute;n soportada.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="text-decoration:underline;"&gt;Obtener todos los usuarios:&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;div&gt;
&lt;div style="line-height:12pt;background-color:#f4f4f4;width:100%;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;
&lt;pre style="line-height:12pt;background-color:white;margin:0em;width:100%;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;MembershipUserCollection users = Membership.GetAllUsers();&lt;/pre&gt;
&lt;pre style="line-height:12pt;background-color:#f4f4f4;margin:0em;width:100%;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span style="color:#0000ff;"&gt;foreach&lt;/span&gt; (MembershipUser user &lt;span style="color:#0000ff;"&gt;in&lt;/span&gt; users)&lt;/pre&gt;
&lt;pre style="line-height:12pt;background-color:white;margin:0em;width:100%;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;{&lt;/pre&gt;
&lt;pre style="line-height:12pt;background-color:#f4f4f4;margin:0em;width:100%;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;    Console.WriteLine(user.UserName);&lt;/pre&gt;
&lt;pre style="line-height:12pt;background-color:white;margin:0em;width:100%;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;}&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Obtenemos una colecci&amp;oacute; e iteramos por ella para mostrar los nombres.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="text-decoration:underline;"&gt;Validar un usuario:&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;div&gt;
&lt;div style="line-height:12pt;background-color:#f4f4f4;width:100%;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;
&lt;pre style="line-height:12pt;background-color:white;margin:0em;width:100%;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (Membership.ValidateUser(&lt;span style="color:#006080;"&gt;&amp;quot;admin&amp;quot;&lt;/span&gt;, &lt;span style="color:#006080;"&gt;&amp;quot;$admin123&amp;quot;&lt;/span&gt;))&lt;/pre&gt;
&lt;pre style="line-height:12pt;background-color:#f4f4f4;margin:0em;width:100%;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;{&lt;/pre&gt;
&lt;pre style="line-height:12pt;background-color:white;margin:0em;width:100%;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;    MessageBox.Show(&lt;span style="color:#006080;"&gt;&amp;quot;usuario correcto!&amp;quot;&lt;/span&gt;);&lt;/pre&gt;
&lt;pre style="line-height:12pt;background-color:#f4f4f4;margin:0em;width:100%;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;}&lt;/pre&gt;
&lt;pre style="line-height:12pt;background-color:white;margin:0em;width:100%;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span style="color:#0000ff;"&gt;else&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="line-height:12pt;background-color:#f4f4f4;margin:0em;width:100%;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;{&lt;/pre&gt;
&lt;pre style="line-height:12pt;background-color:white;margin:0em;width:100%;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;    MessageBox.Show(&lt;span style="color:#006080;"&gt;&amp;quot;usuario o contrase&amp;ntilde;a incorrecto!&amp;quot;&lt;/span&gt;);&lt;/pre&gt;
&lt;pre style="line-height:12pt;background-color:#f4f4f4;margin:0em;width:100%;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;}&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Ideal para formularios de inicio de sesi&amp;oacute;n. Tened cidado, que si se introduce mal 3 veces se bloquea el usuario.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="text-decoration:underline;"&gt;Obtiene el n&amp;uacute;mero de usuarios conectados:&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;div&gt;
&lt;div style="line-height:12pt;background-color:#f4f4f4;width:100%;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;
&lt;pre style="line-height:12pt;background-color:white;margin:0em;width:100%;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span style="color:#0000ff;"&gt;int&lt;/span&gt; num = Membership.GetNumberOfUsersOnline();&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Sin comentarios.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="text-decoration:underline;"&gt;Busca usuarios por el nombre de usuario o la direcci&amp;oacute;n de correo electr&amp;oacute;nico:&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;div&gt;
&lt;div style="line-height:12pt;background-color:#f4f4f4;width:100%;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;
&lt;pre style="line-height:12pt;background-color:white;margin:0em;width:100%;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;MembershipUserCollection users = Membership.FindUsersByName(&lt;span style="color:#006080;"&gt;&amp;quot;pepe&amp;quot;&lt;/span&gt;);&lt;/pre&gt;
&lt;pre style="line-height:12pt;background-color:#f4f4f4;margin:0em;width:100%;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;MembershipUserCollection users = Membership.FindUsersByEmail(&amp;quot;pepe@test.com&amp;quot;);&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Del mismo modo que GetAllUsers devuelve una colecci&amp;oacute;n de usuarios.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="text-decoration:underline;"&gt;Obtiene la contrase&amp;ntilde;a de un usuario:&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;div&gt;
&lt;div style="line-height:12pt;background-color:#f4f4f4;width:100%;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;
&lt;pre style="line-height:12pt;background-color:white;margin:0em;width:100%;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;MembershipUser user = Membership.GetUser(&lt;span style="color:#006080;"&gt;&amp;quot;admin&amp;quot;&lt;/span&gt;);&lt;/pre&gt;
&lt;pre style="line-height:12pt;background-color:#f4f4f4;margin:0em;width:100%;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; pwd = user.GetPassword();&lt;/pre&gt;
&lt;pre style="line-height:12pt;background-color:white;margin:0em;width:100%;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; pwd = user.GetPassword(&lt;span style="color:#006080;"&gt;&amp;quot;respuesta de seguridad&amp;quot;&lt;/span&gt;);&lt;/pre&gt;
&lt;/div&gt;
Tiene dos sobrecargas, en la segunda debe especificarse la respuesta de seguridad.&lt;/div&gt;
&lt;p&gt;S&amp;oacute;lo es v&amp;aacute;lido si se ha especificado el atributo EnablePasswordRetrieval.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="text-decoration:underline;"&gt;Cambia la contrase&amp;ntilde;a de un usuario:&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;div&gt;
&lt;div style="line-height:12pt;background-color:#f4f4f4;width:100%;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;
&lt;pre style="line-height:12pt;background-color:white;margin:0em;width:100%;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;MembershipUser user = Membership.GetUser(&lt;span style="color:#006080;"&gt;&amp;quot;admin&amp;quot;&lt;/span&gt;);&lt;/pre&gt;
&lt;pre style="line-height:12pt;background-color:#f4f4f4;margin:0em;width:100%;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;user.ChangePassword(&lt;span style="color:#006080;"&gt;&amp;quot;$admin123&amp;quot;&lt;/span&gt;, &lt;span style="color:#006080;"&gt;&amp;quot;@nuevapassword2010&amp;quot;&lt;/span&gt;);&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="text-decoration:underline;"&gt;Resetea la contrase&amp;ntilde;a de un usuario:&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;div&gt;
&lt;div style="line-height:12pt;background-color:#f4f4f4;width:100%;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;
&lt;pre style="line-height:12pt;background-color:white;margin:0em;width:100%;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;MembershipUser user = Membership.GetUser(&lt;span style="color:#006080;"&gt;&amp;quot;admin&amp;quot;&lt;/span&gt;);&lt;/pre&gt;
&lt;pre style="line-height:12pt;background-color:#f4f4f4;margin:0em;width:100%;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; pwd = user.ResetPassword();&lt;/pre&gt;
&lt;pre style="line-height:12pt;background-color:white;margin:0em;width:100%;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; pwd = user.ResetPassword(&lt;span style="color:#006080;"&gt;&amp;quot;respuesta de seguridad&amp;quot;&lt;/span&gt;);&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Tiene dos sobrecargas, en la segunda debe especificarse la respuesta de seguridad.&lt;/p&gt;
&lt;p&gt;S&amp;oacute;lo es v&amp;aacute;lido si se ha especificado el atributo EnablePasswordReset.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="text-decoration:underline;"&gt;Desbloquea un usuario:&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;div&gt;
&lt;div style="line-height:12pt;background-color:#f4f4f4;width:100%;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;
&lt;pre style="line-height:12pt;background-color:white;margin:0em;width:100%;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;MembershipUser user = Membership.GetUser(&lt;span style="color:#006080;"&gt;&amp;quot;admin&amp;quot;&lt;/span&gt;);&lt;/pre&gt;
&lt;pre style="line-height:12pt;background-color:#f4f4f4;margin:0em;width:100%;font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;color:black;font-size:8pt;overflow:visible;border-style:none;padding:0px;"&gt;&lt;span style="color:#0000ff;"&gt;bool&lt;/span&gt; success = user.UnlockUser();&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Particularmente &amp;uacute;til cuando tenemos un usuario bloqueado, ya sea por un intento de intrusi&amp;oacute;n, como por la t&amp;iacute;pica amnesia matutina.&lt;/p&gt;
&lt;p&gt;Y esto es todo por hoy, la semana que viene m&amp;aacute;s :-)&lt;/p&gt;
&lt;p&gt;Espero que esto anime a m&amp;aacute;s de uno a usar este sistema de gesti&amp;oacute;n de usuarios, ya veis que no es nada complicado.&lt;/p&gt;
&lt;p&gt;Saludos a 0&amp;ordm; (hoy ni fr&amp;iacute;o ni calor),&lt;/p&gt;
&lt;p&gt;Nota: Es la primera vez que escribo en el blog todos los d&amp;iacute;as de una semana, as&amp;iacute; que esto hay que celebrarlo con un cafelito. Hasta luego! :-)&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;Art&amp;iacute;culos anteriores de la serie:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/blogs/lfranco/archive/2010/02/03/usando-asp-net-membrership-en-winforms-1-n.aspx"&gt;Usando ASP.NET membrership en Winforms (1 / n)&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/blogs/lfranco/archive/2010/02/03/usando-asp-net-membrership-en-winforms-2-n.aspx"&gt;Usando ASP.NET membrership en Winforms (2 / n)&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=166716" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/lfranco/archive/tags/.NET/default.aspx">.NET</category><category domain="http://geeks.ms/blogs/lfranco/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://geeks.ms/blogs/lfranco/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://geeks.ms/blogs/lfranco/archive/tags/Serie/default.aspx">Serie</category><category domain="http://geeks.ms/blogs/lfranco/archive/tags/2010/default.aspx">2010</category><category domain="http://geeks.ms/blogs/lfranco/archive/tags/Users/default.aspx">Users</category><category domain="http://geeks.ms/blogs/lfranco/archive/tags/Seguridad/default.aspx">Seguridad</category><category domain="http://geeks.ms/blogs/lfranco/archive/tags/MemberShip/default.aspx">MemberShip</category></item><item><title>Personaliza tu Windows 7</title><link>http://geeks.ms/blogs/mrubino/archive/2010/02/05/personaliza-tu-windows-7.aspx</link><pubDate>Fri, 05 Feb 2010 09:22:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:166711</guid><dc:creator>Marc Rubiño</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/mrubino/0e2628bb0a5545d0b9bafac0a3650635_5F00_3C98BE08.jpg"&gt;&lt;img title="0e2628bb-0a55-45d0-b9ba-fac0a3650635" style="border-top-width:0px;display:inline;border-left-width:0px;border-bottom-width:0px;margin:0px 25px 0px 0px;border-right-width:0px;" height="142" alt="0e2628bb-0a55-45d0-b9ba-fac0a3650635" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/mrubino/0e2628bb0a5545d0b9bafac0a3650635_5F00_thumb_5F00_064795F9.jpg" width="187" align="left" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Descarga gratis y personaliza tú Windows 7 con los nuevos Temas disponibles en la página de Microsoft.&lt;/p&gt;  &lt;p&gt;&lt;a title="http://windows.microsoft.com/en-US/windows/downloads/personalize" href="http://windows.microsoft.com/en-US/windows/downloads/personalize"&gt;http://windows.microsoft.com/en-US/windows/downloads/personalize&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Dale a tú Windows 7 un toque personalizado ;-)&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=166711" width="1" height="1"&gt;</description></item><item><title>SharePoint 2010: Formulas para añadir validaciones en listas y columnas!</title><link>http://geeks.ms/blogs/ciin/archive/2010/02/05/sharepoint-2010-formulas-para-a-241-adir-validaciones-en-listas-y-columnas.aspx</link><pubDate>Fri, 05 Feb 2010 08:52:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:166708</guid><dc:creator>Juan Carlos González Martín</dc:creator><slash:comments>0</slash:comments><description>&lt;p align="justify"&gt;En el &lt;a href="http://geeks.ms/blogs/ciin/archive/2010/01/26/sharepoint-2010-mejoras-en-usabilidad-iv.aspx"&gt;&amp;uacute;ltimo post sobre mejoras en usabilidad de la plataforma SharePoint 2010&lt;/a&gt; os comentaba la posibilidad de definir validaciones a nivel de lista. Estas validaciones nos permiten introducir cierta l&amp;oacute;gica de comprobaci&amp;oacute;n de los valores que el usuarios est&amp;aacute; introduciendo en los formularios de creaci&amp;oacute;n o actualizaci&amp;oacute;n de elemento de lista. Ahora bien, cuando hablamos de validaciones tenemos que pensar que las posibilidades est&amp;aacute;n limitadas a una serie de funciones al estilo Excel que podr&amp;eacute;is encontrar en &lt;a href="http://officebeta.microsoft.com/en-us/sharepoint-foundation-help/CH010372694.aspx"&gt;este enlace&lt;/a&gt;. En concreto, tendremos los siguientes tipos de funciones para a&amp;ntilde;adir validaciones a nivel de lista (y de columna) en SharePoint 2010:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div align="justify"&gt;&lt;a href="http://officebeta.microsoft.com/en-us/sharepoint-foundation-help/CH010372696.aspx"&gt;Funciones de fecha y tiempo&lt;/a&gt;.&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div align="justify"&gt;&lt;a href="http://officebeta.microsoft.com/en-us/sharepoint-foundation-help/CH010372697.aspx"&gt;Funciones financieras&lt;/a&gt;.&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div align="justify"&gt;&lt;a href="http://officebeta.microsoft.com/en-us/sharepoint-foundation-help/CH010372698.aspx"&gt;Funciones de informaci&amp;oacute;n&lt;/a&gt;.&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div align="justify"&gt;&lt;a href="http://officebeta.microsoft.com/en-us/sharepoint-foundation-help/CH010372699.aspx"&gt;Funciones l&amp;oacute;gicas&lt;/a&gt;.&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div align="justify"&gt;&lt;a href="http://officebeta.microsoft.com/en-us/sharepoint-foundation-help/CH010372700.aspx"&gt;Funciones de b&amp;uacute;squeda y referencia&lt;/a&gt;.&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div align="justify"&gt;&lt;a href="http://officebeta.microsoft.com/en-us/sharepoint-foundation-help/CH010372701.aspx"&gt;Funciones matem&amp;aacute;ticas y trigonom&amp;eacute;tricas&lt;/a&gt;.&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div align="justify"&gt;&lt;a href="http://officebeta.microsoft.com/en-us/sharepoint-foundation-help/CH010372702.aspx"&gt;Funciones estad&amp;iacute;sticas&lt;/a&gt;.&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div align="justify"&gt;&lt;a href="http://officebeta.microsoft.com/en-us/sharepoint-foundation-help/CH010372703.aspx"&gt;Funciones para el trabajo con cadenas y datos&lt;/a&gt;.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p align="center"&gt;&lt;a href="http://www.ciin.es/imagenes/SharePoint2010Formulasparaaadirvalidacio_100DD/SharePoint2010.png"&gt;&lt;img height="220" width="244" src="http://www.ciin.es/imagenes/SharePoint2010Formulasparaaadirvalidacio_100DD/SharePoint2010_thumb.png" alt="SharePoint2010" border="0" title="SharePoint2010" style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=166708" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/ciin/archive/tags/SharePoint+2010/default.aspx">SharePoint 2010</category><category domain="http://geeks.ms/blogs/ciin/archive/tags/SharePoint+Foundation+2010/default.aspx">SharePoint Foundation 2010</category></item><item><title>Tweak UI el resto!</title><link>http://geeks.ms/blogs/juansa/archive/2010/02/05/tweak-ui-el-resto.aspx</link><pubDate>Fri, 05 Feb 2010 08:40:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:166707</guid><dc:creator>Juansa</dc:creator><slash:comments>2</slash:comments><description>&lt;p&gt;&lt;a href="http://www.microsoft.com/windowsxp/Downloads/powertoys/Xppowertoys.mspx"&gt;http://www.microsoft.com/windowsxp/Downloads/powertoys/Xppowertoys.mspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Es f&amp;aacute;cil de instalar, luego accederemos desde Inicio, todos los programas, Powertoys for Windows y TweakUI. En el panel izquierdo elegiremos la categor&amp;iacute;a y en el derecho editamos la configuraci&amp;oacute;n a cambiar deseada.&lt;/p&gt;
&lt;p&gt;-------------------------------&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;span style="text-decoration:underline;"&gt;Taskbar y Start Menu&lt;/span&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/juansa.metablogapi/6874.taskbarStartMenu01_5F00_111AE77D.jpg"&gt;&lt;img height="228" width="283" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/juansa.metablogapi/3644.taskbarStartMenu01_5F00_thumb_5F00_6FBDD291.jpg" alt="taskbarStartMenu01" border="0" title="taskbarStartMenu01" style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;table width="744" cellpadding="2" cellspacing="2" border="0"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td width="181" valign="top"&gt;Enable ballon tips&lt;/td&gt;
&lt;td width="169" valign="top"&gt;EnableBallonTips&lt;/td&gt;
&lt;td width="91" valign="top"&gt;REG_DWORD&lt;/td&gt;
&lt;td width="46" valign="top"&gt;0x00 &lt;br /&gt;0x01&lt;/td&gt;
&lt;td width="243" valign="top"&gt;KKCU\Software\Microsoft\Windows &lt;br /&gt;\CurrentVersion\Explorer\Advanced&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="181" valign="top"&gt;Aviso de poco espacio en disco&lt;/td&gt;
&lt;td width="169" valign="top"&gt;NoLowDiskSpaceChecks&lt;/td&gt;
&lt;td width="91" valign="top"&gt;REG_DWORD&lt;/td&gt;
&lt;td width="46" valign="top"&gt;0x00 &lt;br /&gt;0x01&lt;/td&gt;
&lt;td width="243" valign="top"&gt;KKCU\Software\Microsoft\Windows &lt;br /&gt;\CurrentVersion\Policies\Explorer&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="181" valign="top"&gt;Mostrar nombre en el men&amp;uacute; inicio&lt;/td&gt;
&lt;td width="169" valign="top"&gt;NoUserNameInStartMenu&lt;/td&gt;
&lt;td width="91" valign="top"&gt;REG_DWORD&lt;/td&gt;
&lt;td width="46" valign="top"&gt;0x00 &lt;br /&gt;0x01&lt;/td&gt;
&lt;td width="243" valign="top"&gt;KKCU\Software\Microsoft\Windows &lt;br /&gt;\CurrentVersion\Policies\Explorer&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="181" valign="top"&gt;Mostrar iconos de notificaci&amp;oacute;n&lt;/td&gt;
&lt;td width="169" valign="top"&gt;NoTrayItemsDisplay&lt;/td&gt;
&lt;td width="91" valign="top"&gt;REG_DWORD&lt;/td&gt;
&lt;td width="46" valign="top"&gt;0x00 &lt;br /&gt;0x01&lt;/td&gt;
&lt;td width="243" valign="top"&gt;KKCU\Software\Microsoft\Windows &lt;br /&gt;\CurrentVersion\Policies\Explorer&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;&lt;span style="text-decoration:underline;"&gt;Grouping&lt;/span&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/juansa.metablogapi/3731.taskbarStartMenu02_5F00_4CFC9AD4.jpg"&gt;&lt;img height="195" width="244" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/juansa.metablogapi/6215.taskbarStartMenu02_5F00_thumb_5F00_332AF556.jpg" alt="taskbarStartMenu02" border="0" title="taskbarStartMenu02" style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;La configuraci&amp;oacute;n de esta categor&amp;iacute;a, descrita en la tabla posterior, nos permite controlar como se agrupan los botones en la barra de tareas. Con el valor &lt;strong&gt;TaskbarGroupSize&lt;/strong&gt;, que crearemos si no existe, determinamos las aplicaciones que Windows agrupa primero:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Las menos utilizadas primero &lt;/li&gt;
&lt;li&gt;Las m&amp;aacute;s utilizadas primero &lt;/li&gt;
&lt;li&gt;Cualquiera con al menos N ventanas abiertas. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;En los tres casos es un valor REG_DWORD(tabla). &lt;/p&gt;
&lt;table width="665" cellpadding="2" cellspacing="2" border="0"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td width="129" valign="top"&gt;Menos usadas primero&lt;/td&gt;
&lt;td width="121" valign="top"&gt;TaskbarGroupSize&lt;/td&gt;
&lt;td width="91" valign="top"&gt;REG_DWORD&lt;/td&gt;
&lt;td width="52" valign="top"&gt;0x00 &lt;br /&gt;&lt;/td&gt;
&lt;td width="258" valign="top"&gt;KKCU\Software\Microsoft\Windows &lt;br /&gt;\CurrentVersion\Explorer\Advanced&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="129" valign="top"&gt;M&amp;aacute;s usadas primero&lt;/td&gt;
&lt;td width="121" valign="top"&gt;TaskbarGroupSize&lt;/td&gt;
&lt;td width="91" valign="top"&gt;REG_DWORD&lt;/td&gt;
&lt;td width="52" valign="top"&gt;0x01&lt;/td&gt;
&lt;td width="258" valign="top"&gt;KKCU\Software\Microsoft\Windows &lt;br /&gt;\CurrentVersion\Explorer\Advanced&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="129" valign="top"&gt;Con N ventanas abiertas&lt;/td&gt;
&lt;td width="121" valign="top"&gt;TaskbarGroupSize&lt;/td&gt;
&lt;td width="91" valign="top"&gt;REG_DWORD&lt;/td&gt;
&lt;td width="52" valign="top"&gt;N&lt;/td&gt;
&lt;td width="258" valign="top"&gt;KKCU\Software\Microsoft\Windows &lt;br /&gt;\CurrentVersion\Explorer\Advanced&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;em&gt;&lt;span style="text-decoration:underline;"&gt;Start Menu&lt;/span&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/juansa.metablogapi/1007.taskbarStartMenu03_5F00_171CC71C.jpg"&gt;&lt;img height="195" width="244" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/juansa.metablogapi/0435.taskbarStartMenu03_5F00_thumb_5F00_61A92658.jpg" alt="taskbarStartMenu03" border="0" title="taskbarStartMenu03" style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Windows nos muestra los programas m&amp;aacute;s utilizados en el men&amp;uacute; de inicio. Esta caracter&amp;iacute;stica nos impide tener localizadas por aplicaciones que usamos frecuentemente. Algunas aplicaciones no pertenecen a esta lista, sin embargo. Es cansado ver el bloc de notas aqu&amp;iacute; s&amp;oacute;lo porque hemos abierto un archivo de texto o el Command Prompt por haber escrito cmd en ejecutar como. La soluci&amp;oacute;n es decirle a Windows que no queremos a&amp;ntilde;adirlas al menu de inicio. La llave es HKCU\Software\Classes\Applications, las aplicaciones que s&amp;iacute; queremos mantener en el men&amp;uacute; de inicio se a&amp;ntilde;adir&amp;aacute;n en una sub-llave con el mismo nombre del nombre del archivo del programa(sin la ruta), dentro a&amp;ntilde;adimos un valor REG_SZ de nombre &lt;strong&gt;&lt;em&gt;NoStartPage&lt;/em&gt;&lt;/strong&gt; y lo dejamos en blanco.&lt;/p&gt;
&lt;p&gt;P.e.: Si no queremos que la calculadora aparezca, HKCU\Software\Classes\Applications\Notepad.exe\NoStartPage&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/juansa.metablogapi/1581.NoStartPage_5F00_1A566117.jpg"&gt;&lt;img height="157" width="455" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/juansa.metablogapi/5381.NoStartPage_5F00_thumb_5F00_5DC0F32A.jpg" alt="NoStartPage" border="0" title="NoStartPage" style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;em&gt;&lt;span style="text-decoration:underline;"&gt;Desktop&lt;/span&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/juansa.metablogapi/0435.desktop01_5F00_4F850AEB.jpg"&gt;&lt;img height="237" width="294" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/juansa.metablogapi/8037.desktop01_5F00_thumb_5F00_1CB79528.jpg" alt="desktop01" border="0" title="desktop01" style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;No mostrar ciertos iconos en el escritorio, esto se usaba en Windows98 porque sal&amp;iacute;an todos por defecto, pero ah&amp;iacute; est&amp;aacute;.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;&lt;span style="text-decoration:underline;"&gt;First Icon&lt;/span&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/juansa.metablogapi/4336.desktop02_5F00_52BC1435.jpg"&gt;&lt;img height="194" width="244" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/juansa.metablogapi/1425.desktop02_5F00_thumb_5F00_1458E133.jpg" alt="desktop02" border="0" title="desktop02" style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Aqu&amp;iacute; se elige qu&amp;eacute; icono aparece el primero en el escritorio, My documents o My Computer. &lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;em&gt;&lt;span style="text-decoration:underline;"&gt;My Computer&lt;/span&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/juansa.metablogapi/3247.mycomputer01_5F00_666E1F2B.jpg"&gt;&lt;img height="242" width="301" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/juansa.metablogapi/6283.mycomputer01_5F00_thumb_5F00_49F3BDFC.jpg" alt="mycomputer01" border="0" title="mycomputer01" style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Determinamos los iconos que queremos ver en Mi PC.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;&lt;span style="text-decoration:underline;"&gt;Drives&lt;/span&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/juansa.metablogapi/8037.mycomputer02_5F00_7BEDEF37.jpg"&gt;&lt;img height="194" width="244" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/juansa.metablogapi/2664.mycomputer02_5F00_thumb_5F00_342EF701.jpg" alt="mycomputer02" border="0" title="mycomputer02" style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Unidades a ocultar.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;span style="text-decoration:underline;"&gt;Special Folders&lt;/span&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/juansa.metablogapi/6283.mycomputer03_5F00_383BD584.jpg"&gt;&lt;img height="194" width="244" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/juansa.metablogapi/3644.mycomputer03_5F00_thumb_5F00_5E34168B.jpg" alt="mycomputer03" border="0" title="mycomputer03" style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Carpetas especiales, como Mis im&amp;aacute;genes, Mis Documentos,&amp;hellip;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;span style="text-decoration:underline;"&gt;Autoplay&lt;/span&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/juansa.metablogapi/3568.mycomputer04_5F00_025C01CC.jpg"&gt;&lt;img height="194" width="244" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/juansa.metablogapi/0116.mycomputer04_5F00_thumb_5F00_1A81FCD8.jpg" alt="mycomputer04" border="0" title="mycomputer04" style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Toda acci&amp;oacute;n de esta categor&amp;iacute;a se halla en las subcategor&amp;iacute;as siguientes. En &lt;strong&gt;&lt;em&gt;Drives&lt;/em&gt;&lt;/strong&gt;, impedimos qu&amp;eacute; unidades ejecuten autom&amp;aacute;ticamente medios al insertarlos. &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;em&gt;&lt;span style="text-decoration:underline;"&gt;Drives&lt;/span&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/juansa.metablogapi/7041.mycomputer05_5F00_1C54E350.jpg"&gt;&lt;img height="194" width="244" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/juansa.metablogapi/1425.mycomputer05_5F00_thumb_5F00_4D76AEA1.jpg" alt="mycomputer05" border="0" title="mycomputer05" style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;En &lt;strong&gt;&lt;em&gt;Types&lt;/em&gt;&lt;/strong&gt; controlamos el autoplay para tipos espec&amp;iacute;ficos de medio.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;em&gt;&lt;span style="text-decoration:underline;"&gt;Types&lt;/span&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/juansa.metablogapi/3568.mycomputer06_5F00_465A02DA.jpg"&gt;&lt;img height="194" width="244" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/juansa.metablogapi/3250.mycomputer06_5F00_thumb_5F00_3E64F129.jpg" alt="mycomputer06" border="0" title="mycomputer06" style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Y en la &amp;uacute;ltima, &lt;em&gt;&lt;strong&gt;handlers&lt;/strong&gt;&lt;/em&gt;: cuando Windows detecta que hemos insertado un CD, DVD o unidad removible, autom&amp;aacute;ticamente ejecuta el programa asociado con el tipo de contenido de ese disco; en esta categor&amp;iacute;a tenemos una lista para controlar que programas se est&amp;aacute;n usando con esos distintos tipos de contenido. &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;em&gt;&lt;span style="text-decoration:underline;"&gt;Handlers&lt;/span&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/juansa.metablogapi/4130.mycomputer07_5F00_37484562.jpg"&gt;&lt;img height="195" width="244" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/juansa.metablogapi/4743.mycomputer07_5F00_thumb_5F00_00FECF66.jpg" alt="mycomputer07" border="0" title="mycomputer07" style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;span style="text-decoration:underline;"&gt;Drive Letters&lt;/span&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/juansa.metablogapi/2654.mycomputer08_5F00_55DEE3B3.jpg"&gt;&lt;img height="195" width="244" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/juansa.metablogapi/0820.mycomputer08_5F00_thumb_5F00_40178C07.jpg" alt="mycomputer08" border="0" title="mycomputer08" style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Esta categor&amp;iacute;a nos permite configurar como el explorador de Windows muestra las letras de unidad en relaci&amp;oacute;n con su etiqeuta de Volumen.&lt;/p&gt;
&lt;p&gt;- Mostrar despu&amp;eacute;s de la etiqueta.&lt;/p&gt;
&lt;p&gt;- Mostrar antes de la etiqueta.&lt;/p&gt;
&lt;p&gt;- Mostrar las unidades de red antes de la etiqueta y las locales despu&amp;eacute;s de la etiqueta.&lt;/p&gt;
&lt;p&gt;- Nunca se muestran las letras de unidad. &lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;em&gt;&lt;span style="text-decoration:underline;"&gt;Control Panel&lt;/span&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/juansa.metablogapi/2664.ControlPanel_5F00_388EAD4B.jpg"&gt;&lt;img height="273" width="338" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/juansa.metablogapi/8030.ControlPanel_5F00_thumb_5F00_44B548D4.jpg" alt="ControlPanel" border="0" title="ControlPanel" style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Mostrar u ocultar iconos del Panel de Control espec&amp;iacute;ficos.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;span style="text-decoration:underline;"&gt;Templates&lt;/span&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/juansa.metablogapi/7360.Templates_5F00_243099D3.jpg"&gt;&lt;img height="276" width="342" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/juansa.metablogapi/0027.Templates_5F00_thumb_5F00_5F1A5D4D.jpg" alt="Templates" border="0" title="Templates" style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Personalizar las plantillas que veremos cuando hagamos clic derecho sobre el escritorio o espacio sin usar de una ventana de carpeta y pulsamos NUEVO.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;span style="text-decoration:underline;"&gt;Internet Explorer&lt;/span&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/juansa.metablogapi/6371.ie01_5F00_1E0E6E9A.jpg"&gt;&lt;img height="278" width="345" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/juansa.metablogapi/4336.ie01_5F00_thumb_5F00_5D027FE6.jpg" alt="ie01" border="0" title="ie01" style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Las dos configuraciones que se ven en la categor&amp;iacute;a de IE: &lt;em&gt;&lt;strong&gt;Autocorrect Backslashes to Slashes&lt;/strong&gt;&lt;/em&gt; e &lt;em&gt;&lt;strong&gt;Include Path Search in address bar&lt;/strong&gt;&lt;/em&gt; est&amp;aacute;n en la llave &lt;em&gt;HCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Band\Address&lt;/em&gt;, valores &lt;strong&gt;AutoCorrect&lt;/strong&gt; y &lt;strong&gt;PATH&lt;/strong&gt; (ambos REG_DWORD).&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;&lt;span style="text-decoration:underline;"&gt;Tool Background&lt;/span&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/juansa.metablogapi/7041.ie02_5F00_2EAB8AEA.jpg"&gt;&lt;img height="195" width="244" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/juansa.metablogapi/0027.ie02_5F00_thumb_5F00_02911EAA.jpg" alt="ie02" border="0" title="ie02" style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Configuraci&amp;oacute;n que TweakUI establece al personalizar IE y Windows Explorer con una imagen bitmap.&lt;/p&gt;
&lt;p&gt;KCU\Software\Microsoft\Internet Explorer\Toolbar&lt;/p&gt;
&lt;table width="667" cellpadding="2" cellspacing="2" border="0"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td width="393" valign="top"&gt;Fondo personalizado para la barra de IE&lt;/td&gt;
&lt;td width="116" valign="top"&gt;BackBitmapIE5&lt;/td&gt;
&lt;td width="65" valign="top"&gt;REG_SZ&lt;/td&gt;
&lt;td width="81" valign="top"&gt;archivo&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width="393" valign="top"&gt;Fondo personalizado para la barra de Windows Explorer&lt;/td&gt;
&lt;td width="116" valign="top"&gt;BackBitmapShell&lt;/td&gt;
&lt;td width="65" valign="top"&gt;REG_SZ&lt;/td&gt;
&lt;td width="81" valign="top"&gt;archivo&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;em&gt;&lt;span style="text-decoration:underline;"&gt;Search&lt;/span&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/juansa.metablogapi/4237.ie03_5F00_6D35F9F2.jpg"&gt;&lt;img height="195" width="244" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/juansa.metablogapi/6864.ie03_5F00_thumb_5F00_560D1025.jpg" alt="ie03" border="0" title="ie03" style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Aqu&amp;iacute; podemos a&amp;ntilde;adir URLs de b&amp;uacute;squeda a IE para usarlas desde la barra de direcciones del navegador. &lt;/p&gt;
&lt;p&gt;Por ejemplo: &lt;/p&gt;
&lt;p&gt;A&amp;ntilde;adimos CycleOps news&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/juansa.metablogapi/5314.ieseachr01_5F00_334BD868.jpg"&gt;&lt;img height="184" width="244" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/juansa.metablogapi/3731.ieseachr01_5F00_thumb_5F00_66AA2C75.jpg" alt="ieseachr01" border="0" title="ieseachr01" style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" /&gt;&lt;/a&gt;&amp;nbsp;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/juansa.metablogapi/5126.ieseachr02_5F00_7CFFD1BA.jpg"&gt;&lt;img height="200" width="244" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/juansa.metablogapi/8358.ieseachr02_5F00_thumb_5F00_30CA58BD.jpg" alt="ieseachr02" border="0" title="ieseachr02" style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Si abrimos el IE y en la barra de direcciones escribimos directamente Cycleops News, se abrir&amp;aacute; el buscardor con dichas palabras de b&amp;uacute;squeda y sus resultados.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;span style="text-decoration:underline;"&gt;View source&lt;/span&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/juansa.metablogapi/5314.ie04_5F00_471FFE02.jpg"&gt;&lt;img height="195" width="244" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/juansa.metablogapi/3731.ie04_5F00_thumb_5F00_1F7C1289.jpg" alt="ie04" border="0" title="ie04" style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Cambio del programa con que IE mostrar&amp;aacute; el c&amp;oacute;digo fuente de la p&amp;aacute;gina web.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;span style="text-decoration:underline;"&gt;Small Animation&lt;/span&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/juansa.metablogapi/6874.ie05_5F00_185F66C2.jpg"&gt;&lt;img height="195" width="244" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/juansa.metablogapi/5633.ie05_5F00_thumb_5F00_7E8DC143.jpg" alt="ie05" border="0" title="ie05" style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Este icono es el que vemos en la esquina derecha y arriba de la barra de IE. El icono es animado cuando el IE est&amp;aacute; ocupado y est&amp;aacute;tico cuando finaliza su carga. Aqu&amp;iacute; podemos personalizar esta animaci&amp;oacute;n.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;span style="text-decoration:underline;"&gt;Large Animation&lt;/span&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/juansa.metablogapi/5710.ie06_5F00_11D10894.jpg"&gt;&lt;img height="195" width="244" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/juansa.metablogapi/0027.ie06_5F00_thumb_5F00_7EB26C98.jpg" alt="ie06" border="0" title="ie06" style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Este icono es la versi&amp;oacute;n en grande del anterior. &lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;span style="text-decoration:underline;"&gt;Image Toolbar&lt;/span&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/juansa.metablogapi/7853.ie07_5F00_42F56496.jpg"&gt;&lt;img height="195" width="244" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/juansa.metablogapi/3644.ie07_5F00_thumb_5F00_1B51791D.jpg" alt="ie07" border="0" title="ie07" style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;em&gt;&lt;span style="text-decoration:underline;"&gt;Command Prompt&lt;/span&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/juansa.metablogapi/2664.CommandPrompt_5F00_18AB4E1D.jpg"&gt;&lt;img height="264" width="327" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/juansa.metablogapi/2570.CommandPrompt_5F00_thumb_5F00_37F085A1.jpg" alt="CommandPrompt" border="0" title="CommandPrompt" style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Configuraci&amp;oacute;n para la ventana de prompt. &lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;span style="text-decoration:underline;"&gt;Logon&lt;/span&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/juansa.metablogapi/2086.logon01_5F00_697E83E7.jpg"&gt;&lt;img height="274" width="340" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/juansa.metablogapi/6864.logon01_5F00_thumb_5F00_13ED45B6.jpg" alt="logon01" border="0" title="logon01" style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;&lt;span style="text-decoration:underline;"&gt;Autologon&lt;/span&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/juansa.metablogapi/3250.logon02_5F00_53B9BCEC.jpg"&gt;&lt;img height="195" width="244" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/juansa.metablogapi/2260.logon02_5F00_thumb_5F00_078443EF.jpg" alt="logon02" border="0" title="logon02" style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&amp;Uacute;til para habilitar autom&amp;aacute;ticamente el inicio de sesi&amp;oacute;n, si es que es &amp;uacute;til&amp;hellip;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;span style="text-decoration:underline;"&gt;Settings&lt;/span&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/juansa.metablogapi/8037.logon03_5F00_325F38B2.jpg"&gt;&lt;img height="195" width="244" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/juansa.metablogapi/0116.logon03_5F00_thumb_5F00_4A8533BE.jpg" alt="logon03" border="0" title="logon03" style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Permite copiar la configuraci&amp;oacute;n actual de escritorio al perfil de usuario actual.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;span style="text-decoration:underline;"&gt;Screen Saver&lt;/span&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/juansa.metablogapi/6874.logon04_5F00_55B14EB9.jpg"&gt;&lt;img height="195" width="244" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/juansa.metablogapi/1106.logon04_5F00_thumb_5F00_62ADBF7B.jpg" alt="logon04" border="0" title="logon04" style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Salvapantallas&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;em&gt;&lt;span style="text-decoration:underline;"&gt;Access Control&lt;/span&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/juansa.metablogapi/5126.AccessControl_5F00_41BCDD85.jpg"&gt;&lt;img height="285" width="354" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/juansa.metablogapi/6470.AccessControl_5F00_thumb_5F00_1DB99D9A.jpg" alt="AccessControl" border="0" title="AccessControl" style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Control de Acceso.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;span style="text-decoration:underline;"&gt;Repair&lt;/span&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/juansa.metablogapi/1184.Repair_5F00_5FC29D8C.jpg"&gt;&lt;img height="292" width="362" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/juansa.metablogapi/3568.Repair_5F00_thumb_5F00_47C14DD5.jpg" alt="Repair" border="0" title="Repair" style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Peque&amp;ntilde;as reparaciones que eran interesantes en XP o anteriores. &lt;/p&gt;
&lt;p&gt;---&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=166707" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/juansa/archive/tags/Herramientas/default.aspx">Herramientas</category></item><item><title>Por sorpresa… ASP.NET MVC 2 RC 2</title><link>http://geeks.ms/blogs/jmaguilar/archive/2010/02/05/por-sorpresa-asp-net-mvc-2-rc-2.aspx</link><pubDate>Fri, 05 Feb 2010 08:34:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:166706</guid><dc:creator>José M. Aguilar</dc:creator><slash:comments>0</slash:comments><description>Hace unas horas Phil Haack ha anunciado la publicaci&amp;oacute;n de la pen &amp;uacute;ltima revisi&amp;oacute;n del framework MVC 2 antes de la versi&amp;oacute;n final. Seg&amp;uacute;n se recoge en el documento de notas de la revisi&amp;oacute;n , la &amp;uacute;nica caracter&amp;iacute;stica a&amp;ntilde;adida ha sido el cambio en la forma de validar las entidades del Modelo. En versiones anteriores, durante el binding se evaluaban las restricciones establecidas en las propiedades cuyos valores eran recibidos por el servidor,...(&lt;a href="http://geeks.ms/blogs/jmaguilar/archive/2010/02/05/por-sorpresa-asp-net-mvc-2-rc-2.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://geeks.ms/aggbug.aspx?PostID=166706" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/jmaguilar/archive/tags/novedades/default.aspx">novedades</category><category domain="http://geeks.ms/blogs/jmaguilar/archive/tags/noticias/default.aspx">noticias</category><category domain="http://geeks.ms/blogs/jmaguilar/archive/tags/aspnetmvc/default.aspx">aspnetmvc</category></item><item><title>[MOSS] Llamadas a métodos .NET desde un Xsl (ContentByQueryWebPart)</title><link>http://geeks.ms/blogs/lruiz/archive/2010/02/05/moss-llamadas-a-m-233-todos-net-desde-un-xsl-contentbyquerywebpart.aspx</link><pubDate>Fri, 05 Feb 2010 07:48:19 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:166703</guid><dc:creator>Luis Ruiz Pavón</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;En ocasiones puede ser necesario que desde un Xsl tengamos que llamar a un método .NET. En mi caso era para parsear el valor de un campo que contiene un Xml.&lt;/p&gt;  &lt;p&gt;Lo primero será crearnos una clase para definir los métodos que vamos a llamar desde nuestros Xsl:&lt;/p&gt;  &lt;div id="codeSnippetWrapper"&gt;   &lt;div style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;" id="codeSnippet"&gt;     &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;class&lt;/span&gt; XsltCustomFunctions&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;{&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;    &lt;span style="color:#cc6633;"&gt;#region&lt;/span&gt; Variables&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&amp;#160;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;    &lt;span style="color:#008000;"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;    &lt;span style="color:#008000;"&gt;/// Singleton Instance&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;    &lt;span style="color:#008000;"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;    &lt;span style="color:#0000ff;"&gt;static&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;readonly&lt;/span&gt; XsltCustomFunctions instance = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; XsltCustomFunctions();&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&amp;#160;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;    &lt;span style="color:#cc6633;"&gt;#endregion&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&amp;#160;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;    &lt;span style="color:#cc6633;"&gt;#region&lt;/span&gt; Properties&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&amp;#160;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;    &lt;span style="color:#008000;"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;    &lt;span style="color:#008000;"&gt;/// Gets the instance.&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;    &lt;span style="color:#008000;"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;    &lt;span style="color:#008000;"&gt;/// &amp;lt;value&amp;gt;The instance.&amp;lt;/value&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;    &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;static&lt;/span&gt; XsltCustomFunctions Instance&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;    {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;        get&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;        {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;            &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; instance;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;        }&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;    }&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&amp;#160;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;    &lt;span style="color:#cc6633;"&gt;#endregion&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&amp;#160;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;    &lt;span style="color:#cc6633;"&gt;#region&lt;/span&gt; Constructor&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&amp;#160;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;    &lt;span style="color:#008000;"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;    &lt;span style="color:#008000;"&gt;/// Initializes the &amp;lt;see cref=&amp;quot;XsltCustomFunctions&amp;quot;/&amp;gt; class.&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;    &lt;span style="color:#008000;"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;    &lt;span style="color:#0000ff;"&gt;static&lt;/span&gt; XsltCustomFunctions()&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;    {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&amp;#160;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;    }&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&amp;#160;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;    &lt;span style="color:#008000;"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;    &lt;span style="color:#008000;"&gt;/// Initializes a new instance of the &amp;lt;see cref=&amp;quot;XsltCustomFunctions&amp;quot;/&amp;gt; class.&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;    &lt;span style="color:#008000;"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;    XsltCustomFunctions()&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;    {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&amp;#160;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;    }&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&amp;#160;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;    &lt;span style="color:#cc6633;"&gt;#endregion&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&amp;#160;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;    &lt;span style="color:#cc6633;"&gt;#region&lt;/span&gt; Methods&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&amp;#160;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;    &lt;span style="color:#cc6633;"&gt;#region&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&amp;#160;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;    &lt;span style="color:#008000;"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;    &lt;span style="color:#008000;"&gt;/// Gets the average.&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;    &lt;span style="color:#008000;"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;    &lt;span style="color:#008000;"&gt;/// &amp;lt;param name=&amp;quot;xml&amp;quot;&amp;gt;The XML.&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;    &lt;span style="color:#008000;"&gt;/// &amp;lt;returns&amp;gt;&amp;lt;/returns&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;    &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; GetAverage(&lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; xml)&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;    {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;        &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; response = String.Empty;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&amp;#160;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;        &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (!String.IsNullOrEmpty(xml))&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;        {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;            &lt;span style="color:#008000;"&gt;///&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;        }&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&amp;#160;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;        &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; response;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;    }&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&amp;#160;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;    &lt;span style="color:#cc6633;"&gt;#endregion&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&amp;#160;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;    &lt;span style="color:#cc6633;"&gt;#endregion&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;}&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Lo siguiente que tenemos que hacer es añadir un &lt;strong&gt;ExtensionObject&lt;/strong&gt; para poder llamar a los métodos de la clase que creamos anteriormente. Esto lo vamos a hacer sobreescribiendo el método &lt;strong&gt;ModifyXsltArgumentList&lt;/strong&gt; del &lt;strong&gt;ContentQueryByWebPart&lt;/strong&gt;:&lt;/p&gt;

&lt;div id="codeSnippetWrapper"&gt;
  &lt;div style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;" id="codeSnippet"&gt;
    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;class&lt;/span&gt; MyContentByQueryWebPart : ContentByQueryWebPart&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;{&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;    &lt;span style="color:#008000;"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;    &lt;span style="color:#008000;"&gt;/// Modifies the XSLT argument list.&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;    &lt;span style="color:#008000;"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;    &lt;span style="color:#008000;"&gt;/// &amp;lt;param name=&amp;quot;argList&amp;quot;&amp;gt;The arg list.&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;    &lt;span style="color:#0000ff;"&gt;protected&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;override&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; ModifyXsltArgumentList(ArgumentClassWrapper argList)&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;    {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;        argList.AddExtensionObject(&lt;span style="color:#006080;"&gt;&amp;quot;http://www.midominio.es/Assembly/XsltCustomFunctions&amp;quot;&lt;/span&gt;, &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;            TC.REDILC.Common.XsltCustomFunctions.Instance);&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&amp;#160;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;        &lt;span style="color:#0000ff;"&gt;base&lt;/span&gt;.ModifyXsltArgumentList(argList);&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;    }&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;}&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;El primer parámetro es el namespace (Puedes poner el que tu quieras en mi caso uso el nombre de la empresa + nombre de assembly + clase) que luego usaremos en el Xsl y el segundo es una instancia de la clase que creamos anteriormente. &lt;/p&gt;

&lt;p&gt;Como veis, se hace uso del patrón &lt;strong&gt;Singleton&lt;/strong&gt; para no estar creando un monton de instancias cada vez que se llama al método y así mejorar el performance y ahorrar memoria.&lt;/p&gt;

&lt;p&gt;Por último solo nos queda crear el Xsl y llamar a nuestro método. Lo primero registrar el namespace que usamos cuando añadimos el &lt;strong&gt;ExtensionObject&lt;/strong&gt;:&lt;/p&gt;

&lt;div id="codeSnippetWrapper"&gt;
  &lt;div style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;" id="codeSnippet"&gt;
    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;xsl:stylesheet&lt;/span&gt; &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;  &lt;span style="color:#ff0000;"&gt;version&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;1.0&amp;quot;&lt;/span&gt; &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;  &lt;span style="color:#ff0000;"&gt;exclude-result-prefixes&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;x d xsl msxsl cmswrt&amp;quot;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;  &lt;span style="color:#ff0000;"&gt;xmlns:x&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&lt;/span&gt; &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;  &lt;span style="color:#ff0000;"&gt;xmlns:d&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;http://schemas.microsoft.com/sharepoint/dsp&amp;quot;&lt;/span&gt; &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;  &lt;span style="color:#ff0000;"&gt;xmlns:cmswrt&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;http://schemas.microsoft.com/WebParts/v3/Publishing/runtime&amp;quot;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;  &lt;span style="color:#ff0000;"&gt;xmlns:xsl&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;xmlns:msxsl&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;urn:schemas-microsoft-com:xslt&amp;quot;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;  &lt;span style="color:#ff0000;"&gt;xmlns:geeksms&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;http://www.midominio.es/Assembly/XsltCustomFunctions&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Y por último la llamada al método:&lt;/p&gt;

&lt;div id="codeSnippetWrapper"&gt;
  &lt;div style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;" id="codeSnippet"&gt;
    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;div&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;class&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;average&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;    &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;xsl:value-of&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;select&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;geeksms:GetAverage(Xml)&amp;quot;&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:white;margin:0em;padding-left:0px;width:100%;padding-right:0px;font-family:&amp;#39;Courier New&amp;#39;, courier, monospace;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;div&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
Espero que os sirva, un saludo y buen finde para todos :)

&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=166703" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/lruiz/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://geeks.ms/blogs/lruiz/archive/tags/MOSS+2007/default.aspx">MOSS 2007</category><category domain="http://geeks.ms/blogs/lruiz/archive/tags/Xml/default.aspx">Xml</category><category domain="http://geeks.ms/blogs/lruiz/archive/tags/WebParts/default.aspx">WebParts</category><category domain="http://geeks.ms/blogs/lruiz/archive/tags/Xsl/default.aspx">Xsl</category></item><item><title>Concurso – Microsoft Hardware</title><link>http://geeks.ms/blogs/jesusgonzales/archive/2010/02/04/concurso-microsoft-hardware.aspx</link><pubDate>Thu, 04 Feb 2010 17:41:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:166648</guid><dc:creator>Jesus Enrique Gonzales Azcarate</dc:creator><slash:comments>5</slash:comments><description>&lt;p&gt;Saludos Amigos,&lt;/p&gt;  &lt;p&gt;Estoy concursando en una iniciativa de Microsoft Hardware, espero contar con sus votos.&lt;/p&gt;  &lt;p&gt;&lt;a title="http://www.ponleestiloatuvida.com/?opcion=pp&amp;amp;key=VUlEPTY1NyZuPWN5" href="http://www.ponleestiloatuvida.com/?opcion=pp&amp;amp;key=VUlEPTY1NyZuPWN5"&gt;http://www.ponleestiloatuvida.com/?opcion=pp&amp;amp;key=VUlEPTY1NyZuPWN5&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Gracias.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=166648" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/jesusgonzales/archive/tags/General/default.aspx">General</category><category domain="http://geeks.ms/blogs/jesusgonzales/archive/tags/Microsoft+Hardware/default.aspx">Microsoft Hardware</category></item><item><title>Usando ASP.NET membrership en Winforms (2 / n)</title><link>http://geeks.ms/blogs/lfranco/archive/2010/02/04/usando-asp-net-membrership-en-winforms-2-n.aspx</link><pubDate>Thu, 04 Feb 2010 10:45:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:166637</guid><dc:creator>Lluis Franco</dc:creator><slash:comments>4</slash:comments><description>&lt;h4&gt;Creando la base de datos de membres&amp;iacute;a&lt;/h4&gt;
&lt;p align="justify"&gt;La base de datos de membrs&amp;iacute;a es el lugar en el que se van a almacenar los datos de los usuarios de nuestras aplicaciones. Si, de nuestras aplicaciones en plural, porque este sistema est&amp;aacute; preparado para gestionar datos de tantas aplicaciones como sea necesario. De modo que el primer paso va a ser crear esta base de datos en un servidor SQL Server. Por cierto, cualquier edici&amp;oacute;n vale, desde la Express hasta la Professional.&lt;/p&gt;
&lt;p align="justify"&gt;Lo primero que vamos a hacer es ejecutar el comando &lt;strong&gt;aspnet_regsql&lt;/strong&gt; desde la l&amp;iacute;nea de comandos de Visual Studio, para iniciar el asistente que nos guiar&amp;aacute; en la creaci&amp;oacute;n de nuestra base de datos de membres&amp;iacute;a:&lt;/p&gt;
&lt;p align="justify"&gt;&lt;a href="http://www.uyssoft.com/blog/images/UsandoASP.NETmembrershipenWinforms2n_9548/aspnet_regsql.png"&gt;&lt;img height="340" width="671" src="http://www.uyssoft.com/blog/images/UsandoASP.NETmembrershipenWinforms2n_9548/aspnet_regsql_thumb.png" alt="aspnet_regsql" border="0" title="aspnet_regsql" style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p align="justify"&gt;Una vez iniciado, el aisitente pregunta si vamos a crear la base de datos o a eliminar la informaci&amp;oacute;n de membres&amp;iacute;a de una base de datos ya existente. Una vez elegimos la primera opci&amp;oacute;n nos pedir&amp;aacute; el nombre del servidor de SQL y de la base de datos. En caso que no exista la base de datos se crear&amp;aacute; una. En nuestro caso elegiremos la instancia de SQL Server express local y (en un derroche de imaginaci&amp;oacute;n) llamaremos a nuestra base de datos &amp;lsquo;Test&amp;rsquo;:&lt;/p&gt;
&lt;p align="justify"&gt;&lt;a href="http://www.uyssoft.com/blog/images/UsandoASP.NETmembrershipenWinforms2n_9548/createdbwizard1.png"&gt;&lt;img height="452" width="582" src="http://www.uyssoft.com/blog/images/UsandoASP.NETmembrershipenWinforms2n_9548/createdbwizard1_thumb.png" alt="createdbwizard1" border="0" title="createdbwizard1" style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;h4&gt;Examinando la base de datos creada&lt;/h4&gt;
&lt;p align="justify"&gt;&lt;a href="http://www.uyssoft.com/blog/images/UsandoASP.NETmembrershipenWinforms2n_9548/testdb.png"&gt;&lt;img height="592" width="373" src="http://www.uyssoft.com/blog/images/UsandoASP.NETmembrershipenWinforms2n_9548/testdb_thumb.png" align="left" alt="testdb" border="0" title="testdb" style="border-right-width:0px;margin:0px 10px 0px 0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" /&gt;&lt;/a&gt; Una vez creada, nos conectaremos a la base de datos para examinar que objetos se ha creado. Lo primero que llama la atenci&amp;oacute;n es que hay una serie de tablas, vistas y procedimientos almacenados cuyo nombre empieza por el prefijo &amp;lsquo;aspnet_&amp;rsquo;, y yo me pregunto &amp;iquest;no hubiese sido mucho m&amp;aacute;s elegante utilizar un Schema en lugar de esta nomenclatura? Bueno, supongo que si se ha usado esta nomenclatura ser&amp;aacute; por compatibilidad con SQL Server 2000, ya que los esquemas no aparecieron hasta la versi&amp;oacute;n 2005.&lt;/p&gt;
&lt;p align="justify"&gt;La estructura de esta base de datos no es importante para nosotros, ya que en ning&amp;uacute;n caso vamos a acceder directamente a la base de datos. Todos nuestro trabajo se realizar&amp;aacute; a trav&amp;eacute;s del modelo de objetos de membres&amp;iacute;a desde nuestra aplicaci&amp;oacute;n .NET. De todos modos demos un vistazo a las tablas m&amp;aacute;s interesantes:&lt;/p&gt;
&lt;p align="justify"&gt;&lt;strong&gt;aspnet_Applications:&lt;/strong&gt; Es la tabla en la que se almacenan los datos de las distintas aplicaciones que van a usar esta base de datos. S&amp;oacute;lo guarda el nombre y un identificador GUID para usarlo como clave en las tablas de usuarios, roles, etc.&lt;/p&gt;
&lt;p align="justify"&gt;&lt;strong&gt;aspnet_MemberShip:&lt;/strong&gt; Guarda los datos de los usuarios del sistema de Membres&amp;iacute;a de forma conjunta con otra tabla llamada &lt;strong&gt;aspnet_Users&lt;/strong&gt;. As&amp;iacute;, los datos de cada usuario del sistema quedan divididos entre estas dos tablas, guardando la primera los datos relativos a la seguridad (contrase&amp;ntilde;a, tipo de almacenamiento de la contrase&amp;ntilde;a, pregunta y respuesta de seguridad) y en la segunda los datos propios del usuario (nombre, fecha de la &amp;uacute;ltima actividad).&lt;/p&gt;
&lt;p align="justify"&gt;&lt;strong&gt;aspnet_Roles:&lt;/strong&gt; Almacena los datos relativos a los grupos de usuarios. Los grupos son usados para establecer los permisos de uno o varios usuarios. Posteriormente desde nuestra aplicaci&amp;oacute;n preguntaremos si un usuario pertenece a uno u otro rol para permitir o revocar permiso sobre ciertas acciones.&lt;/p&gt;
&lt;p align="justify"&gt;&lt;strong&gt;aspnet_UsersInRoles:&lt;/strong&gt; Como su nombre indica mantiene una relaci&amp;oacute;n de los usuarios que pertenecen a cada uno de los roles. De este modo podremos saber qu&amp;eacute; usuarios pertenecen a qu&amp;eacute; roles.&lt;/p&gt;
&lt;p align="justify"&gt;Existen otras caracter&amp;iacute;sticas que pasaremos por alto porque dan para otros art&amp;iacute;culos, como por ejemplo la posibilidad de almacenar datos para distintos usuarios&amp;nbsp; sin tener que almacenarlos en otra tabla de otra base de datos.&lt;/p&gt;
&lt;p align="justify"&gt;&lt;strong&gt;Nota:&lt;/strong&gt; Hay un detalle curioso que refuerza la posibilidad de la compatibilidad con versiones anteriores, y es la aus&amp;eacute;ncia de funciones de usuario en la base de datos. Resulta curioso como muchas de las caracter&amp;iacute;sticas de los procedimientos almacenados se podr&amp;iacute;an haber implementado como funciones. &lt;/p&gt;
&lt;h4&gt;Accediendo a la base de datos desde .NET&lt;/h4&gt;
&lt;p align="justify"&gt;En el siguiente post veremos el modelo de objetos de membres&amp;iacute;a, este modelo est&amp;aacute; disponible para acceder y manipular este repositorio desde nuestras aplicaciones .NET, y que se encuentra en los namespaces &lt;strong&gt;System.Web&lt;/strong&gt; y &lt;strong&gt;System.Web.Extensions&lt;/strong&gt; (aunque como dec&amp;iacute;amos podemos usarlo desde cualquier tipo de aplicaci&amp;oacute;n).&lt;/p&gt;
&lt;p align="justify"&gt;Saludos,&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;Art&amp;iacute;culos anteriores de la serie:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/blogs/lfranco/archive/2010/02/03/usando-asp-net-membrership-en-winforms-1-n.aspx"&gt;Usando ASP.NET membrership en Winforms (1 / n)&lt;/a&gt;&lt;/p&gt;
&lt;p align="justify"&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p align="justify"&gt;Actualizaci&amp;oacute;n (art&amp;iacute;culos siguientes):&lt;/p&gt;
&lt;p align="justify"&gt;&lt;a href="http://geeks.ms/blogs/lfranco/archive/2010/02/05/usando-asp-net-membrership-en-winforms-3-n.aspx"&gt;Usando ASP.NET membrership en Winforms (3 / n)&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=166637" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/lfranco/archive/tags/.NET/default.aspx">.NET</category><category domain="http://geeks.ms/blogs/lfranco/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://geeks.ms/blogs/lfranco/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://geeks.ms/blogs/lfranco/archive/tags/Serie/default.aspx">Serie</category><category domain="http://geeks.ms/blogs/lfranco/archive/tags/2010/default.aspx">2010</category><category domain="http://geeks.ms/blogs/lfranco/archive/tags/Users/default.aspx">Users</category><category domain="http://geeks.ms/blogs/lfranco/archive/tags/Seguridad/default.aspx">Seguridad</category><category domain="http://geeks.ms/blogs/lfranco/archive/tags/MemberShip/default.aspx">MemberShip</category></item><item><title>Virtualización de Servicios con Managed Services Engines</title><link>http://geeks.ms/blogs/jmtorres/archive/2010/02/04/virtualizaci-243-n-de-servicios-con-managed-services-engines.aspx</link><pubDate>Thu, 04 Feb 2010 07:57:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:166630</guid><dc:creator>José Miguel Torres</dc:creator><slash:comments>0</slash:comments><description>&lt;p align="justify"&gt;Desde mis primeras incursiones en el desarrollo de Servicios empresariales, b&amp;aacute;sicamente desde la aparici&amp;oacute;n de las primeras betas de &lt;strong&gt;WCF&lt;/strong&gt;, ha habido un miedo esc&amp;eacute;nico que me ha atormentado y es la programaci&amp;oacute;n d&amp;eacute;spota e incontrolada de servicios, servicios y m&amp;aacute;s servicios, lo que deriva en la producci&amp;oacute;n de 300 servicios, con 300 enlaces distintos (no m&amp;aacute;s de 10 comunes), en 50 endpoints y cuyo valor operativo era equivalente a 50 servicios bien dise&amp;ntilde;ados y gobernados.&amp;nbsp; No conceb&amp;iacute;a una arquitectura s&amp;oacute;lida de servicios sin una &lt;em&gt;&amp;ldquo;torre de control&lt;/em&gt;&amp;rdquo; o una &amp;ldquo;&lt;em&gt;cabina de mando&lt;/em&gt;&amp;rdquo; desde d&amp;oacute;nde poder ver, gestionar y modificar nuestros servicios. &lt;/p&gt;
&lt;p align="justify"&gt;M&amp;aacute;s adelante tuve la oportunidad de trabajar en una arquitectura &lt;strong&gt;SOA&lt;/strong&gt; desarrollada en &lt;strong&gt;J2EE&lt;/strong&gt;, dirigida por un ESB de &lt;strong&gt;Oracle&lt;/strong&gt; y gestionada con herramientas de gobernabilidad SOA, que manejaban m&amp;aacute;s de un centenar de servicios (&lt;em&gt;proxy&lt;/em&gt; y &lt;em&gt;legacy&lt;/em&gt;) y d&amp;oacute;nde la publicaci&amp;oacute;n y consumo de dichos servicios se realizaban a trav&amp;eacute;s de estrictas normas protocolarias (seguridad, documentaci&amp;oacute;n,&amp;hellip;).&lt;/p&gt;
&lt;p align="justify"&gt;Ahora vuelvo, de nuevo, a tener la misma necesidad, dise&amp;ntilde;ar una infraestructura de servicios y cuando hablo de infraestructura hablo de ese tipo de herramientas fundamentales para el control de todos y cada uno de los servicios. Pero ahora (en realidad hace ya un tiempo que existe) me encontr&amp;eacute; con un software, bajo licencia&amp;nbsp; &lt;em&gt;Microsoft Public License&lt;/em&gt; (Ms-PL) y c&amp;oacute;digo abierto, que adopta de forma pr&amp;aacute;ctica la idea de Virtualizaci&amp;oacute;n de Servicios, llamado &lt;strong&gt;&lt;a href="http://www.codeplex.com/servicesengine"&gt;Managed Services Engine&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;
&lt;h1 align="justify"&gt;Virtualizaci&amp;oacute;n de Servicios&lt;/h1&gt;
&lt;p align="justify"&gt;La idea b&amp;aacute;sica del &lt;strong&gt;patr&amp;oacute;n de Virtualizaci&amp;oacute;n de Servicios&lt;/strong&gt; es el de aislar la complejidad de los servicios expuestos del cliente que los consume ya que&amp;nbsp; tras cada servicio se alberga una gran cantidad de aspectos tales como las localizaciones de los endpoints, las configuraciones de los enlaces, la aplicaci&amp;oacute;n de pol&amp;iacute;ticas, etc. Adem&amp;aacute;s muchas de las adopciones SOA a la practica no ofrecen soluciones sobre versionado de servicios, aplicaci&amp;oacute;n de pol&amp;iacute;ticas de seguridad o cambios operativos sin necesidad volver a codificar el servicio as&amp;iacute; como el cumplimiento del &lt;strong&gt;&lt;a href="http://es.wikipedia.org/wiki/Acuerdo_de_nivel_de_servicio"&gt;SLA&lt;/a&gt;&lt;/strong&gt; entre el proveedor &amp;ndash;nosotros- y el cliente.&lt;/p&gt;
&lt;p align="justify"&gt;Aparece la idea de &lt;strong&gt;Servicio Intermediario&lt;/strong&gt; que desacopla el cliente de la implementaci&amp;oacute;n del servicio. Como tal, podemos ofrece varios servicios virtuales de una misma implementaci&amp;oacute;n para, por ejemplo, utilizarlo en distintos escenarios. Es aqu&amp;iacute; d&amp;oacute;nde encontramos la clave de la virtualizaci&amp;oacute;n, en el servicio intermediario, pues todas las llamadas se realizaran a trav&amp;eacute;s de este y podremos modificar su comportamiento sin comprometer los modelos del servicio.&lt;/p&gt;
&lt;p align="justify"&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1 align="justify"&gt;Managed Services Engine&lt;/h1&gt;
&lt;p align="justify"&gt;&lt;strong&gt;&lt;a href="http://www.microsoft.com/soa/solutions/soi.aspx"&gt;Microsoft Services SOA Infraestructure&lt;/a&gt;&lt;/strong&gt; ofrece una soluci&amp;oacute;n de virtualizaci&amp;oacute;n de servicios a trav&amp;eacute;s de &lt;strong&gt;Managed Services Engine (MSE&lt;/strong&gt;). Como cabe esperar, MSE est&amp;aacute; basado en la plataforma &lt;strong&gt;Windows&lt;/strong&gt;, esto es, &lt;strong&gt;Windows Server 2003/2008&lt;/strong&gt;, &lt;strong&gt;SQL Server 2005/2008&lt;/strong&gt; y &lt;strong&gt;.NET Framework 3.5&lt;/strong&gt;, especialmente con &lt;strong&gt;Windows Communication Foundation&lt;/strong&gt; para la interceptaci&amp;oacute;n de comunicaciones entre servicios virtuales y reales.&lt;/p&gt;
&lt;p align="justify"&gt;MSE puede integrarse tanto con &lt;strong&gt;MS Biztalk Server 2006 R2 / 2009 &lt;/strong&gt;para proporcionar capacidades adicionales tales como la monitorizaci&amp;oacute;n de las actividades de negocio (BAM), el Business Rules Engine o el ESB Toolkit, entre otros. Adem&amp;aacute;s tambi&amp;eacute;n podemos utilizar los servicios &lt;strong&gt;Azure&lt;/strong&gt; a trav&amp;eacute;s de Azure AppFabric, especialmente con &lt;strong&gt;.NET Service Bus&lt;/strong&gt;.&lt;/p&gt;
&lt;p align="justify"&gt;&lt;img height="276" width="362" src="http://i.msdn.microsoft.com/dd727511.fig11_L(en-us).gif" style="display:inline;margin-left:0px;margin-right:0px;" alt="" /&gt;&lt;/p&gt;
&lt;p align="justify"&gt;MSE consiste, b&amp;aacute;sicamente, en tres componentes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div align="justify"&gt;&lt;em&gt;Messenger&lt;/em&gt;: proporciona la normalizaci&amp;oacute;n del mensaje de entrada a trav&amp;eacute;s de los servicios virtuales. Este componente soporta adem&amp;aacute;s la aplicaci&amp;oacute;n de pol&amp;iacute;ticas (de transformaci&amp;oacute;n por ejemplo, tanto de peticiones como de respuestas) as&amp;iacute; como el mapeo de protocolos.&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div align="justify"&gt;&lt;em&gt;Broker&lt;/em&gt;: este componente obtiene el mensaje normalizado y lo reconvierte a la operaci&amp;oacute;n (es decir la implementaci&amp;oacute;n de un m&amp;eacute;todo del servicio) y su respectiva versi&amp;oacute;n (pues podemos tener m&amp;aacute;s de una operaci&amp;oacute;n con distintas versiones).&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div align="justify"&gt;&lt;em&gt;Dispatcher&lt;/em&gt;: una vez se tiene el mensaje y la operaci&amp;oacute;n pertinente, dispatcher invoca el m&amp;eacute;todo del servicio y se transmite dicho mensaje.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p align="justify"&gt;&lt;img height="301" width="459" src="http://i.msdn.microsoft.com/dd727511.fig02_L(ja-jp).gif" alt="" /&gt;&lt;/p&gt;
&lt;p align="justify"&gt;Recalcar que estos tres componentes est&amp;aacute;n &lt;strong&gt;totalmente desacoplados&lt;/strong&gt; unos de otros con lo que podr&amp;iacute;amos distribuirlos de forma que obtendr&amp;iacute;amos una gran cantidad de tipolog&amp;iacute;as del sistema. Todo esto es gracias a la catalogo del servicio (&lt;strong&gt;Service Catalog&lt;/strong&gt;), tambi&amp;eacute;n conocido como repositorio de metadata o simplemente repository o repositorio, ya que contiene todos los modelos de los servicios que hospeda el runtime del MSE &amp;ndash;incorpora asistentes para la importaci&amp;oacute;n de servicios a trav&amp;eacute;s del WSDL y otros mecanismos para servicios POX o REST-. Como dije anteriormente, MSE contiene una implementaci&amp;oacute;n de WCF as&amp;iacute; que es f&amp;aacute;cil intuir que la comunicaci&amp;oacute;n entre ellos se realizan a trav&amp;eacute;s de &lt;strong&gt;canales de mensajer&amp;iacute;a&lt;/strong&gt;. El repositorio, por &amp;uacute;ltimo, utiliza una base de datos &lt;strong&gt;SQL Server &lt;/strong&gt;y la informaci&amp;oacute;n puede ser publicada en un &lt;strong&gt;registry &lt;/strong&gt;externo UDDI 2.0/3.0. &lt;/p&gt;
&lt;p align="justify"&gt;Por &amp;uacute;ltimo, MSE contiene una interfaz para la administraci&amp;oacute;n de los servicios &amp;ndash;&lt;strong&gt;MSE Model Viewer&lt;/strong&gt;- as&amp;iacute; como una herramienta de test &amp;ndash;&lt;strong&gt;MSE Universal Service Tester&lt;/strong&gt;-.&lt;/p&gt;
&lt;p align="justify"&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jmtorres/image_5F00_786F9041.png"&gt;&lt;img height="175" width="244" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jmtorres/image_5F00_thumb_5F00_6C3DF04D.png" alt="image" border="0" title="image" style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p align="justify"&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jmtorres/image_5F00_180E443D.png"&gt;&lt;img height="244" width="244" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/jmtorres/image_5F00_thumb_5F00_43726537.png" alt="image" border="0" title="image" style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p align="justify"&gt;En pr&amp;oacute;ximos posts hablar&amp;eacute; de las diferentes posibilidades que ofrece MSE desde el punto del vista del rol (developer, IT, architect,&amp;hellip;) y como familiarizarse MSE.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=166630" width="1" height="1"&gt;</description><category domain="http://geeks.ms/blogs/jmtorres/archive/tags/Managed+Services+Engine/default.aspx">Managed Services Engine</category><category domain="http://geeks.ms/blogs/jmtorres/archive/tags/SOA/default.aspx">SOA</category></item></channel></rss>