<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-US"><title type="html">Blog de Soma en español</title><subtitle type="html" /><id>http://blogs.msdn.com/somaespanol/atom.xml</id><link rel="alternate" type="text/html" href="http://blogs.msdn.com/somaespanol/default.aspx" /><link rel="self" type="application/atom+xml" href="http://blogs.msdn.com/somaespanol/atom.xml" /><generator uri="http://communityserver.org" version="2.1.61025.2">Community Server</generator><updated>2009-08-17T09:44:00Z</updated><entry><title>Extensiones reactivas para .NET (Rx)</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/somaespanol/archive/2009/11/19/extensiones-reactivas-para-net-rx.aspx" /><id>http://blogs.msdn.com/somaespanol/archive/2009/11/19/extensiones-reactivas-para-net-rx.aspx</id><published>2009-11-19T22:17:00Z</published><updated>2009-11-19T22:17:00Z</updated><content type="html">&lt;DIV&gt;
&lt;P&gt;&lt;I&gt;&lt;SPAN&gt;Publicación del &lt;A href="http://blogs.msdn.com/somasegar/archive/2009/11/18/reactive-extensions-for-net-rx.aspx"&gt;inglés original&lt;/A&gt;: Miércoles, 18 de noviembre de 2009 a las 20:05 PST por &lt;A href="http://blogs.msdn.com/user/Profile.aspx?UserID=3644"&gt;Somasegar&lt;/A&gt;&lt;/SPAN&gt;&lt;/I&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Estoy encantado de anunciar una vista previa de las &lt;A href="http://msdn.microsoft.com/en-us/devlabs/ee794896.aspx"&gt;Extensiones Reactivas para .NET (Rx)&lt;/A&gt; en DevLabs de MSDN.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Con Rx, los programadores pueden escribir código declarativo conciso para orquestar y coordinar programas asíncronos y basados en sucesos con las expresiones patrones de .NET. Rx tiene una gran base teórica basada en la dualidad entre los modelos de diseño clásicos Iterador y Observador para simplificar y controlar la asincronía. Combinando la expresividad de LINQ con la elegancia de la teoría de categoría, Rx permite a los programadores escribir código asíncrono sin realizar actos crueles y poco naturales.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Como el nombre implica, los programas reactivos reaccionan a los cambios en su entorno. Tradicionalmente, los programadores utilizar bloqueos y los controladores de eventos para coordinar estos cambios. Rx modela cálculos asíncronos y eventos como colecciones basadas en inserción u observables, expandiendo por tanto el ámbito de los métodos de extensión más allá de las colecciones basadas en extracción, o enumerables, familiares en el territorio de la programación reactiva y los operadores de secuencia estándar de LINQ.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;SPAN&gt;Práctico y pragmático&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Las extensiones reactivas para .NET son un conjunto de métodos de extensión y una implementación de los operadores de secuencia estándar de LINQ para los nuevos interfaces IObservable &amp;lt;out T&amp;gt; e IObserver &amp;lt;in T&amp;gt; en .NET 4 y Silverlight 4. Las interfaces observables se han agregado a .NET para proporcionar una interfaz común para las notificaciones basadas en inserción que otras bibliotecas y características de .NET pueden reutilizar. Rx se centra en la coordinación y orquestación de cálculos basados en sucesos y cálculo asíncrono y aprovecha la nueva biblioteca Task Parallel como mecanismo de simultaneidad subyacente.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Las extensiones reactivas pueden utilizarse desde cualquier lenguaje .NET. En F #, los eventos de .NET son valores de primera clase que implementan la interfaz IObservable &amp;lt;out T&amp;gt;. Además, F # proporciona un conjunto básico de funciones para redactar colecciones observables y los programadores de F# pueden aprovechar Rx para obtener un conjunto más rico de operadores para redactar los eventos y otras colecciones observables.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;El Kit de herramientas de Silverlight utiliza Rx para el funcionamiento del Drag and Drop Framework del kit de herramientas de Silverlight, un subconjunto de las API de WPF para iniciar e interactuar con operaciones de arrastre. El Drag and Drop Framework agrega compatibilidad con arrastrar y colocar a controles básicos, como TreeView, DataGrid, ListBox. Rx reduce drásticamente el tiempo de desarrollo al permitir operaciones de arrastrar, que son secuencias de eventos de usuario, ser descritas declarativamente. Silverlight crea elementos visuales de forma asíncrona y como resultado suele ser necesario escribir código de prueba asíncrono para asegurarse de que se ha creado correctamente un componente. La adición de recepción para el marco de pruebas de unidades de Silverlight permite a los programadores escribir pruebas basadas en eventos confiables sin sacrificar la legibilidad.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;SPAN&gt;Muéstrame código&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;El ejemplo siguiente muestra un sencillo programa reactivo de estilo AJAX que traduce a inglés mediante el servicio de traducción Bing y muestra los resultados.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;IMG style="WIDTH: 491px; HEIGHT: 313px" src="http://public.blu.livefilestore.com/y1p_894tdEnqbVS4nz4_qsANHouT6R-UDTedpprabNOhl6lqtU0RsMgHuyIffURj61YHR41rq5f2idLhBHO_yiknw/Rx.jpg" width=491 height=313 mce_src="http://public.Blu.livefilestore.com/y1p_894tdEnqbVS4nz4_qsANHouT6R-UDTedpprabNOhl6lqtU0RsMgHuyIffURj61YHR41rq5f2idLhBHO_yiknw/Rx.jpg"&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;El campo de entrada en la página se expone como una colección de cadenas observable que genera un valor siempre que el usuario deja de escribir durante medio segundo. El método de extensión GetKeyUpEvents expone el evento estándar de .NET KeyUp como una colección observable.&lt;/SPAN&gt;&lt;/P&gt;&lt;SPAN&gt;
&lt;P style="MARGIN: 0in 0in 0pt; BACKGROUND: #eeece1" class=MsoNormal&gt;&lt;SPAN class=apple-style-span&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; COLOR: #2b91af; FONT-SIZE: 10pt"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;IObservable&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class=apple-style-span&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; COLOR: black; FONT-SIZE: 10pt"&gt;&amp;lt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class=apple-style-span&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; COLOR: blue; FONT-SIZE: 10pt"&gt;string&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class=apple-style-span&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; COLOR: black; FONT-SIZE: 10pt"&gt;&amp;gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; COLOR: black; FONT-SIZE: 10pt"&gt; words = (&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; COLOR: blue; FONT-SIZE: 10pt"&gt;from&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; COLOR: black; FONT-SIZE: 10pt"&gt;&amp;nbsp;keyup &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; COLOR: blue; FONT-SIZE: 10pt"&gt;in&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; COLOR: black; FONT-SIZE: 10pt"&gt; Input.GetKeyUpEvents() &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; COLOR: blue; FONT-SIZE: 10pt"&gt;select&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; COLOR: black; FONT-SIZE: 10pt"&gt;&amp;nbsp;Input.Value).Throttle(&lt;/SPAN&gt;&lt;SPAN class=apple-style-span&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; COLOR: #2b91af; FONT-SIZE: 10pt"&gt;TimeSpan&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; COLOR: black; FONT-SIZE: 10pt"&gt;.FromSeconds(.5))&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/SPAN&gt;
&lt;P&gt;&lt;SPAN&gt;Para obtener acceso al servicio de traducción Bing, simplemente hemos convertir una referencia de servicio WCF que utiliza el estándar BeginInvoke y EndInvoke de .NET o el modelo asincrónico basado en eventos a una función que devuelve una colección observable singleton a través de una de las funciones auxiliares estándar que Rx proporciona.&lt;/SPAN&gt;&lt;/P&gt;&lt;SPAN&gt;
&lt;P style="MARGIN: 0in 0in 0pt; BACKGROUND: #eeece1" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; COLOR: #2b91af; FONT-SIZE: 10pt"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;IObservable&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; COLOR: black; FONT-SIZE: 10pt"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; COLOR: #2b91af; FONT-SIZE: 10pt"&gt;TranslationResponse&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; COLOR: black; FONT-SIZE: 10pt"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; COLOR: #2b91af; FONT-SIZE: 10pt"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; COLOR: black; FONT-SIZE: 10pt"&gt;Translate(&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; COLOR: blue; FONT-SIZE: 10pt"&gt;this string &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; COLOR: black; FONT-SIZE: 10pt"&gt;text,&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; COLOR: #2b91af; FONT-SIZE: 10pt"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; COLOR: blue; FONT-SIZE: 10pt"&gt;string &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; COLOR: black; FONT-SIZE: 10pt"&gt;sourceLanguage, &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; COLOR: blue; FONT-SIZE: 10pt"&gt;string &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; COLOR: black; FONT-SIZE: 10pt"&gt;destinationLanguage)&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt"&gt;&lt;FONT face=Calibri&gt;{…}&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;/SPAN&gt;&lt;SPAN&gt;La coordinación entre los diversos cálculos utiliza una consulta LINQ que envía solicitudes al servicio de traducción Bing para traducir cada palabra en holandés, francés y español y espera a los dos primeros de tres resultados para volver mediante un modelo de combinación.&lt;/SPAN&gt;&lt;/P&gt;&lt;SPAN&gt;
&lt;P style="MARGIN: 0in 0in 0pt; BACKGROUND: #eeece1" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; COLOR: blue; FONT-SIZE: 10pt"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;var&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; COLOR: black; FONT-SIZE: 10pt"&gt;&amp;nbsp;translations =&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; COLOR: blue; FONT-SIZE: 10pt"&gt;from&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; COLOR: black; FONT-SIZE: 10pt"&gt;&amp;nbsp;word&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; COLOR: blue; FONT-SIZE: 10pt"&gt;in&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; COLOR: black; FONT-SIZE: 10pt"&gt;&amp;nbsp;words&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt; BACKGROUND: #eeece1" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; COLOR: black; FONT-SIZE: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; COLOR: blue; FONT-SIZE: 10pt"&gt;let&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; COLOR: black; FONT-SIZE: 10pt"&gt;&amp;nbsp;dutch =&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; COLOR: #2b91af; FONT-SIZE: 10pt"&gt;Bing&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; COLOR: black; FONT-SIZE: 10pt"&gt;.Translate(word,&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; COLOR: #a31515; FONT-SIZE: 10pt"&gt;"en"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; COLOR: black; FONT-SIZE: 10pt"&gt;,&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; COLOR: #a31515; FONT-SIZE: 10pt"&gt;"nl"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; COLOR: black; FONT-SIZE: 10pt"&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt; BACKGROUND: #eeece1" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; COLOR: black; FONT-SIZE: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; COLOR: blue; FONT-SIZE: 10pt"&gt;let&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; COLOR: black; FONT-SIZE: 10pt"&gt;&amp;nbsp;french =&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; COLOR: #2b91af; FONT-SIZE: 10pt"&gt;Bing&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; COLOR: black; FONT-SIZE: 10pt"&gt;.Translate(word,&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; COLOR: #a31515; FONT-SIZE: 10pt"&gt;"en"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; COLOR: black; FONT-SIZE: 10pt"&gt;,&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; COLOR: #a31515; FONT-SIZE: 10pt"&gt;"fr"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; COLOR: black; FONT-SIZE: 10pt"&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt; BACKGROUND: #eeece1" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; COLOR: black; FONT-SIZE: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; COLOR: blue; FONT-SIZE: 10pt"&gt;let&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; COLOR: black; FONT-SIZE: 10pt"&gt;&amp;nbsp;spanish =&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; COLOR: #2b91af; FONT-SIZE: 10pt"&gt;Bing&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; COLOR: black; FONT-SIZE: 10pt"&gt;.Translate(word,&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; COLOR: #a31515; FONT-SIZE: 10pt"&gt;"en"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; COLOR: black; FONT-SIZE: 10pt"&gt;,&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; COLOR: #a31515; FONT-SIZE: 10pt"&gt;"es"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; COLOR: black; FONT-SIZE: 10pt"&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt; BACKGROUND: #eeece1" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; COLOR: black; FONT-SIZE: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; COLOR: blue; FONT-SIZE: 10pt"&gt;from&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; COLOR: black; FONT-SIZE: 10pt"&gt;&amp;nbsp;results&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; COLOR: blue; FONT-SIZE: 10pt"&gt;in&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; COLOR: black; FONT-SIZE: 10pt"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; COLOR: #2b91af; FONT-SIZE: 10pt"&gt;Observable&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; COLOR: black; FONT-SIZE: 10pt"&gt;.Join&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt; BACKGROUND: #eeece1" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; COLOR: black; FONT-SIZE: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;( dutch.And(spanish).Then((d, s) =&amp;gt;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; COLOR: blue; FONT-SIZE: 10pt"&gt;new&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; COLOR: black; FONT-SIZE: 10pt"&gt;&amp;nbsp;{ Dutch = d, French =&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; COLOR: #2b91af; FONT-SIZE: 10pt"&gt;Bing&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; COLOR: black; FONT-SIZE: 10pt"&gt;.NoResult, Spanish = s })&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt; BACKGROUND: #eeece1" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; COLOR: black; FONT-SIZE: 10pt"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;, dutch.And(french).Then((d, f) =&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; COLOR: blue; FONT-SIZE: 10pt"&gt;new&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; COLOR: black; FONT-SIZE: 10pt"&gt;&amp;nbsp;{ Dutch = d, French = f, Spanish =&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; COLOR: #2b91af; FONT-SIZE: 10pt"&gt;Bing&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; COLOR: black; FONT-SIZE: 10pt"&gt;.NoResult })&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt; BACKGROUND: #eeece1" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; COLOR: black; FONT-SIZE: 10pt"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;, french.And(spanish).Then((f, s) =&amp;gt;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; COLOR: blue; FONT-SIZE: 10pt"&gt;new&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; COLOR: black; FONT-SIZE: 10pt"&gt;&amp;nbsp;{ Dutch =&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; COLOR: #2b91af; FONT-SIZE: 10pt"&gt;Bing&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; COLOR: black; FONT-SIZE: 10pt"&gt;.NoResult, French = f, Spanish = s })&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt; BACKGROUND: #eeece1" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; COLOR: black; FONT-SIZE: 10pt"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;).Until(words)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt; BACKGROUND: #eeece1" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; COLOR: black; FONT-SIZE: 10pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; COLOR: blue; FONT-SIZE: 10pt"&gt;select&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; COLOR: black; FONT-SIZE: 10pt"&gt;&amp;nbsp;results;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;/SPAN&gt;&lt;SPAN&gt;Por último, nos suscribimos a los resultados de las traducciones y actualizamos la interfaz de usuario una vez que se ha notificado un cambio.&lt;/SPAN&gt;&lt;/P&gt;&lt;SPAN&gt;
&lt;P style="MARGIN: 0in 0in 0pt; BACKGROUND: #eeece1" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; COLOR: black; FONT-SIZE: 10pt"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;translations.Subscribe(result =&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt; BACKGROUND: #eeece1" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; COLOR: black; FONT-SIZE: 10pt"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt; BACKGROUND: #eeece1" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; COLOR: black; FONT-SIZE: 10pt"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Dutch.InnerText = result.Dutch.GetTranslatedTerm();&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt; BACKGROUND: #eeece1" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; COLOR: black; FONT-SIZE: 10pt"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;French.InnerText = result.French.GetTranslatedTerm();&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt; BACKGROUND: #eeece1" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; COLOR: black; FONT-SIZE: 10pt"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Spanish.InnerText = result.Spanish.GetTranslatedTerm();&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt; BACKGROUND: #eeece1" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; COLOR: black; FONT-SIZE: 10pt"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;});&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;/SPAN&gt;&lt;SPAN&gt;Los desarrolladores no necesitan preocuparse acerca de cómo ejecutar la suscripción en el subproceso correcto; el motor en tiempo de ejecución de Rx se ocupa de ello.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;SPAN&gt;Material de bonificación&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Además de los métodos de extensión en colecciones observables, Rx también contiene un número de tipos y espacios de nombres que implementan algunos de los nuevos métodos de extensión para las colecciones observables sobre colecciones enumerables y un puerto de espera de PLINQ para .NET 3.5 están disponibles para que los desarrolladores puedan experimentar.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;SPAN&gt;Juguemos&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Puede &lt;A href="http://msdn.microsoft.com/en-us/devlabs/ee794896.aspx"&gt;Descargar Rx&lt;/A&gt; (en inglés) desde DevLabs. Díganos lo que piensa en el &lt;A href="http://social.msdn.microsoft.com/Forums/en-US/rx/threads"&gt;foro del proyecto&lt;/A&gt; (en inglés) y eche un vistazo a los &lt;A href="http://channel9.msdn.com/tags/Reactive+Framework/"&gt;vídeos y screencasts de Channel 9&lt;/A&gt; (en inglés).&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;¡Namaste!&lt;/SPAN&gt;&lt;/P&gt;&lt;/DIV&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9925813" width="1" height="1"&gt;</content><author><name>SomaEsp</name><uri>http://blogs.msdn.com/members/SomaEsp.aspx</uri></author><category term="Developer Division" scheme="http://blogs.msdn.com/somaespanol/archive/tags/Developer+Division/default.aspx" /><category term=".NET Framework" scheme="http://blogs.msdn.com/somaespanol/archive/tags/.NET+Framework/default.aspx" /><category term="MSDN" scheme="http://blogs.msdn.com/somaespanol/archive/tags/MSDN/default.aspx" /><category term="Visual Studio" scheme="http://blogs.msdn.com/somaespanol/archive/tags/Visual+Studio/default.aspx" /><category term="DevLabs" scheme="http://blogs.msdn.com/somaespanol/archive/tags/DevLabs/default.aspx" /></entry><entry><title>Creación de aplicaciones para Windows Azure</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/somaespanol/archive/2009/11/18/creaci-n-de-aplicaciones-para-windows-azure.aspx" /><id>http://blogs.msdn.com/somaespanol/archive/2009/11/18/creaci-n-de-aplicaciones-para-windows-azure.aspx</id><published>2009-11-18T23:39:00Z</published><updated>2009-11-18T23:39:00Z</updated><content type="html">&lt;P&gt;&lt;I&gt;&lt;SPAN&gt;Publicación del &lt;A href="http://blogs.msdn.com/somasegar/archive/2009/11/17/building-applications-for-windows-azure.aspx"&gt;inglés original&lt;/A&gt;: martes, 17 de noviembre a las 23:30 PST por &lt;A href="http://blogs.msdn.com/user/Profile.aspx?UserID=3644"&gt;Somasegar&lt;/A&gt;&lt;/SPAN&gt;&lt;/I&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Generar una aplicación o servicio para la nube le permite centrarse en la creación del software apropiado utilizando los conocimientos que ya poseía mientras que otra persona controla los detalles de infraestructura, hardware y administración de servicios.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;A href="http://windowsazure.com/"&gt;Windows Azure&lt;/A&gt; (en inglés), la plataforma de Microsoft para aplicaciones basadas en la nube, ha estado disponible como una CTP durante el último año. Visual Studio ha admitido el desarrollo de aplicaciones de Windows Azure desde la primera CTP a través de un complemento, conocido como herramientas de Windows Azure (Windows Azure Tools). Este complemento está disponible para VS 2008 &lt;A href="http://blogs.msdn.com/jnak/archive/2009/09/24/installing-the-windows-azure-tools-using-the-web-platform-installer.aspx"&gt;mediante el instalador de la plataforma Web&lt;/A&gt; (en inglés). Visual Studio 2010 Beta 2 tiene todas las características que necesita para codificar, depurar e implementar su servicio en la nube.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Windows Azure le permite crear aplicaciones de calidad de producción sólidas que pueden ser implementadas, mantenidas y soportadas. Windows Azure viene acompañado del lanzamiento en noviembre de 2009 del &lt;A href="http://go.microsoft.com/fwlink/?LinkID=128752"&gt;complemento para Visual Studio&lt;/A&gt; (en inglés), que le permite aprovechar las ventajas de la plataforma de la forma más eficiente.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;SPAN&gt;Introducción&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Desarrollar para Windows Azure es muy similar a desarrollar una aplicación ASP.NET para IIS y Windows Server. Sin embargo, existen algunas diferencias y Visual Studio hace mucho más fácil sobrellevar dichas diferencias.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Una de las primeras cosas que verá al desarrollar para la nube con Visual Studio es la introducción de una ficha Cloud de nivel superior en la sección de introducción de la nueva página de inicio. Esta página ofrece una gran cantidad de recursos que cubren la creación de la primera aplicación para la nube y contiene recursos que seguirán siendo útiles una y otra vez, como los vínculos a las áreas de la comunidad para Windows Azure y actualizaciones periódicas de las nuevas características y servicios ofrecidos.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;IMG style="WIDTH: 548px; HEIGHT: 384px" src="http://public.blu.livefilestore.com/y1p4IdnGq36BFAS9hi0mb5SiMNScPHTYghe_ppi8ldw59633S7GTlkv8JknEEPFQpIe-f7vs91gs7qmQzIXwmol9Q/StartPageSmall.jpg" width=548 height=384 mce_src="http://public.blu.livefilestore.com/y1p4IdnGq36BFAS9hi0mb5SiMNScPHTYghe_ppi8ldw59633S7GTlkv8JknEEPFQpIe-f7vs91gs7qmQzIXwmol9Q/StartPageSmall.jpg"&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Puede crear su propio servicio para la nube mediante la plantilla de proyecto Cloud Service que forma parte de las instalaciones de Visual Studio 2010 y Visual Web Developer 2010 Express. Haga clic en el menú Archivo | Nuevo | Proyecto..., vaya a los nodos de Visual Basic y C# y seleccione el nodo de servicio de nube que contiene una plantilla de proyecto denominada "Enable Windows Azure Tools".&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;IMG style="WIDTH: 553px; HEIGHT: 365px" src="http://public.blu.livefilestore.com/y1puX0SHDy_D42oeua2PWmU9NCnySehtIAXJk27lqfEX5qTYzJLce4zvWbzrxjPeyNOIiiOqQABUjXheQ3zk8Bz0g/NewProjectSmall.jpg" width=553 height=365 mce_src="http://public.blu.livefilestore.com/y1puX0SHDy_D42oeua2PWmU9NCnySehtIAXJk27lqfEX5qTYzJLce4zvWbzrxjPeyNOIiiOqQABUjXheQ3zk8Bz0g/NewProjectSmall.jpg"&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Esta plantilla, nueva en la beta 2, facilita en gran medida obtener las últimas herramientas para desarrollar servicios de Windows Azure. Después de crear el proyecto, la plantilla le dirigirá a la descarga de las herramientas de Windows Azure para poder continuar. Esto garantiza que utilizará la versión más reciente de las herramientas que admiten la última versión de Windows Azure.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;IMG style="WIDTH: 541px; HEIGHT: 163px" src="http://public.blu.livefilestore.com/y1pXCxOk44SMYNj4GpKehdRXfo9SpN-KLhyRJ0VXYZ_gI2rEv8-OQxEPG0EeBXJaHP4xj_i8hHqMBLDryL21lMgmw/DownloadToolsSmall.jpg" width=541 height=163 mce_src="http://public.blu.livefilestore.com/y1pXCxOk44SMYNj4GpKehdRXfo9SpN-KLhyRJ0VXYZ_gI2rEv8-OQxEPG0EeBXJaHP4xj_i8hHqMBLDryL21lMgmw/DownloadToolsSmall.jpg"&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Después de instalar las herramientas, el cuadro de diálogo Nuevo Proyecto proporcionará una opción para crear un servicio de nube de Windows Azure. Visual Studio ahora admite la creación, modificación, creación, depuración e implementación de estos servicios.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Para crear un nuevo proyecto, vaya al menú Archivo | Nuevo | Proyecto... para mostrar el cuadro de diálogo Nuevo proyecto y seleccione "Windows Azure Cloud Service" bajo los nodos de Visual Basic o C#. Aparecerá un cuadro de diálogo que puede utilizar para agregar proyectos de la función de Windows Azure a su servicio de nube.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;IMG style="WIDTH: 553px; HEIGHT: 365px" src="http://public.blu.livefilestore.com/y1puX0SHDy_D42oeua2PWmU9NCnySehtIAXJk27lqfEX5qTYzJLce4zvWbzrxjPeyNOIiiOqQABUjXheQ3zk8Bz0g/NewProjectSmall.jpg" width=553 height=365 mce_src="http://public.blu.livefilestore.com/y1puX0SHDy_D42oeua2PWmU9NCnySehtIAXJk27lqfEX5qTYzJLce4zvWbzrxjPeyNOIiiOqQABUjXheQ3zk8Bz0g/NewProjectSmall.jpg"&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Uno de los aspectos exclusivos de Windows Azure es la capacidad de escalar individualmente trabajo a través de cualquier número de instancias. Windows Azure segmenta los "componentes" en roles. Un rol es un componente individualmente escalable que se ejecuta en la nube donde cada instancia de una función corresponde a una instancia de la máquina virtual. Hay dos tipos de roles:&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL style="MARGIN-TOP: 0in" type=disc&gt;
&lt;LI class=MsoNormal&gt;&lt;SPAN&gt;Rol de web - una aplicación web que se ejecuta en IIS que está accesible a través de un extremo HTTP o HTTPS.&lt;/SPAN&gt; 
&lt;LI class=MsoNormal&gt;&lt;SPAN&gt;Rol de trabajo - una aplicación que procesa una aplicación que ejecuta código arbitrario de .NET en segundo plano. También tiene la posibilidad de exponer los extremos expuestos a internet o los internos.&lt;/SPAN&gt; &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;SPAN&gt;Hay varias opciones de plantilla para cada tipo de función que desea agregar. Por ejemplo, las aplicaciones ASP.NET Web, ASP.NET MVC 2 y plantillas de aplicación de servicio de WCF están disponibles para crear un rol de web. Agregue uno o más roles a su servicio de nube y haga clic en Aceptar para crear la solución y los proyectos.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;IMG style="WIDTH: 296px; HEIGHT: 302px" src="http://public.blu.livefilestore.com/y1p8v4jpSls6sT9inERbZ-ioKH9p-RdJ9YyEIK9N9OKk5vFtfW4EvS6SmkvNKWDzkkWtgSi4UPakHFjuSNuUPOAzA/Roles.jpg" width=296 height=302 mce_src="http://public.blu.livefilestore.com/y1p8v4jpSls6sT9inERbZ-ioKH9p-RdJ9YyEIK9N9OKk5vFtfW4EvS6SmkvNKWDzkkWtgSi4UPakHFjuSNuUPOAzA/Roles.jpg"&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Una vez creado el servicio, su solución tiene varios proyectos. Uno de ellos es el proyecto de servicio de nube que contiene toda la información de configuración que Windows Azure necesitapara ejecutar su servicio y también proporciona la capacidad de agregar o quitar funciones después de la creación del proyecto.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Al hacer clic con el botón secundario en las asociaciones de rol bajo el nodo funciones y seleccionar "Propiedades..." se mostrará una página de configuración que hace que sea fácil de configurar cada rol.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;IMG style="WIDTH: 572px; HEIGHT: 357px" src="http://public.blu.livefilestore.com/y1pJvsDHPiv1vvXNY1tOPy4wh7UMXzF33-f8RvS_3W3X32p2TLHgLAxqVrq9i0B9eY7jERMvwdr8Dc3zkmu8ngWCg/RoleConfig.jpg" width=572 height=357 mce_src="http://public.blu.livefilestore.com/y1pJvsDHPiv1vvXNY1tOPy4wh7UMXzF33-f8RvS_3W3X32p2TLHgLAxqVrq9i0B9eY7jERMvwdr8Dc3zkmu8ngWCg/RoleConfig.jpg"&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;SPAN&gt;Obteniendo lo correcto&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Una de las ventajas clave de utilizar Visual Studio 2010 para desarrollar servicios en la nube de Windows Azure es el entorno de simulación en el que se puede probar, depurar y ejecutar su servicio de manera local sin necesidad de una cuenta de Windows Azure. Esta simulación incluye la parte de desarrollo, que ejecutará su servicio de nube del mismo modo que se ejecuta en la nube y el almacenamiento de desarrollo, que ejecuta el almacenamiento de Windows Azure en su equipo. Con el desarrollo y almacenamiento puede desarrollar, probar y refinar los servicios de nube sin conexión.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Cuando se ejecuta en el tejido de desarrollo se pueden utilizar todas de características potentes de depuración de Visual Studio, incluida la depuración sin problemas a través de diferentes funciones y las instancias de papel. A continuación, una sesión de depuración permite el paso a través de la ejecución de una función de web.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;IMG style="WIDTH: 549px; HEIGHT: 230px" src="http://public.blu.livefilestore.com/y1pec1X2sPuYYC4TfsEIIuycziCkGesj_RisI9GoSTeawr_3NKTrKEtV01SgU8PhXEuPEO6wHmD8G90OHzz-L9euQ/DebugSmall.jpg" width=549 height=230 mce_src="http://public.blu.livefilestore.com/y1pec1X2sPuYYC4TfsEIIuycziCkGesj_RisI9GoSTeawr_3NKTrKEtV01SgU8PhXEuPEO6wHmD8G90OHzz-L9euQ/DebugSmall.jpg"&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;SPAN&gt;Implementar en la nube&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Una vez esté listo para mover la aplicación para la nube, Visual Studio proporciona un paso de publicación que empaquta su servicio de nube en un formato que Windows Azure puede implementar y, a continuación, puede implementar su servicio nube mediante el &lt;A href="https://windows.azure.com/"&gt;portal de desarrolladores de Windows Azure&lt;/A&gt; (en inglés).&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Para obtener más inforamación, visite los blogs &lt;A href="http://blogs.msdn.com/jnak"&gt;Nublado en Seattle (Cloudy in Seattle)&lt;/A&gt; (en inglés) y &lt;A href="http://blogs.msdn.com/cloud/"&gt;Herramientas de la nube (Cloud Tools)&lt;/A&gt; (en inglés).&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;¡Namaste!&lt;/SPAN&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9924880" width="1" height="1"&gt;</content><author><name>SomaEsp</name><uri>http://blogs.msdn.com/members/SomaEsp.aspx</uri></author><category term="Developer Division" scheme="http://blogs.msdn.com/somaespanol/archive/tags/Developer+Division/default.aspx" /><category term="Visual Studio" scheme="http://blogs.msdn.com/somaespanol/archive/tags/Visual+Studio/default.aspx" /></entry><entry><title>Teamprise: Colaboración de TFS entre plataformas heterogéneas</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/somaespanol/archive/2009/11/13/teamprise-colaboraci-n-de-tfs-entre-plataformas-heterog-neas.aspx" /><id>http://blogs.msdn.com/somaespanol/archive/2009/11/13/teamprise-colaboraci-n-de-tfs-entre-plataformas-heterog-neas.aspx</id><published>2009-11-13T16:09:00Z</published><updated>2009-11-13T16:09:00Z</updated><content type="html">&lt;DIV&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;EM&gt;Publicación del &lt;/EM&gt;&lt;A href="http://blogs.msdn.com/somasegar/archive/2009/11/09/teamprise-enabling-tfs-collaboration-across-heterogeneous-platforms.aspx"&gt;&lt;EM&gt;inglés original&lt;/EM&gt;&lt;/A&gt;&lt;EM&gt;: lunes, 9 de noviembre de 2009 a las 5:05 PST por &lt;/EM&gt;&lt;A href="http://blogs.msdn.com/user/Profile.aspx?UserID=3644"&gt;&lt;EM&gt;Somasegar&lt;/EM&gt;&lt;/A&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Los equipos de desarrollo y las organizaciones suelen tener muchas plataformas y entornos de desarrollo diferentes. La interoperabilidad entre esos entornos heterogéneos es uno de los principales desafíos de colaboración.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;El paquete de cliente &lt;A href="http://www.teamprise.com/"&gt;Teamprise&lt;/A&gt; (en inglés) aborda esas lagunas de interoperabilidad. Permite a los desarrolladores que utilizan Eclipse e interfaces de usuario basadas en Eclipse en varios sistemas operativos, incluyendo Windows, UNIX, Linux y Mac OS X a crear aplicaciones que aprovechan Microsoft Visual Studio Team Foundation Server.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Me alegra anunciar que Microsoft ha adquirido la tecnología Teamprise.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Microsoft se compromete al futuro de esta tecnología y sus herramientas se incorporarán en Visual Studio 2010. Será parte del lanzamiento de Visual Studio 2010.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;La adquisición de la tecnología Teamprise es un paso importante en nuestro continuo compromiso de interoperabilidad y nuestra dedicación para facilitar que los clientes consigan resultados empresariales mayores, independientemente de su entorno de desarrollo actual.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Los detalles de la adquisición están disponibles en &lt;A href="http://www.microsoft.com/presspass/press/2009/nov09/11-09teamprisepr.mspx"&gt;Microsoft PressPass&lt;/A&gt; (en inglés).&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;¡Namaste!&lt;/SPAN&gt;&lt;/P&gt;&lt;/DIV&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9922024" width="1" height="1"&gt;</content><author><name>SomaEsp</name><uri>http://blogs.msdn.com/members/SomaEsp.aspx</uri></author><category term="Developer Division" scheme="http://blogs.msdn.com/somaespanol/archive/tags/Developer+Division/default.aspx" /><category term="Visual Studio" scheme="http://blogs.msdn.com/somaespanol/archive/tags/Visual+Studio/default.aspx" /></entry><entry><title>Desarrollo para la web mediante .NET 4 y VS 2010</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/somaespanol/archive/2009/11/09/desarrollo-para-la-web-mediante-net-4-y-vs-2010.aspx" /><id>http://blogs.msdn.com/somaespanol/archive/2009/11/09/desarrollo-para-la-web-mediante-net-4-y-vs-2010.aspx</id><published>2009-11-09T17:28:00Z</published><updated>2009-11-09T17:28:00Z</updated><content type="html">&lt;DIV&gt;
&lt;P&gt;&lt;I&gt;&lt;SPAN&gt;Publicación del &lt;A href="http://blogs.msdn.com/somasegar/archive/2009/11/03/developing-for-the-web-using-vs-2010-and-net-4.aspx"&gt;inglés original&lt;/A&gt;: martes, 3 de noviembre de 2009 a las 22:50 PST por &lt;A href="http://blogs.msdn.com/user/Profile.aspx?UserID=3644"&gt;Somasegar&lt;/A&gt;&lt;/SPAN&gt;&lt;/I&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Visual Studio 2010 y 4 de .NET están repletos de nuevas características diseñadas para mejorar la productividad del desarrollador. Algunas son pequeños cambios y otras son más importantes. En conjunto proporcionan una ganancia significativa en la productividad.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Cada vez más desarrolladores miran a la web para poder generar y entregar aplicaciones que sacan partido del alcance y la simplicidad de la web. Con Visual Studio 2010 y 4 de ASP.NET, hay un número de nuevas características para ayudarle a hacer exactamente eso. Deseo resaltar algunas de las nuevas características.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;SPAN&gt;Fragmentos de HTML, ASP.NET y JavaScript&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Los usuarios de C# y VB han utilizado fragmentos durante años para acelerar la productividad del desarrollador. Ahora los desarrolladores web pueden experimentar estos mismos beneficios en productividad en HTML, ASP.NET y JavaScript. Hay cientos de nuevos fragmentos que le ayudarán a Autocompletar etiquetas comunes de ASP.NET y HTML, incluidos los atributos necesarios (como runat = "server") y atributos específicos de una etiqueta (como ID, DataSourceID, ControlToValidate y Text).&lt;/SPAN&gt;&lt;/P&gt;
&lt;TABLE&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;IMG src="http://kxacog.blu.livefilestore.com/y1p2eLp39-eFbwKPma3x-qvdCOUa1W6lO0-HWWPJpsRBica9Tck6i5n46ceZG5lwGw_AEdlX0vqQ-cnbZC53yBe5Q/Snippets.jpg" mce_src="http://kxacog.Blu.livefilestore.com/y1p2eLp39-eFbwKPma3x-qvdCOUa1W6lO0-HWWPJpsRBica9Tck6i5n46ceZG5lwGw_AEdlX0vqQ-cnbZC53yBe5Q/Snippets.jpg"&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;IMG src="http://kxacog.blu.livefilestore.com/y1p9q-5lcb8VcFYU9Kb5Y5q0y90uHuTUjYcO-321T16mAAyRYdDyA0NjKIkeiZM0v7IqIMrlXlMkBL5ZmtOUo03Zw/RBLSnippet.jpg" mce_src="http://kxacog.Blu.livefilestore.com/y1p9q-5lcb8VcFYU9Kb5Y5q0y90uHuTUjYcO-321T16mAAyRYdDyA0NjKIkeiZM0v7IqIMrlXlMkBL5ZmtOUo03Zw/RBLSnippet.jpg"&gt;&lt;A href="http://kxacog.blu.livefilestore.com/y1p9q-5lcb8VcFYU9Kb5Y5q0y90uHuTUjYcO-321T16mAAyRYdDyA0NjKIkeiZM0v7IqIMrlXlMkBL5ZmtOUo03Zw/RBLSnippet.jpg"&gt;&lt;/A&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;P&gt;&lt;B&gt;&lt;SPAN&gt;IntelliSense dinámico para JavaScript&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Uno de los mayores desafíos a los que se enfrentan los desarrolladores al codificar con lenguajes dinámicos como JavaScript, es que los tipos se añaden y modifican dinámicamente. Esto puede hacer que IntelliSense sea prácticamente inútil. En Visual Studio 2010, el motor IntelliSense de JavaScript se ha rediseñado para que funcione sin problemas con tipos dinámicos. Por ejemplo, ahora obtendrá IntelliSense para los tipos generados por registerNamespace. El motor también agrega compatibilidad para bibliotecas de JavaScript más comunes. A continuación puede ver un ejemplo de IntelliSense para un tipo recién registrado con una nueva función.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;IMG src="http://kxacog.blu.livefilestore.com/y1pv7MAbdPjUqLR7ODUqK5cdT7D8JehXLDW4cUEWhC2EX5MKVnoAnZh_X64fr9J-6C-7vmdSef8pv2fxVd6iBGIqQ/JSIntelliSense.jpg" mce_src="http://kxacog.Blu.livefilestore.com/y1pv7MAbdPjUqLR7ODUqK5cdT7D8JehXLDW4cUEWhC2EX5MKVnoAnZh_X64fr9J-6C-7vmdSef8pv2fxVd6iBGIqQ/JSIntelliSense.jpg"&gt;&lt;A href="http://kxacog.blu.livefilestore.com/y1pv7MAbdPjUqLR7ODUqK5cdT7D8JehXLDW4cUEWhC2EX5MKVnoAnZh_X64fr9J-6C-7vmdSef8pv2fxVd6iBGIqQ/JSIntelliSense.jpg"&gt;&lt;/A&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;SPAN&gt;Implementación simplificada para Web&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;La implementación para web siempre ha sido un problema muy difícil para los desarrolladores. La lógica de la aplicación, las bases de datos, configuración de IIS, datos y configuración de aplicación, todo tiene que ser aplicado antes de la implementación.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Ahora, MSDeploy, una nueva herramienta de implementación, empaqueta todos los valores, archivos y datos asociados con una aplicación web. Estos paquetes, a continuación, se pueden implementar en sitios remotos o pueden ser archivados para su futura recuperación. La consola de administración de IIS7 incluye ahora un asistente para importar los paquetes creados al MSDeploy.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Visual Studio 2010 integra MSDeploy perfectamente en el flujo de trabajo de desarrollo web y agrega características solicitadas a menudo, como automatización de transformaciones de web.config para modificar la configuración común (como extremos de servicio web y cadenas de conexión) y la implementación de base de datos antes de pasar de equipo de desarrollo a un servidor de ensayo o producción. A continuación puede ver el nuevo cuadro de diálogo publicación simplificada:&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;IMG src="http://kxacog.blu.livefilestore.com/y1pPhSlQMihdlcSDUu2703gGE_vr2TQniC_H_YN3Cq893buAKE8uvf2wPXfDJAOFSjjZMykK_rElVX3AQD-kmsaTw/MSDeploy.jpg" mce_src="http://kxacog.Blu.livefilestore.com/y1pPhSlQMihdlcSDUu2703gGE_vr2TQniC_H_YN3Cq893buAKE8uvf2wPXfDJAOFSjjZMykK_rElVX3AQD-kmsaTw/MSDeploy.jpg"&gt;&lt;A href="http://kxacog.blu.livefilestore.com/y1pPhSlQMihdlcSDUu2703gGE_vr2TQniC_H_YN3Cq893buAKE8uvf2wPXfDJAOFSjjZMykK_rElVX3AQD-kmsaTw/MSDeploy.jpg"&gt;&lt;/A&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;SPAN&gt;Nuevas plantillas de aplicación&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Empezar a desarrollar para la web puede parecer desalentador para los nuevos desarrolladores. Visual Studio 2010 incluye plantillas de aplicación web para ASP.NET 4. Estas plantillas incluyen todo lo que necesita para empezar a trabajar: un modelo de contenido/patrón para la coherencia de la página, menús, inicio de sesión y hojas de estilos CSS y jQuery para crear aplicaciones enriquecidas de JavaScript. Estas plantillas le proporcionan una aplicación web que funciona desde el principio para que así pueda empezar a trabajar en agregar su propia funcionalidad.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;SPAN&gt;Mejoras de CSS&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Los Controles ASP.NET tienen ahora una propiedad ClientIDMode que le permite cambiar cómo generan su ClientID. Saber el ClientID es especialmente importante cuando se aplican estilos con CSS o cuando escribe JavaScript para tener acceso al HTML DOM.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;I&gt;&lt;SPAN&gt;El Diseñador de HTML de Visual Studio 2010 ha mejorado la compatibilidad con CSS 2.1, que proporciona una representación más precisa en tiempo de diseño comparado con cómo representará el explorador la página en tiempo de ejecución.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;SPAN&gt;Más espacio en pantalla&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Uno de los productos más valiosos en un entorno de desarrollo es el espacio en pantalla. Visual Studio 2010 ofrece que una gran variedad de opciones que los desarrolladores pueden personalizar para optimizar el espacio en pantalla y la experiencia de desarrollo. El perfil de Web optimiza estos valores para maximizar el espacio en pantalla y mantener los comandos más utilizados por el desarrollador al alcance de la mano. Puede elegir el perfil de Web al iniciar Visual Studio por primera vez o cambiar su perfil más adelante mediante el menú Herramientas | Importar y exportar configuración...&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;SPAN&gt;&lt;IMG src="http://kxacog.blu.livefilestore.com/y1pKuTxNXIlBYRevKZj_Yku8yTrdd-U7CI8tZu4Uk_z-rtfUD7QdIO0AkXtoBSMiNUBFHp6j-xgwfJm6aVG4yxK4w/CodeOptimized.jpg" mce_src="http://kxacog.Blu.livefilestore.com/y1pKuTxNXIlBYRevKZj_Yku8yTrdd-U7CI8tZu4Uk_z-rtfUD7QdIO0AkXtoBSMiNUBFHp6j-xgwfJm6aVG4yxK4w/CodeOptimized.jpg"&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;SPAN&gt;Web.config limpios&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;A veces menos es más. Ésta es una de esas características. Cuando ASP.NET se introdujo por primera vez, no era siquiera necesario un archivo web.config. Y cuando lo era, a menudo sólo contiene unas pocas entradas. Según se han ido agregando nuevas características a ASP.NET, el archivo web.config ha crecido en tamaño y complejidad, lo que hace más difícil de leer y mantener el archivo. ASP.NET 4 devuelve el archivo de configuración mínima.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;SPAN&gt;Enrutamiento URL con Web Forms de ASP.NET&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;El enrutamiento de URL es una característica común a los proyectos MVC. ASP.NET 4 admite el enrutamiento de URL para los formularios web. Ahora puede definir direcciones URL que son significativas para su aplicación y comprensibles para sus usuarios. Estas URL simplificadas también ayudan en la optimización de motores de búsqueda (SEO).&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;SPAN&gt;Más información&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Esto es sólo un ejemplo de las mejoras para los desarrolladores de web en Visual Studio 2010. Puede ver una lista completa de las nuevas características para desarrollo web &lt;A href="http://www.asp.net/learn/whitepapers/aspnet4/default.aspx"&gt;aquí&lt;/A&gt; (en inglés).&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;SPAN&gt;Una cosa más...&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Si ha estado utilizando Visual Studio 2010 Beta 2, nos gustaría conocer su opinión. Por favor, &lt;A title="Visual Studio 2010 Beta 2 survey" href="https://mscuillume.smdisp.net/Collector/Survey.ashx?Name=D10G1"&gt;responda a la encuesta&lt;/A&gt; (en inglés) y comuníquenos sus experiencias.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Arial','sans-serif'; FONT-SIZE: 10pt"&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;A href="https://mscuillume.smdisp.net/Collector/Survey.ashx?Name=D10G1" mce_href="https://mscuillume.smdisp.net/Collector/Survey.ashx?Name=D10G1"&gt;&lt;IMG style="WIDTH: 240px; HEIGHT: 85px" title="Got Feedback?" border=0 alt="Got Feedback?" src="http://zuby5a.blu.livefilestore.com/y1p_ppcnQFHRQ9bWWe7E_fYWT6PRj4Bu1OR01iSRYBaGn2VXmU73LydAtnh4St5qRYNiHyLCB24WAH_pl7qaQnxBg/Feedback.jpg" width=240 height=85 mce_src="http://zuby5a.blu.livefilestore.com/y1p_ppcnQFHRQ9bWWe7E_fYWT6PRj4Bu1OR01iSRYBaGn2VXmU73LydAtnh4St5qRYNiHyLCB24WAH_pl7qaQnxBg/Feedback.jpg"&gt;&lt;/A&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;¡Namaste!&lt;/SPAN&gt;&lt;/P&gt;&lt;/DIV&gt;&lt;/I&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9919655" width="1" height="1"&gt;</content><author><name>SomaEsp</name><uri>http://blogs.msdn.com/members/SomaEsp.aspx</uri></author><category term="Developer Division" scheme="http://blogs.msdn.com/somaespanol/archive/tags/Developer+Division/default.aspx" /><category term=".NET Framework" scheme="http://blogs.msdn.com/somaespanol/archive/tags/.NET+Framework/default.aspx" /><category term="Visual Studio" scheme="http://blogs.msdn.com/somaespanol/archive/tags/Visual+Studio/default.aspx" /></entry><entry><title>Spec Explorer: Una herramienta de pruebas basada en modelo</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/somaespanol/archive/2009/10/27/spec-explorer-una-herramienta-de-pruebas-basada-en-modelo.aspx" /><id>http://blogs.msdn.com/somaespanol/archive/2009/10/27/spec-explorer-una-herramienta-de-pruebas-basada-en-modelo.aspx</id><published>2009-10-27T14:43:00Z</published><updated>2009-10-27T14:43:00Z</updated><content type="html">&lt;P&gt;&lt;SPAN&gt;&lt;I&gt;&lt;SPAN&gt;Publicación del &lt;A href="http://blogs.msdn.com/somasegar/archive/2009/10/26/spec-explorer-a-model-based-testing-tool.aspx"&gt;inglés original&lt;/A&gt;:&lt;/SPAN&gt;&lt;/I&gt;&lt;/SPAN&gt;&lt;I&gt;&lt;SPAN&gt; lunes, 26 de octubre de 2009 a las 21:15 PST por &lt;A id=ctl00___ctl00___ctl02___Entry___AuthorLink href="http://blogs.msdn.com/user/Profile.aspx?UserID=3644"&gt;Somasegar&lt;/A&gt;&lt;/SPAN&gt;&lt;/I&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Que los sistemas de pruebas sean detallados, coherentes y extensibles sigue siendo uno de los mayores desafíos en la creación y mantenimiento de sistemas de software.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;La herramienta Spec Explorer que ha visto hoy la luz en &lt;A href="http://msdn.microsoft.com/devlabs" mce_href="http://msdn.microsoft.com/devlabs"&gt;DevLabs&lt;/A&gt; (en inglé) combate ese problema mediante técnicas de pruebas basadas en modelo.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;IMG src="http://kxacog.blu.livefilestore.com/y1paD6Bv3V6nPohVlQN1b9iN2thKrU2jhkGVyLbm53BjlbMX9owxWYGRZz030oPqt_Ce0LKDgtqJKLKRQvUHT5FtA/SpecExplorer.jpg" mce_src="http://kxacog.blu.livefilestore.com/y1paD6Bv3V6nPohVlQN1b9iN2thKrU2jhkGVyLbm53BjlbMX9owxWYGRZz030oPqt_Ce0LKDgtqJKLKRQvUHT5FtA/SpecExplorer.jpg"&gt;&lt;A href="http://kxacog.blu.livefilestore.com/y1paD6Bv3V6nPohVlQN1b9iN2thKrU2jhkGVyLbm53BjlbMX9owxWYGRZz030oPqt_Ce0LKDgtqJKLKRQvUHT5FtA/SpecExplorer.jpg" mce_href="http://kxacog.blu.livefilestore.com/y1paD6Bv3V6nPohVlQN1b9iN2thKrU2jhkGVyLbm53BjlbMX9owxWYGRZz030oPqt_Ce0LKDgtqJKLKRQvUHT5FtA/SpecExplorer.jpg "&gt;&lt;/A&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;SPAN&gt;¿Qué es?&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Spec Explorer es una herramienta para modelar el comportamiento de software y generarión de series de prueba de esos modelos. &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Los modelos pueden ser considerados como representaciones gráficas para comprender y analizar el comportamiento esperado del sistema y comunicarlo a los demás. El tamaño del modelo se puede medir con expresiones regulares. Las series de prueba generadas se pueden ejecutar independiente en el marco de prueba de Visual Studio o de otros marcos de pruebas unitarias.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;SPAN&gt;¿Por qué utilizarlo?&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Varios proyectos de Microsoft de diferentes tamaños ya han utilizado Spec Explorer como parte de su proceso de desarrollo. Spec Explorer ha ayudado a esos equipos a crear casos de prueba más rápido, además de garantizar la previsibilidad de la cobertura de los requisitos y admitir las actualizaciones de software de administración y de ciclo de vida de los proyectos.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Las características únicas de Spec Explorer hace que sea más fácil de aprender que otras herramientas de pruebas basadas en modelo. Los ingenieros con ningún conocimiento de modelado pueden crear modelos de sistemas y funciones y generar pruebas en un corto período de tiempo. Estudios sobre un proyecto a gran escala con más de 300 conjuntos de prueba han demostrado una ganancia de productividad media del 42% sobre series de prueba creadass manualmente.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Hasta ahora hemos adaptado Spec Explorer en función de los comentarios de los equipos dentro de Microsoft, ahora necesitamos sus comentarios para garantizar que Spec Explore satisface las necesidades de los clientes que trabajen en proyectos variados en tamaño y tipo. &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://go.microsoft.com/fwlink/?LinkID=166911"&gt;Descargue&lt;/A&gt; (en inglés) Spec Explore hoy y envíe sus preguntas o comentarios en el &lt;A href="http://social.msdn.microsoft.com/Forums/en-US/specexplorer/threads" mce_href="http://social.msdn.microsoft.com/Forums/en-US/specexplorer/threads"&gt;foro&lt;/A&gt; (en inglés) y manténgase al corriente a través del &lt;A href="http://blogs.msdn.com/SpecExplorer" mce_href="http://blogs.msdn.com/SpecExplorer"&gt;blog&lt;/A&gt; (en inglés) del equipo.&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;¡Namaste!&lt;/SPAN&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9913518" width="1" height="1"&gt;</content><author><name>SomaEsp</name><uri>http://blogs.msdn.com/members/SomaEsp.aspx</uri></author><category term="Developer Division" scheme="http://blogs.msdn.com/somaespanol/archive/tags/Developer+Division/default.aspx" /><category term=".NET Framework" scheme="http://blogs.msdn.com/somaespanol/archive/tags/.NET+Framework/default.aspx" /><category term="MSDN" scheme="http://blogs.msdn.com/somaespanol/archive/tags/MSDN/default.aspx" /><category term="Visual Studio" scheme="http://blogs.msdn.com/somaespanol/archive/tags/Visual+Studio/default.aspx" /><category term="DevLabs" scheme="http://blogs.msdn.com/somaespanol/archive/tags/DevLabs/default.aspx" /></entry><entry><title>Venga a conocer el nuevo MSDN</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/somaespanol/archive/2009/10/22/venga-a-conocer-el-nuevo-msdn.aspx" /><id>http://blogs.msdn.com/somaespanol/archive/2009/10/22/venga-a-conocer-el-nuevo-msdn.aspx</id><published>2009-10-22T20:54:00Z</published><updated>2009-10-22T20:54:00Z</updated><content type="html">&lt;DIV&gt;
&lt;P&gt;&lt;I&gt;&lt;SPAN&gt;Publicación del &lt;A href="http://blogs.msdn.com/somasegar/archive/2009/10/19/come-meet-the-new-msdn.aspx"&gt;inglés original&lt;/A&gt;: lunes 19 de octubre de 2009 a las 12:11PM PST por &lt;A href="http://blogs.msdn.com/user/Profile.aspx?UserID=3644"&gt;Somasegar&lt;/A&gt;&lt;/SPAN&gt;&lt;/I&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;A href="http://msdn.microsoft.com/es-es/default.aspx" mce_href="http://msdn.microsoft.com/es-es/default.aspx"&gt;&lt;IMG src="http://kxacog.blu.livefilestore.com/y1pyC5KmObkZ1JSHZHen05FKbXzzUdXEe4Q0MgOc8Kz34boVNFkYqj1S2jBeTw7n1yS8CdIGhK5WjcDXE2jqaX-zw/msdn.jpg" mce_src="http://kxacog.blu.livefilestore.com/y1pyC5KmObkZ1JSHZHen05FKbXzzUdXEe4Q0MgOc8Kz34boVNFkYqj1S2jBeTw7n1yS8CdIGhK5WjcDXE2jqaX-zw/msdn.jpg"&gt;&lt;/A&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;La &lt;A href="http://msdn.microsoft.com/es-es/default.aspx" mce_href="http://msdn.microsoft.com/es-es/default.aspx"&gt;red mundial de MSDN&lt;/A&gt; reaparece con un nuevo diseño y nuevos beneficios para todos los suscriptores de MSDN.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Las suscripciones a MSDN son el mejor recurso que da a los desarrolladores, equipos y organizaciones amplio acceso a herramientas y tecnologías de Microsoft para diseñar con confianza, desarrollar y probar sus soluciones de software. Junto con acceso a miles de descargas, ofrece soporte profesional y servicio de información de expertos para asegurar que los desarrolladores pueden superar sus mayores retos.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Hoy en día, estamos presentando nuevos beneficios para mejorar el apoyar a los desarrolladores y para ayudarles a crecer su carrera. Todos los suscriptores de MSDN y BizSpark podrán aprovechar cursos online gratuitos en inglés. Estamos proporcionando asistencia prioritaria a todos los suscriptores a través de los foros de MSDN. También estamos presentando el acceso gratuito a la plataforma de Windows Azure para los clientes de MSDN Premium y BizSpark a partir de que esté Windows Azure esté disponible. Para iniciar a los desarrolladores en esta potente plataforma, los suscriptores recibirán 750 horas de cómputo gratuitas al mes durante 8 meses.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;El nuevo diseño de la red MSDN da soporte a nuestros clientes en todo el mundo, incluidos 37 sitios internacionales. &amp;nbsp;El objetivo del nuevo diseño es mejorar la experiencia general del sitio y los centros y ayudarle a tener éxito con los productos y tecnologías de Microsoft en los que ha invertido. El nuevo sitio MSDN incluye un nuevo diseño visual, nuevas formas de interactuar con el contenido para la comunidad, y nuevos controles de Silverlight para promover de manera dinámica el contenido dinámico de la Comunidad. Esto incluye un área de actividades de la Comunidad que mostrará los temas recientes y más populares de foros, ejemplos de código y artículos técnicos. La Biblioteca de MSDN ahora tiene la capacidad de explorar dos nuevas vistas de la biblioteca: ScriptFree (que establece un alto rendimiento mediante la eliminación de secuencias de comandos y viajes al servidor) y la versión Lightwave Beta (similar a la experiencia de ayuda sin conexión de VS 2010).&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;Esto es sólo el comienzo de una inversión importante que estamos realizando alrededor de nuestros activos en línea para mejorar la capacidad de detección, legibilidad, coherencia y pertinencia.&lt;/P&gt;
&lt;P&gt;Los comentarios de los usuarios de MSDN son cruciales para hacer de MSDN el mejor lugar para convertir sus ideas en soluciones. Gracias a todos los que han proporcionado comentarios y recomendaciones para hacer de MSDN un lugar mejor. Esperamos escuchar sus comentarios adicionales sobre cómo mejorar MSDN en &lt;A href="http://social.msdn.microsoft.com/Forums/en-US/msdnfeedback"&gt;el foro de comentarios&lt;/A&gt; de MSDN.&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;¡Namaste!&lt;/SPAN&gt;&lt;/P&gt;&lt;/DIV&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9911682" width="1" height="1"&gt;</content><author><name>SomaEsp</name><uri>http://blogs.msdn.com/members/SomaEsp.aspx</uri></author><category term="Developer Division" scheme="http://blogs.msdn.com/somaespanol/archive/tags/Developer+Division/default.aspx" /><category term=".NET Framework" scheme="http://blogs.msdn.com/somaespanol/archive/tags/.NET+Framework/default.aspx" /><category term="MSDN" scheme="http://blogs.msdn.com/somaespanol/archive/tags/MSDN/default.aspx" /><category term="Visual Studio" scheme="http://blogs.msdn.com/somaespanol/archive/tags/Visual+Studio/default.aspx" /></entry><entry><title>¡Visual Studio 2010 y .NET FX 4 beta 2 ven la luz!</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/somaespanol/archive/2009/10/20/visual-studio-2010-y-net-fx-4-beta-2-ven-la-luz.aspx" /><id>http://blogs.msdn.com/somaespanol/archive/2009/10/20/visual-studio-2010-y-net-fx-4-beta-2-ven-la-luz.aspx</id><published>2009-10-20T16:56:00Z</published><updated>2009-10-20T16:56:00Z</updated><content type="html">&lt;DIV&gt;
&lt;P&gt;&lt;SPAN&gt;Publicación del &lt;A href="http://blogs.msdn.com/somasegar/archive/2009/10/19/announcing-visual-studio-2010-and-net-fx-4-beta-2.aspx"&gt;inglés original&lt;/A&gt;: lunes, 19 de octubre de 2009 - 9:10:00 PST por &lt;A href="http://blogs.msdn.com/user/Profile.aspx?UserID=3644"&gt;&lt;FONT color=#0000ff&gt;Somasegar&lt;/FONT&gt;&lt;/A&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;A href="http://msdn.microsoft.com/en-US/vstudio/dd582936.aspx" target=_blank mce_href="http://msdn.Microsoft.com/en-US/vstudio/dd582936.aspx"&gt;&lt;IMG src="http://kxacog.blu.livefilestore.com/y1pkebgoBa6pln05efVyO3ftfvmzg8FUza_tCwAnDTymMKOFnXFMxAuZ8w61ZLwBY-gfnqD1Jw9wdsu2gHh0vDumg/VisualStudio.jpg" mce_src="http://kxacog.blu.livefilestore.com/y1pkebgoBa6pln05efVyO3ftfvmzg8FUza_tCwAnDTymMKOFnXFMxAuZ8w61ZLwBY-gfnqD1Jw9wdsu2gHh0vDumg/VisualStudio.jpg"&gt;&lt;/A&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Me complace anunciar el lanzamiento de Visual Studio 2010 y .NET Framework 4 beta 2. Los subscriptores de MSDN pueden &lt;A href="http://msdn.microsoft.com/en-us/vstudio/dd582936.aspx"&gt;descargar la Beta 2&lt;/A&gt; (en inglés) hoy. La versión beta estará disponible para el resto del mundo el miércoles.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Visual Studio 2010 ha logrado mejoras significativas desde Beta 1. Hemos recorrido un largo camino en rendimiento y la estabilidad general, y si bien hay más trabajo por hacer antes de finalizar Visual Studio 2010, esperamos que le guste lo que hay.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Beta 2 también incluye herramientas integradas para SharePoint, incluidas las plantillas de proyecto y soporte de depuración y ejecución así como soporte de herramientas para &lt;A href="http://blogs.msdn.com/somasegar/archive/2009/10/02/making-your-application-sparkle-with-windows-7.aspx"&gt;&lt;FONT color=#0000ff&gt;desarrollo de aplicaciones de Windows 7&lt;/FONT&gt;&lt;/A&gt; (en inglés).&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Desde la Beta 1, nuevas plantillas de herramientas de Windows Azure facilitan el inicio del desarrollo de aplicaciones para Windows Azure y un soporte mejorado para conexiones de datos en Silverlight 3 le permiten centrarse en escribir su código.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Team Foundation Server ahora se incluye en todas las versiones de Visual Studio 2010. Para equipos pequeños que necesitan sólo un pequeño conjunto de características tales como el control de código fuente, seguimiento de fallos y automatización de generación, TFS Basic ofrece una instalación simplificada, optimizada y se ejecuta en equipos de servidor o cliente. Los usuarios de Test Elements notarán una interfaz de usuario más intuitiva y con mayor capacidad de respuesta.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;También hemos estado mejorando el .NET Framework. Me alegro de decir que el tamaño de descarga de .NET Framework 4 beta 2 se reduce enormemente comparado con versiones anteriores de .NET Framework, con la mayoría de las versiones por debajo de los 50 megabytes. Mejoras significativas en la pila de procesamiento de texto de WPF hacen que el texto aparezca más nítido. También notará texto más nítido en el editor Visual Studio 2010.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Hoy también estamos anunciando una línea de productos simplificada y opciones de precios, así como nuevos beneficios para los suscriptores de MSDN. Para los suscriptores de MSDN Premium, la "oferta Ultimate" ofrecerá acceso al siguiente nivel de Visual Studio 2010 en su lanzamiento el 22 de marzo de 2010. Averigüe más acerca de la nueva línea de productos y la "Oferta Ultimate" &lt;A href="http://microsoft.com/visualstudio/2010UltimateOffer"&gt;&lt;FONT color=#0000ff&gt;aquí&lt;/FONT&gt;&lt;/A&gt; (en inglés).&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Visual Studio 2010 Beta 2 está disponible hoy para los suscriptores de MSDN y el 21 de octubre para descarga pública. No pierda de vista la &lt;A href="http://www.microsoft.com/visualstudio/en-us/products/2010/default.mspx"&gt;&lt;FONT color=#0000ff&gt;página de productos de Visual Studio 2010&lt;/FONT&gt;&lt;/A&gt; (en inglés) o &lt;A href="https://profile.microsoft.com/regsysprofilecenter/wizard.aspx?wizid=9cee2475-0611-48b4-a127-13dc4914828e&amp;amp;lcid=1033"&gt;&lt;FONT color=#0000ff&gt;inscríbase&lt;/FONT&gt;&lt;/A&gt; (en inglés) para que se le notifique cuando esté disponible. El equipo y yo estamos deseando escuchar sus comentarios.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;¡Namaste!&lt;/SPAN&gt;&lt;/P&gt;&lt;/DIV&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9910036" width="1" height="1"&gt;</content><author><name>SomaEsp</name><uri>http://blogs.msdn.com/members/SomaEsp.aspx</uri></author></entry><entry><title>F# en VS2010</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/somaespanol/archive/2009/10/13/f-en-vs2010.aspx" /><id>http://blogs.msdn.com/somaespanol/archive/2009/10/13/f-en-vs2010.aspx</id><published>2009-10-13T19:25:00Z</published><updated>2009-10-13T19:25:00Z</updated><content type="html">&lt;P&gt;&lt;I&gt;&lt;SPAN&gt;Publicación del &lt;A href="http://blogs.msdn.com/somasegar/archive/2009/10/09/f-in-vs2010.aspx"&gt;inglés original&lt;/A&gt;: viernes, 9 de octubre de 2009 a las 22:21 PST por &lt;A href="http://blogs.msdn.com/user/Profile.aspx?UserID=3644"&gt;Somasegar&lt;/A&gt;&lt;/SPAN&gt;&lt;/I&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Con Visual Studio nos esforzamos para dar a su organización las herramientas que le ayuden a hacer frente a una amplia gama de problemas de software con la interoperabilidad y la eficiencia que usted necesita y espera de un software basado en .NET Framework.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Así, Visual Studio 2010 es la primera versión que apoya directamente la programación funcional mediante el lenguaje de programación F#.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;F# es un lenguaje de .NET de alta producción que combina la programación funcional y la programación orientada a objetos y es ideal para el desarrollo paralelo, algorítmico y desarrollo técnico y exploratorio. F# es el resultado de una estrecha asociación entre Microsoft Research y el equipo de Visual Studio. Desde el anuncio de F# en Visual Studio 2010 hemos visto una oleada de interés y adopción del idioma. También hemos trabajado estrechamente con la comunidad de F# y los usuarios principales para asegurarnos que cumple con las necesidades de los desarrolladores de software profesionales que trabajan en estos dominios.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;F# trae muchas características nuevas a Visual Studio de 2010, abarcando todo desde escribir código con tuplas y funciones para simplificar el código, programación asincrónica libre de errores y tipos seguros para código de punto flotante. A continuación muestro algunos de los aspectos más destacados de esta adición a los idiomas de Visual Studio.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;SPAN&gt;Sintaxis simple y precisa&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;F# es un lenguaje fuertemente tipado como C#, pero con una sintaxis sencilla a menudo vista en un lenguaje dinámico como Python. Esto hará sus programas ligeros, parecidos a funciones matemáticas.&lt;/SPAN&gt;&lt;/P&gt;&lt;SPAN&gt;
&lt;P style="MARGIN: 0in 0in 0pt 0.5in; BACKGROUND: #eeece1; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: blue; FONT-SIZE: 9.5pt; mso-bidi-font-family: Consolas"&gt;let&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: black; FONT-SIZE: 9.5pt; mso-bidi-font-family: Consolas"&gt; data = (&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: brown; FONT-SIZE: 9.5pt; mso-bidi-font-family: Consolas"&gt;1&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: black; FONT-SIZE: 9.5pt; mso-bidi-font-family: Consolas"&gt;,&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: brown; FONT-SIZE: 9.5pt; mso-bidi-font-family: Consolas"&gt;2&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: black; FONT-SIZE: 9.5pt; mso-bidi-font-family: Consolas"&gt;,&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: brown; FONT-SIZE: 9.5pt; mso-bidi-font-family: Consolas"&gt;3&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: black; FONT-SIZE: 9.5pt; mso-bidi-font-family: Consolas"&gt;)&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt 0.5in; BACKGROUND: #eeece1; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: blue; FONT-SIZE: 9.5pt; mso-bidi-font-family: Consolas"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt 0.5in; BACKGROUND: #eeece1; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: blue; FONT-SIZE: 9.5pt; mso-bidi-font-family: Consolas"&gt;let&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: black; FONT-SIZE: 9.5pt; mso-bidi-font-family: Consolas"&gt; rotations (x, y, z) = &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt 0.5in; BACKGROUND: #eeece1; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: black; FONT-SIZE: 9.5pt; mso-bidi-font-family: Consolas"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;[ (x, y, z);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt 0.5in; BACKGROUND: #eeece1; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: black; FONT-SIZE: 9.5pt; mso-bidi-font-family: Consolas"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;(z, x, y);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt 0.5in; BACKGROUND: #eeece1; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: black; FONT-SIZE: 9.5pt; mso-bidi-font-family: Consolas"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;(y, z, x) ]&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt 0.5in; BACKGROUND: #eeece1; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: blue; FONT-SIZE: 9.5pt; mso-bidi-font-family: Consolas"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt 0.5in; BACKGROUND: #eeece1; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: blue; FONT-SIZE: 9.5pt; mso-bidi-font-family: Consolas"&gt;let&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: black; FONT-SIZE: 9.5pt; mso-bidi-font-family: Consolas"&gt; derivative f x = &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt 0.5in; BACKGROUND: #eeece1; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: black; FONT-SIZE: 9.5pt; mso-bidi-font-family: Consolas"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: blue; FONT-SIZE: 9.5pt; mso-bidi-font-family: Consolas"&gt;let&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: black; FONT-SIZE: 9.5pt; mso-bidi-font-family: Consolas"&gt; p1 = f (x - &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: brown; FONT-SIZE: 9.5pt; mso-bidi-font-family: Consolas"&gt;0.05&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: black; FONT-SIZE: 9.5pt; mso-bidi-font-family: Consolas"&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt 0.5in; BACKGROUND: #eeece1; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: black; FONT-SIZE: 9.5pt; mso-bidi-font-family: Consolas"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: blue; FONT-SIZE: 9.5pt; mso-bidi-font-family: Consolas"&gt;let&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: black; FONT-SIZE: 9.5pt; mso-bidi-font-family: Consolas"&gt; p2 = f (x + &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: brown; FONT-SIZE: 9.5pt; mso-bidi-font-family: Consolas"&gt;0.05&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: black; FONT-SIZE: 9.5pt; mso-bidi-font-family: Consolas"&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt 0.5in; BACKGROUND: #eeece1; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: black; FONT-SIZE: 9.5pt; mso-bidi-font-family: Consolas"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;(p2 - p1) / &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: brown; FONT-SIZE: 9.5pt; mso-bidi-font-family: Consolas"&gt;0.1&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: blue; FONT-SIZE: 9.5pt; mso-bidi-font-family: Consolas"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt 0.5in; BACKGROUND: #eeece1; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: blue; FONT-SIZE: 9.5pt; mso-bidi-font-family: Consolas"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt 0.5in; BACKGROUND: #eeece1; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: blue; FONT-SIZE: 9.5pt; mso-bidi-font-family: Consolas"&gt;let&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: black; FONT-SIZE: 9.5pt; mso-bidi-font-family: Consolas"&gt; f x = &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: brown; FONT-SIZE: 9.5pt; mso-bidi-font-family: Consolas"&gt;2.0&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: black; FONT-SIZE: 9.5pt; mso-bidi-font-family: Consolas"&gt;*x*x - &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: brown; FONT-SIZE: 9.5pt; mso-bidi-font-family: Consolas"&gt;6.0&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: black; FONT-SIZE: 9.5pt; mso-bidi-font-family: Consolas"&gt;*x + &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: brown; FONT-SIZE: 9.5pt; mso-bidi-font-family: Consolas"&gt;3.0&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: blue; FONT-SIZE: 9.5pt; mso-bidi-font-family: Consolas"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt 0.5in; BACKGROUND: #eeece1; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: blue; FONT-SIZE: 9.5pt; mso-bidi-font-family: Consolas"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt 0.5in; BACKGROUND: #eeece1; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: blue; FONT-SIZE: 9.5pt; mso-bidi-font-family: Consolas"&gt;let&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: black; FONT-SIZE: 9.5pt; mso-bidi-font-family: Consolas"&gt; df = derivative f&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt 0.5in; BACKGROUND: #eeece1; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: blue; FONT-SIZE: 9.5pt; mso-bidi-font-family: Consolas"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt 0.5in; BACKGROUND: #eeece1; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: black; FONT-SIZE: 9.5pt; mso-bidi-font-family: Consolas"&gt;System.Console.WriteLine(&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: maroon; FONT-SIZE: 9.5pt; mso-bidi-font-family: Consolas"&gt;"La derivada de&amp;nbsp;f&amp;nbsp;en x=4&amp;nbsp;es {0}"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: black; FONT-SIZE: 9.5pt; mso-bidi-font-family: Consolas"&gt;, df &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: brown; FONT-SIZE: 9.5pt; mso-bidi-font-family: Consolas"&gt;4.0&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: black; FONT-SIZE: 9.5pt; mso-bidi-font-family: Consolas"&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/SPAN&gt;
&lt;P&gt;&lt;SPAN&gt;Cuando se ejecuta, se imprimirá este programa: “La derivada de&amp;nbsp;f&amp;nbsp;en x=4 es 10”&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;SPAN&gt;Programación paralela y asíncrona&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;.NET Framework 4 y Visual Studio 2010 contienen grandes bibliotecas y herramientas para el fácil desarrollo de aplicación paralela. F# las complementa con características del lenguaje diseñadas para facilitar la programación paralela y asincrónica más intuitiva. Esto incluye características fundamentales del lenguaje como inmutabilidad y funciones de primera clase y modelos de programación potentes, tales como flujos de trabajo asincrónicos, que le permiten escribir código asíncrono con el mismo estilo lineal del código síncrono al que está acostumbrado.&lt;/SPAN&gt;&lt;/P&gt;&lt;SPAN&gt;
&lt;P style="MARGIN: 0in 0in 0pt 0.5in; BACKGROUND: #eeece1; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: blue; FONT-SIZE: 9.5pt; mso-bidi-font-family: Consolas"&gt;let&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: black; FONT-SIZE: 9.5pt; mso-bidi-font-family: Consolas"&gt; http url = &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt 0.5in; BACKGROUND: #eeece1; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: black; FONT-SIZE: 9.5pt; mso-bidi-font-family: Consolas"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;async { &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: blue; FONT-SIZE: 9.5pt; mso-bidi-font-family: Consolas"&gt;let&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: black; FONT-SIZE: 9.5pt; mso-bidi-font-family: Consolas"&gt; req =&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;WebRequest.Create(Uri url) &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt 0.5in; BACKGROUND: #eeece1; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: black; FONT-SIZE: 9.5pt; mso-bidi-font-family: Consolas"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: blue; FONT-SIZE: 9.5pt; mso-bidi-font-family: Consolas"&gt;let!&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: black; FONT-SIZE: 9.5pt; mso-bidi-font-family: Consolas"&gt; resp = req.AsyncGetResponse()&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt 0.5in; BACKGROUND: #eeece1; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: black; FONT-SIZE: 9.5pt; mso-bidi-font-family: Consolas"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: blue; FONT-SIZE: 9.5pt; mso-bidi-font-family: Consolas"&gt;let&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: black; FONT-SIZE: 9.5pt; mso-bidi-font-family: Consolas"&gt; stream = resp.GetResponseStream()&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt 0.5in; BACKGROUND: #eeece1; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: black; FONT-SIZE: 9.5pt; mso-bidi-font-family: Consolas"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: blue; FONT-SIZE: 9.5pt; mso-bidi-font-family: Consolas"&gt;let&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: black; FONT-SIZE: 9.5pt; mso-bidi-font-family: Consolas"&gt; reader = &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: blue; FONT-SIZE: 9.5pt; mso-bidi-font-family: Consolas"&gt;new&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: black; FONT-SIZE: 9.5pt; mso-bidi-font-family: Consolas"&gt; StreamReader(stream)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt 0.5in; BACKGROUND: #eeece1; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: black; FONT-SIZE: 9.5pt; mso-bidi-font-family: Consolas"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: blue; FONT-SIZE: 9.5pt; mso-bidi-font-family: Consolas"&gt;let!&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: black; FONT-SIZE: 9.5pt; mso-bidi-font-family: Consolas"&gt; contents = reader.AsyncReadToEnd()&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt 0.5in; BACKGROUND: #eeece1; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: black; FONT-SIZE: 9.5pt; mso-bidi-font-family: Consolas"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: blue; FONT-SIZE: 9.5pt; mso-bidi-font-family: Consolas"&gt;return&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: black; FONT-SIZE: 9.5pt; mso-bidi-font-family: Consolas"&gt; contents }&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt 0.5in; BACKGROUND: #eeece1; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: blue; FONT-SIZE: 9.5pt; mso-bidi-font-family: Consolas"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt 0.5in; BACKGROUND: #eeece1; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: blue; FONT-SIZE: 9.5pt; mso-bidi-font-family: Consolas"&gt;let&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: black; FONT-SIZE: 9.5pt; mso-bidi-font-family: Consolas"&gt; sites = [&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: maroon; FONT-SIZE: 9.5pt; mso-bidi-font-family: Consolas"&gt;"&lt;A href="http://bing.com/"&gt;http://bing.com&lt;/A&gt;"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: black; FONT-SIZE: 9.5pt; mso-bidi-font-family: Consolas"&gt;; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: maroon; FONT-SIZE: 9.5pt; mso-bidi-font-family: Consolas"&gt;"&lt;A href="http://microsoft.com/"&gt;http://microsoft.com&lt;/A&gt;"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: black; FONT-SIZE: 9.5pt; mso-bidi-font-family: Consolas"&gt;; &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt 0.5in; BACKGROUND: #eeece1; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: black; FONT-SIZE: 9.5pt; mso-bidi-font-family: Consolas"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: maroon; FONT-SIZE: 9.5pt; mso-bidi-font-family: Consolas"&gt;"&lt;A href="http://msdn.com/"&gt;http://msdn.com&lt;/A&gt;"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: black; FONT-SIZE: 9.5pt; mso-bidi-font-family: Consolas"&gt;; &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: maroon; FONT-SIZE: 9.5pt; mso-bidi-font-family: Consolas"&gt;"&lt;A href="http://msnbc.com/"&gt;http://msnbc.com&lt;/A&gt;"&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: black; FONT-SIZE: 9.5pt; mso-bidi-font-family: Consolas"&gt;]&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt 0.5in; BACKGROUND: #eeece1; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: blue; FONT-SIZE: 9.5pt; mso-bidi-font-family: Consolas"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt 0.5in; BACKGROUND: #eeece1; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: blue; FONT-SIZE: 9.5pt; mso-bidi-font-family: Consolas"&gt;let&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: black; FONT-SIZE: 9.5pt; mso-bidi-font-family: Consolas"&gt; htmlOfSites = &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt 0.5in; BACKGROUND: #eeece1; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: black; FONT-SIZE: 9.5pt; mso-bidi-font-family: Consolas"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Async.Parallel [&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: blue; FONT-SIZE: 9.5pt; mso-bidi-font-family: Consolas"&gt;for&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: black; FONT-SIZE: 9.5pt; mso-bidi-font-family: Consolas"&gt; site &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: blue; FONT-SIZE: 9.5pt; mso-bidi-font-family: Consolas"&gt;in&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: black; FONT-SIZE: 9.5pt; mso-bidi-font-family: Consolas"&gt; sites &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: blue; FONT-SIZE: 9.5pt; mso-bidi-font-family: Consolas"&gt;-&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: black; FONT-SIZE: 9.5pt; mso-bidi-font-family: Consolas"&gt; http(site)]&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt 0.5in; BACKGROUND: #eeece1; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: black; FONT-SIZE: 9.5pt; mso-bidi-font-family: Consolas"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;|&amp;gt; Async.RunSynchronously&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;/SPAN&gt;&lt;B&gt;&lt;SPAN&gt;Integrado con Visual Studio 2010 y .NET 4&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;La integración de F# en Visual Studio 2010 incluye plantillas de proyecto, soporte IDE, IntelliSense e integración de la ventana de herramientas interactiva de F#. F# puede utilizarse para desarrollar aplicaciones y componentes destinados a .NET 2.0 a través de .NET 4 y Silverlight. Como un lenguaje. NET, F# puede usarse cómodamente junto con C# y Visual Basic.NET. En .NET 4, los tipos de núcleo que F# utiliza, como Tuple, Lazy y BigInteger, ahora forman parte de .NET Framework y pueden utilizarse en todos los lenguajes de .NET.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;La ventana interactiva de herramientas de F# permite un estilo de desarrollo exploratorio dentro de Visual Studio. A continuación puede ver el código de fuente de F# de un script de F# abierto en el editor de Visual Studio y en la ventana interactiva de herramientas de F# donde se ejecuta el código de forma interactiva. En la parte superior derecha se encuentra el formulario y los gráficos que ha creado la secuencia de comandos.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;IMG src="http://kxacog.blu.livefilestore.com/y1pBnqzreZN5Si59qbDTHomEaSlfRUAgurT83Aj-ljBrOFmA-p5C17KI-5-s0oqZvUu-TmucJOWGVj7pQiBfDMlhw/FSharp.jpg" mce_src="http://kxacog.blu.livefilestore.com/y1pBnqzreZN5Si59qbDTHomEaSlfRUAgurT83Aj-ljBrOFmA-p5C17KI-5-s0oqZvUu-TmucJOWGVj7pQiBfDMlhw/FSharp.jpg"&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;SPAN&gt;Unidades de medida&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Una característica innovadora de F# es las unidades de medida, que permiten anotar su punto flotante del código con unidades, como por ejemplo, metros y segundos. Esto es fácil de hacer, y los errores se muestran en el desarrollo cuando el código combina unidades incorrectamente. Lo que proporciona la comprobación en tiempo de compilación del punto flotante del código exacto sin sacrificar el rendimiento.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;IMG src="http://kxacog.blu.livefilestore.com/y1pNeCE-bIJJ2xGjZhB-d9a5Gc-YmSE9UfCz4zBnpYvU7GbhUmsar611CNJVMQVqFWaTJIghGIL7qwjxNyiIJI8vQ/UnitsOfMeasure.jpg" mce_src="http://kxacog.blu.livefilestore.com/y1pNeCE-bIJJ2xGjZhB-d9a5Gc-YmSE9UfCz4zBnpYvU7GbhUmsar611CNJVMQVqFWaTJIghGIL7qwjxNyiIJI8vQ/UnitsOfMeasure.jpg"&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Estas son, de un vistazo, algunas de las características interesantes de F#. Para obtener más información sobre F#, visite el &lt;A href="http://msdn.microsoft.com/es-es/fsharp/default.aspx"&gt;centro de desarrollo F#&lt;/A&gt; (en inglés) en MSDN.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;¡Namaste!&lt;/SPAN&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9906784" width="1" height="1"&gt;</content><author><name>SomaEsp</name><uri>http://blogs.msdn.com/members/SomaEsp.aspx</uri></author><category term="Developer Division" scheme="http://blogs.msdn.com/somaespanol/archive/tags/Developer+Division/default.aspx" /><category term=".NET Framework" scheme="http://blogs.msdn.com/somaespanol/archive/tags/.NET+Framework/default.aspx" /><category term="Visual Studio" scheme="http://blogs.msdn.com/somaespanol/archive/tags/Visual+Studio/default.aspx" /></entry><entry><title>Haga que su aplicaciones destaquen con Windows 7</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/somaespanol/archive/2009/10/08/haga-que-su-aplicaciones-destaquen-con-windows-7.aspx" /><id>http://blogs.msdn.com/somaespanol/archive/2009/10/08/haga-que-su-aplicaciones-destaquen-con-windows-7.aspx</id><published>2009-10-08T22:45:00Z</published><updated>2009-10-08T22:45:00Z</updated><content type="html">&lt;DIV&gt;
&lt;P&gt;&lt;I&gt;&lt;SPAN&gt;Publicación del &lt;A href="http://blogs.msdn.com/somasegar/archive/2009/10/02/making-your-application-sparkle-with-windows-7.aspx"&gt;inglés original&lt;/A&gt;: viernes, 2 de octubre de 2009 a las 20:16 PST por &lt;A href="http://blogs.msdn.com/user/Profile.aspx?UserID=3644"&gt;Somasegar&lt;/A&gt;&lt;/SPAN&gt;&lt;/I&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;El lanzamiento de Windows 7 está a la vuelta de la esquina. Tanto si prefiere desarrollo administrado o no administrado, puede aprovechar las ventajas de las características de las nuevas APIs y bibliotecas de Windows 7 para hacer destacar sus aplicaciones.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;SPAN&gt;Multitoque&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Los interfaces basadas en el tacto permiten que los usuarios interactúen con aplicaciones de forma más intuitiva. Windows 7 introduce entrada táctil y manipulación de procesamiento a través de Windows Touch.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-FAMILY: 'Arial','sans-serif'; FONT-SIZE: 10pt"&gt;Para los desarrolladores de C++ nativos, MFC tiene ahora una interfaz táctil habilitada. MFC hará gran parte del trabajo pesado: escucha mensajes relacionados con el tacto de Windows y llama a una serie de funciones virtuales para controlarlos. Los desarrolladores solamente necesitan registrarse para la entrada de toque, definir la configuración de gesto y reemplazar estos métodos virtuales como necesarios para habilitar las entradas táctiles en su aplicación.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;WPF 4 incluye adiciones de modelo de objeto para interfaces táctiles para que los desarrolladores de código administrados puedan añadirlo fácilmente a sus aplicaciones. Las entradas de múltiples dedos se expondrán a través de eventos de entrada nuevos y existentes, mientras que se expondrán nuevos eventos de manipulación e inercia para que los desarrolladores los consuman.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;SPAN&gt;Cinta&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Agregar una cinta a su aplicación puede ayudar a organizar sus menús, tareas y comandos y facilitar que sus usuarios encuentren lo que buscan de una forma más fácil. Si su aplicación está escrita en Win32, MFC o WPF, nuevos controles y APIs y le ayudarán a agregar una cinta a su aplicación.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Si escribe aplicaciones Win32, el marco de la cinta proporciona un conjunto de API para la creación de una cinta para su aplicación. Usted puede encontrar más información sobre el marco de cinta de Windows para Win32 &lt;A href="http://msdn.microsoft.com/en-us/library/dd316910(VS.85).aspx"&gt;aquí&lt;/A&gt; (en inglés).&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Visual Studio 2008 SP1 añadió soporte para crear interfaces de usuario con cinta similares a Office. Visual Studio 2010 agrega la cinta de Windows, incluyendo un diseñador de cinta de MFC para hacer la creación y edición de cintas mucho más fácil. Un formato XML para diseños de cinta persistente simplifica el desarrollo de la interfaz de usuario, eliminando la necesidad de "diseño en código".&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;IMG src="http://kxacog.blu.livefilestore.com/y1pZBnh9lLOHW3MkVMV4-pX4w5nS2z_Iz1kPsMRgnGXQdg1Xtanz5lE39NW92yKTyqTdKpUv42BUBZtQGgR5ypwSg/RibbonDesigner.jpg" mce_src="http://kxacog.blu.livefilestore.com/y1pZBnh9lLOHW3MkVMV4-pX4w5nS2z_Iz1kPsMRgnGXQdg1Xtanz5lE39NW92yKTyqTdKpUv42BUBZtQGgR5ypwSg/RibbonDesigner.jpg"&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;El nuevo control de cinta de WPF se publicará de forma independiente aproximadamente al mismo tiempo que WPF 4 a través del sitio de licencias de interfaz de usuario de Office. Usted puede encontrar instrucciones sobre la descarga de la &lt;A href="http://www.codeplex.com/wpf/Wiki/View.aspx?title=WPF%20Ribbon%20Preview"&gt;cinta de WPF (actualmente en la vista previa)&lt;/A&gt; (en inglés). La cinta de WPF contará con máscaras para Windows 7, Office y todas las cinta características estándar con las que los usuarios están familiarizados, incluyendo fichas y grupos, cambio de tamaño dinámico, barra de herramientas de acceso rápido, menú de la aplicación, fichas contextuales, sugerencias clave ¡y mucho más! La cinta permanecerá disponible de forma independiente en un ejecutable separado.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;SPAN&gt;Ubicación&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Entre las características de Windows 7 está la plataforma de ubicación, que facilita la tarea de escribir aplicaciones que pueden hacer uso de la ubicación del usuario. La plataforma de ubicación abre las puertas a algunos escenarios de aplicación interesantes, especialmente en los equipos móviles. Por ejemplo, una aplicación que tenga en cuenta ubicación podría utilizar la ubicación actual para mostrar al usuario restaurantes o tiendas cercanos, y una aplicación de correo electrónico o mensajería instantánea podría etiquetar los mensajes con la ubicación del remitente.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;La plataforma de ubicación ofrece una forma para que los dispositivos de ubicación, como GPS y radios WWAN, puedan integrarse con Windows e incluye una API que las aplicaciones pueden utilizar para determinar la ubicación actual del equipo. Debido a la API de ubicación expone su funcionalidad a través de interfaces COM, tanto los programadores de C++ como los de lenguaje de secuencias de comandos pueden aprovecharse de él. El SDK de Windows 7 incluye ejemplos y documentación para ayudarle a crear aplicaciones que tengan en cuenta la ubicación. Averigüe más acerca de la API de ubicación COM en &lt;A href="http://code.msdn.microsoft.com/SensorsAndLocation"&gt;MSDN&lt;/A&gt; (en inglés).&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Además de la API de ubicación COM, .NET Framework 4 incluirá APIs de ubicación integradas, lo que facilita el aprovechamiento de las capacidades de ubicación de Windows 7 para aplicaciones de .NET.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;SPAN&gt;Integración de shell&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Las mejoras del shell de Windows 7 facilitan a los autores de aplicaciones la forma de proporcionar una experiencia de usuario más rica e integrada. Las listas de salto proporcionan acceso a las tareas de inicio contextuales y a archivos disponibles para las aplicaciones. Por ejemplo, hacer clic con el botón secundario en el icono de Outlook mostrará los mensajes de correo que ha abierto recientemente en la lista de salto siguiente:&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;IMG src="http://kxacog.blu.livefilestore.com/y1pxj6hvMEsDJZpSeQvJBAKQ8EjoLLppNJiClUPvFUEVMsJmVhsGdqA4OuWkRvw1i6TIxzksidHxM_A8589tqesAg/JumpLists.jpg" mce_src="http://kxacog.Blu.livefilestore.com/y1pxj6hvMEsDJZpSeQvJBAKQ8EjoLLppNJiClUPvFUEVMsJmVhsGdqA4OuWkRvw1i6TIxzksidHxM_A8589tqesAg/JumpLists.jpg"&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;La nueva barra de tareas aparece menos congestionada y puede transmitir más información en un vistazo. Ahora le permiten fijar cualquier programa a la barra de tareas o reorganizar los iconos en la barra de tareas haciendo clic y arrastrando. Las miniaturas aero, que aparecen cuando se coloca sobre un icono en la barra de tareas, admiten personalización de vista y comandos de usuario. A continuación puede ver una miniatura Aero que admite comandos para controlar la reproducción multimedia.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;IMG src="http://kxacog.blu.livefilestore.com/y1pd7ypLKWTWrXixxlksqIY8eeu9_D2bNH30mC1hVzhBKRU1do3yk3SQCvrW3EFArleL_YMBiXZglkb_UHZaL0Fjw/UserControls.jpg" mce_src="http://kxacog.Blu.livefilestore.com/y1pd7ypLKWTWrXixxlksqIY8eeu9_D2bNH30mC1hVzhBKRU1do3yk3SQCvrW3EFArleL_YMBiXZglkb_UHZaL0Fjw/UserControls.jpg"&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;MFC agrega soporte para las nuevas características de shell de Windows 7. Por defecto, agregará a la lista de saltos de archivos recientes los archivos abiertos por una aplicación MFC a través del cuadro de diálogo "Abrir". Si desea cambiar el comportamiento predeterminado, MFC también proporciona APIs que le permiten personalizar el contenido de la lista de salto de su aplicación. MFC también ha añadido soporte para alta resolución y muchas de las nuevas características de diálogo de Windows. A continuación, el cuadro de diálogo Abrir archivo se ha personalizado con controles adicionales:&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;IMG src="http://kxacog.blu.livefilestore.com/y1pzcAjTYs-8gl3_Vqvm6ZHHmQg00YaLjtNazxK4Y480Rg-HmKY8ztK8QglQMcJiSaqU_SI7hmTHA7kDj_7KVpWDg/OpenFile.jpg" mce_src="http://kxacog.Blu.livefilestore.com/y1pzcAjTYs-8gl3_Vqvm6ZHHmQg00YaLjtNazxK4Y480Rg-HmKY8ztK8QglQMcJiSaqU_SI7hmTHA7kDj_7KVpWDg/OpenFile.jpg"&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Agregar apoyo en MFC para la búsqueda, pre visualización y miniaturas fue una elección obvia. Ahora puede buscar los documentos MFC en campo de búsqueda del explorador y ver los iconos y vistas previas igual que en las aplicaciones de Office.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;IMG src="http://kxacog.blu.livefilestore.com/y1pK-7bcHfUoAfWNEfan9bvr8_ZLeTV_daJtP9ozg6vnn6GM0Z_SXM04wjYvlp87avDSiT_4JyniUuMtcX4aoTDvg/Search.jpg" mce_src="http://kxacog.Blu.livefilestore.com/y1pK-7bcHfUoAfWNEfan9bvr8_ZLeTV_daJtP9ozg6vnn6GM0Z_SXM04wjYvlp87avDSiT_4JyniUuMtcX4aoTDvg/Search.jpg"&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Si el instalador de su aplicación necesita acceder o actualizar archivos que puede estar bloqueado o en uso, el administrador de reinicio puede manejar el apagado y reinicio de aplicaciones, o eliminar o reducir el número de reinicios de sistema necesarios para una instalación. Con unas pocas líneas de código, obtendrá pleno apoyo de administrador de reinicio con copia de seguridad programada automática de documentos abiertos. MFC ha agregado también soporte para el sistema de archivos transaccional en ATL.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Estas nuevas características de MFC estarán disponibles en Visual Studio 2010. Para aprovechar las ventajas de algunas de estas características (como las listas de salto), sólo necesita recompilar para obtener la experiencia de usuario actualizada, mientras que para otros (como el soporte de Windows Touch o administrador de reinicio) tendrá que añadir unas pocas líneas de código nuevo para incorporar la nueva funcionalidad.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;WPF 4 le permite utilizar las nuevas funciones de shell de Windows 7 también en las aplicaciones de WPF. WPF 4 integra la funcionalidad de la lista de salto de Windows 7, incluyendo tareas, elementos, recientes y frecuentes listas y categorías personalizadas. La integración de la barra de tareas de Windows 7 en WPF 4 incluye barras de progreso, superposición de iconos, botones de miniaturas con apoyo de comando, texto de la descripción y recorte en miniatura de administrador de ventanas de escritorio (DWM).&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;SPAN&gt;Más información&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Esto es sólo una introducción sobre cómo puede generar grandes aplicaciones de Windows 7. Para obtener más información, visite el &lt;/SPAN&gt;&lt;SPAN&gt;&lt;A href="http://windowsteamblog.com/blogs/developers/default.aspx"&gt;Blog del equipo de Windows&lt;/A&gt; (en inglés) y la &lt;A href="http://code.msdn.microsoft.com/Win7DeveloperGuide"&gt;Guía de desarrollo de Windows 7 (Windows 7 Developer Guide)&lt;/A&gt; (en inglés).&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;¡Namaste!&lt;/SPAN&gt;&lt;/P&gt;&lt;/DIV&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9905137" width="1" height="1"&gt;</content><author><name>SomaEsp</name><uri>http://blogs.msdn.com/members/SomaEsp.aspx</uri></author><category term="Developer Division" scheme="http://blogs.msdn.com/somaespanol/archive/tags/Developer+Division/default.aspx" /><category term=".NET Framework" scheme="http://blogs.msdn.com/somaespanol/archive/tags/.NET+Framework/default.aspx" /><category term="Visual Studio" scheme="http://blogs.msdn.com/somaespanol/archive/tags/Visual+Studio/default.aspx" /></entry><entry><title>Paseando por el laberinto de la memoria...</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/somaespanol/archive/2009/09/30/paseando-por-el-laberinto-de-la-memoria.aspx" /><id>http://blogs.msdn.com/somaespanol/archive/2009/09/30/paseando-por-el-laberinto-de-la-memoria.aspx</id><published>2009-09-30T19:41:00Z</published><updated>2009-09-30T19:41:00Z</updated><content type="html">&lt;DIV&gt;
&lt;P&gt;&lt;I&gt;&lt;SPAN&gt;Publicación del &lt;A href="http://blogs.msdn.com/somasegar/archive/2009/09/29/walking-down-memory-lane.aspx"&gt;inglés original&lt;/A&gt;: martes, 29 de septiembre a las 17:56 PST por &lt;A href="http://blogs.msdn.com/user/Profile.aspx?UserID=3644"&gt;Somasegar&lt;/A&gt;&lt;/SPAN&gt;&lt;/I&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;A veces, nos encontramos atrapados en lo que estamos haciendo en el momento, el día a día, los plazos inminentes, etc. De vez en cuando, es bueno dar un paso atrás y reflexionar sobre el viaje: el porqué, el qué, el cómo y el dónde.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Hace poco tuve dicha oportunidad cuando recibí una llamada para hacer un vídeo documental sobre Visual Studio. No estaba seguro de qué esperar o lo que iba a ser el producto final, pero teniendo en cuenta mi experiencia con Channel 9, decidí hacerlo. Fue divertido.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;El equipo completó recientemente este proyecto y hoy se ha publicado el documental de Visual Studio: &lt;A href="http://channel9.msdn.com/shows/VisualStudioDocumentary/The-Visual-Studio-Documentary-Part-One/"&gt;parte 1&lt;/A&gt; (en inglés) y &lt;A href="http://channel9.msdn.com/shows/VisualStudioDocumentary/The-Visual-Studio-Documentary-Part-Two/"&gt;parte 2&lt;/A&gt; (en inglés) en Channel 9.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Me ha parecido especialmente interesante escuchar a algunos de mis colegas tales como Anders Heljsberg, Dave Mendlen, Jason Zander y Scott Guthrie. Todos han formado parte de esta línea de productos durante mucho tiempo. Esperamos que le guste el documental.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;¡Namaste!&lt;/SPAN&gt;&lt;/P&gt;&lt;/DIV&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9901388" width="1" height="1"&gt;</content><author><name>SomaEsp</name><uri>http://blogs.msdn.com/members/SomaEsp.aspx</uri></author><category term="Developer Division" scheme="http://blogs.msdn.com/somaespanol/archive/tags/Developer+Division/default.aspx" /><category term=".NET Framework" scheme="http://blogs.msdn.com/somaespanol/archive/tags/.NET+Framework/default.aspx" /><category term="MSDN" scheme="http://blogs.msdn.com/somaespanol/archive/tags/MSDN/default.aspx" /><category term="Silverlight" scheme="http://blogs.msdn.com/somaespanol/archive/tags/Silverlight/default.aspx" /><category term="Visual Studio" scheme="http://blogs.msdn.com/somaespanol/archive/tags/Visual+Studio/default.aspx" /><category term="Visual Studio Team System" scheme="http://blogs.msdn.com/somaespanol/archive/tags/Visual+Studio+Team+System/default.aspx" /></entry><entry><title>Lanzamiento de WebsiteSpark</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/somaespanol/archive/2009/09/26/lanzamiento-de-websitespark.aspx" /><id>http://blogs.msdn.com/somaespanol/archive/2009/09/26/lanzamiento-de-websitespark.aspx</id><published>2009-09-27T04:56:00Z</published><updated>2009-09-27T04:56:00Z</updated><content type="html">&lt;P&gt;&lt;I&gt;&lt;SPAN&gt;Publicación del &lt;A href="http://blogs.msdn.com/somasegar/archive/2009/09/24/announcing-websitespark.aspx"&gt;&lt;FONT color=#800080&gt;inglés&lt;/FONT&gt;&lt;/A&gt; original: martes, 24 de septiembre de 2009 a las 6:51 PST por &lt;A href="http://blogs.msdn.com/user/Profile.aspx?UserID=3644"&gt;Somasegar&lt;/A&gt;&lt;/SPAN&gt;&lt;/I&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;IMG src="http://kxacog.blu.livefilestore.com/y1p_5vRB3B-Q0m1ppinoHKuMHSW1sBCmQ-PBmRTPv4JwEd4I1ZdFLpb721L0RIsP2ssNSBp1YQk1heBG7QYy4J2Nw/WebsiteSpark.jpg" mce_src="http://kxacog.blu.livefilestore.com/y1p_5vRB3B-Q0m1ppinoHKuMHSW1sBCmQ-PBmRTPv4JwEd4I1ZdFLpb721L0RIsP2ssNSBp1YQk1heBG7QYy4J2Nw/WebsiteSpark.jpg"&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;La web ha cambiado drásticamente la industria del software en los últimos 15 años. Hoy día es difícil imaginar ningún negocio sin la web. Casi todos los negocios han o están creando una presencia en la web para promover o vender sus productos y servicios, encontrar a nuevos clientes o dar soporte a los ya existentes. Al mismo tiempo, la web ha generado un nuevo ecosistema masivo de los profesionales de la web: los desarrolladores y diseñadores que se centran en ayudar a estas empresas a prosperar.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Muchas empresas, sobre todo las empresas pequeñas, se enfrentan al desafío de cómo empezar a construir sus proyectos web. Es por eso que me es grato anunciar la disponibilidad del programa WebsiteSpark, un nuevo programa diseñado para ayudar a impulsar el desarrollo y diseño web para las empresas con hasta diez empleados. Siendo el último producto de la familia 'Spark', que ya incluye BizSpark y DreamSpark, WebsiteSpark se basa en el legado de estos populares programas para proporcionar software, soporte y oportunidades para los profesionales de la web en todo el mundo.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Aunque Microsoft siempre ha alentado a las pequeñas empresas a utilizar nuestras tecnologías, hemos descubierto que hay una brecha de mercado en el área de soporte web a pequeñas empresas de alojamiento y consultoría. Hace unos 5 meses llevamos a cabo una encuesta de más de 200 profesionales de web en plataformas Linux y Windows, y fue evidente esta brecha. Aunque muchas compañías ofrecen programas similares con "software gratis" o "gratis con soporte de la comunidad", descubrimos que lo que estas empresas realmente quieren, y necesitan, es la posibilidad y la red para ayudar a la unidad de negocio de sus empresas. Dado nuestro compromiso con los desarrolladores web que trabajan en todos los tipos de organizaciones, hemos agregado WebsiteSpark a nuestra cartera para ayudar a estas empresas a tener más éxito.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Con WebsiteSpark, las empresas elegibles pueden recibir licencias de diseño y desarrollo y licencias de procesador sin costes iniciales. Además, recibirán apoyo y formación, así como acceso a un mercado amplio que les permita conectarse con clientes potenciales en todo el mundo y cuentan con sus ofertas en vehículos de marketing de Microsoft. El portal de mercado estará disponible este otoño.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;En pocas palabras, el programa WebsiteSpark facilita a las empresas a acceder y construir sobre Microsoft Web Platform, que ofrece los desarrolladores web y diseñadores de todo el mundo un sólido entorno para innovar en la web.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Por ello, junto con el anuncio de hoy del programa WebsiteSpark, también anuncio el lanzamiento de &lt;A href="http://www.microsoft.com/web/downloads/platform.aspx"&gt;&lt;FONT color=#800080&gt;Web Platform Installer 2.0&lt;/FONT&gt;&lt;/A&gt; y de &lt;A href="http://www.microsoft.com/web/gallery"&gt;&lt;FONT color=#800080&gt;Windows Web App Gallery 2.0&lt;/FONT&gt;&lt;/A&gt;.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Esta versión del instalador de Web Platform simplifica la instalación e incluye novedades como IIS Media Services y Windows Azure SDK. Junto con App Gallery, los desarrolladores también pueden tener acceso a docenas de aplicaciones gratuitas y de código abierto listas para instalar para ayudarles a construir sus sitios web. Se encuentran disponibles más de 20 nuevas aplicaciones de Microsoft y la comunidad, incluyendo novedades como Moodle y Sugar CRM junto con otras aplicaciones web populares como WordPress, Drupal, DotNetNuke y muchas más.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Para obtener más información sobre el programa de WebsiteSpark, incluyendo quién es elegible, visite &lt;A href="http://www.microsoft.com/web/websitespark"&gt;&lt;FONT color=#800080&gt;www.microsoft.com/web/websitespark&lt;/FONT&gt;&lt;/A&gt;.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Puede descargar Web Platform Installer 2.0 y Windows Web App Gallery en &lt;A href="http://www.microsoft.com/web"&gt;http://www.microsoft.com/web&lt;/A&gt;.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;¡Namaste!&lt;/SPAN&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9899926" width="1" height="1"&gt;</content><author><name>SomaEsp</name><uri>http://blogs.msdn.com/members/SomaEsp.aspx</uri></author><category term="Developer Division" scheme="http://blogs.msdn.com/somaespanol/archive/tags/Developer+Division/default.aspx" /><category term="Expression" scheme="http://blogs.msdn.com/somaespanol/archive/tags/Expression/default.aspx" /><category term="Visual Studio" scheme="http://blogs.msdn.com/somaespanol/archive/tags/Visual+Studio/default.aspx" /></entry><entry><title>Doloto en DevLabs</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/somaespanol/archive/2009/09/08/doloto-en-devlabs.aspx" /><id>http://blogs.msdn.com/somaespanol/archive/2009/09/08/doloto-en-devlabs.aspx</id><published>2009-09-08T21:20:00Z</published><updated>2009-09-08T21:20:00Z</updated><content type="html">&lt;P&gt;&lt;I&gt;&lt;SPAN&gt;Publicación del &lt;A href="http://blogs.msdn.com/somasegar/archive/2009/09/04/doloto-on-devlabs.aspx"&gt;&lt;FONT color=#800080&gt;inglés original&lt;/FONT&gt;&lt;/A&gt;: viernes, 4 de septiembre a las 10:30 AM PST por &lt;A href="http://blogs.msdn.com/user/Profile.aspx?UserID=3644"&gt;Somasegar&lt;/A&gt;&lt;/SPAN&gt;&lt;/I&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Las aplicaciones web de AJAX tienen una gran variedad de experiencias de usuario enriquecidas en la web, pero a menudo dichas experiencias requieren descargarse una gran cantidad de código. El resultado son aplicaciones muy lentas en descargar y con gran sobrecarga en servidores web.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Hoy anunciamos la disponibilidad de &lt;A href="http://msdn.microsoft.com/en-us/devlabs/ee423534.aspx"&gt;Doloto&lt;/A&gt; (en inglés) en MSDN DevLabs. Doloto es una herramienta que hace que las páginas se descarguen más rápido ya que disminuye el tamaño de descarga inicial de las aplicaciones web de AJAX complejas.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Doloto analiza cargas de trabajo de aplicación de AJAX y divide automáticamente el código de las aplicaciones web que tienen un gran tamaño. Doloto permite que aplicaciones inicialmente transfieran sólo la parte de código de JavaScript de cliente necesaria para la inicialización de la aplicación. El resto del código de la aplicación se reemplaza con código auxiliar corto. Su código de función real se transfiere de forma diferida en segundo plano o tras una petición en la primera ejecución. Puesto que la descarga de código se intercala con la ejecución de la aplicación, los usuarios pueden empezar a interactuar con la aplicación web mucho antes sin esperar a descargar el código que implementa las características que no se están usando en ese momento.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;SPAN&gt;Cómo funciona&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Doloto es una herramienta independiente de cliente. Su asistente le guiará en los tres pasos siguientes:&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;1. Doloto administra el perfil de la aplicación. Doloto realiza la generación de perfiles mediante la ejecución de un proxy local en el equipo que intercepta archivos de JavaScript y los instrumenta para capturar las marcas de tiempo para cada función de JavaScript en tiempo de ejecución independientemente del explorador.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;2. La información de generación de perfiles se utiliza para calcular la cobertura de código y una estrategia de clústeres. Esto determina qué funciones son auxiliares y cuáles no lo son y qué grupos de funciones en distintas secciones se descargan juntos, llamados clústeres.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;3. Doloto vuelve a escribir código de JavaScript. A continuación, lo guarda en el disco para que se pueda cargar en el servidor. Todo el proceso ocurre en el equipo sin necesidad de tener acceso al servidor. De esta forma, puede administrar el perfil y optimizar el código de JavaScript de cualquier sitio de terceros sin tener que tener acceso especial a sus servidores. Una vez que esté satisfecho con los resultados de Doloto, puede implementar los archivos actualizados en el servidor.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;SPAN&gt;Mostrando algunos resultados&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;En nuestros experimentos a través de un número de aplicaciones AJAX y las condiciones de la red, Doloto redujo la cantidad de código de JavaScript descargado en más de un 40%, lo que resulta en un inicio más rápido entre un 30 y un 40%, según las condiciones de la red. El gráfico siguiente muestra el ahorro de la cantidad de código JavaScript descargado de una gama de sitios web populares necesario para la fase de la carga inicial de la aplicación.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;IMG src="http://kxacog.blu.livefilestore.com/y1p5SpV9mgif1dVrgEf30CAoLsT8sOjfzoEgjZDkkRhIKxGdcnt81Vb7jVjQMVsGikG7YJQ8OJGdO7gWTyH8GLWoQ/DolotoSavings.jpg" mce_src="http://kxacog.blu.livefilestore.com/y1p5SpV9mgif1dVrgEf30CAoLsT8sOjfzoEgjZDkkRhIKxGdcnt81Vb7jVjQMVsGikG7YJQ8OJGdO7gWTyH8GLWoQ/DolotoSavings.jpg"&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;A href="http://msdn.microsoft.com/en-us/devlabs/ee423534.aspx"&gt;Pruebe hoy mismo Doloto&lt;/A&gt; (en inglés) y comparta sus ideas y experiencias en el &lt;A href="http://social.msdn.microsoft.com/Forums/en-US/doloto/"&gt;foro del proyecto&lt;/A&gt; (en inglés).&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;¡Namaste!&lt;/SPAN&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9892724" width="1" height="1"&gt;</content><author><name>SomaEsp</name><uri>http://blogs.msdn.com/members/SomaEsp.aspx</uri></author><category term="Developer Division" scheme="http://blogs.msdn.com/somaespanol/archive/tags/Developer+Division/default.aspx" /></entry><entry><title>Herramientas de arquitectura en VSTS 2010</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/somaespanol/archive/2009/09/03/herramientas-de-arquitectura-en-vsts-2010.aspx" /><id>http://blogs.msdn.com/somaespanol/archive/2009/09/03/herramientas-de-arquitectura-en-vsts-2010.aspx</id><published>2009-09-04T00:44:00Z</published><updated>2009-09-04T00:44:00Z</updated><content type="html">&lt;DIV&gt;
&lt;P&gt;&lt;I&gt;&lt;SPAN&gt;Publicación del &lt;A href="http://blogs.msdn.com/somasegar/archive/2009/08/29/architecture-tools-in-vsts-2010.aspx"&gt;inglés original&lt;/A&gt;: sábado, 29 de agosto de 2009 a las 23:43 PST por &lt;A href="http://blogs.msdn.com/user/Profile.aspx?UserID=3644"&gt;Somasegar&lt;/A&gt;&lt;/SPAN&gt;&lt;/I&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Diseñar nueva funcionalidad en aplicaciones existentes puede ser desalentador. Siempre hay diferencias entre el diseño original y la implementación final.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Las nuevas herramientas de arquitectura dentro de Visual Studio Team System 2010 le ayudan a comprender la aplicación que tiene, a diseñar la nueva funcionalidad que necesita y validan que el diseño y la implementación coincidan.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;SPAN&gt;Entendiendo lo que tiene&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Entender las dependencias entre partes de la aplicación puede ser esencial para determinar dónde puede tener problemas. Además, tener un gráfico visual puede ayudarle a encontrar el mejor lugar para implementar la nueva funcionalidad.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Puede obtener una imagen visual de su solución por ensamblado, por espacio de nombres, por clase o a través de filtros personalizados en un documento DGML mediante la característica Generar gráfico de dependencia:&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;IMG src="http://kxacog.blu.livefilestore.com/y1pUm3WeY_eqc4_6IWwsS9XTH4VJoFEjTWbsaimfso1JRsh0sUv1SDb2YlSCPCwWWWvgshJ-nIyR8rJdbeGWqXjSw/GenerateDependencyGraph.jpg" mce_src="http://kxacog.Blu.livefilestore.com/y1pUm3WeY_eqc4_6IWwsS9XTH4VJoFEjTWbsaimfso1JRsh0sUv1SDb2YlSCPCwWWWvgshJ-nIyR8rJdbeGWqXjSw/GenerateDependencyGraph.jpg"&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Puede visualizar el documento DGML generado de su solución como una matriz de dependencias, como un esquema o de arriba a abajo, como se muestra a continuación. Cada vista puede proporcionar una toma diferente en la estructura del proyecto.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;IMG src="http://kxacog.blu.livefilestore.com/y1pv13PlF3K3GhEQgrf80gPdmisSG1urvgEUB6v2SnDHHrnv73iKQyG3AcR7kS4OBh1EUEfyWeYSYbqXCoxc74LCQ/TopToBottomLayout.jpg" mce_src="http://kxacog.Blu.livefilestore.com/y1pv13PlF3K3GhEQgrf80gPdmisSG1urvgEUB6v2SnDHHrnv73iKQyG3AcR7kS4OBh1EUEfyWeYSYbqXCoxc74LCQ/TopToBottomLayout.jpg"&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Esta vista de alto nivel es ideal para comprender la forma general de la arquitectura, pero comprender las dependencias de un área que desea cambiar puede hacer la diferencia entre un cambio de quince minutos y un cambio de una hora. Por ejemplo, poder visualizar las relaciones alrededor de la clase &lt;I&gt;Cart (Carro)&lt;/I&gt; puede ser muy útil para realizar cambios en el carro de la compra:&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;IMG src="http://kxacog.blu.livefilestore.com/y1p2VR5QU7P-ZW7EBdLTOiMHeylDkgyd-9_H_FMFAQrSAzIBLrk_ZjQ9m3SzCiMjDzr78FQeIpIRUgFwHjoedVUoA/CartClass.jpg" mce_src="http://kxacog.Blu.livefilestore.com/y1p2VR5QU7P-ZW7EBdLTOiMHeylDkgyd-9_H_FMFAQrSAzIBLrk_ZjQ9m3SzCiMjDzr78FQeIpIRUgFwHjoedVUoA/CartClass.jpg"&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Otra forma de comprender cómo funciona la aplicación consiste en ser capaz de visualizar la secuencia de llamadas que se producen en secciones claves de la aplicación. Con la función Generar el diagrama de secuencia, disponible en el editor de código, obtendrá una vista de las llamadas a métodos que su aplicación efectúa. A continuación puede ver la secuencia de llamadas que componen la implementación del método &lt;I&gt;Add (agregar)&lt;/I&gt; en el carro de la compra.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;SPAN&gt;Diseñando nueva funcionalidad&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Ahora que tiene un conocimiento más completo de la aplicación existente, está en una mejor posición para agregar funcionalidad. Colaborar en el diseño requiere comunicar de forma estándar. Los diagramas de lenguaje de modelado unificado (UML) le permiten expresar el diseño de forma que otros puedan entender. Por ejemplo, puede crear diagramas UML de componente y clase que describan los elementos estructurales existentes en su diseño, y a continuación agregar nuevos elementos a los diagramas para ilustrar y documentar los cambios. A continuación se muestra el aspecto de un diagrama de componente completo:&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://kxacog.blu.livefilestore.com/y1pdQKHnzeUuZbx7jIKpYNQx4fCLLAfPGtyubnJNJUtOvesvq-mBOM8IyezVFuf--7_SAleLY5gzlG-tnwQfjJV2A/ComponentDiagram.jpg" mce_src="http://kxacog.Blu.livefilestore.com/y1pdQKHnzeUuZbx7jIKpYNQx4fCLLAfPGtyubnJNJUtOvesvq-mBOM8IyezVFuf--7_SAleLY5gzlG-tnwQfjJV2A/ComponentDiagram.jpg"&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Un diagrama de clase tendrá este aspecto:&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://kxacog.blu.livefilestore.com/y1pdht2-hX63rzBDYX9S1HFP_72nW57MCzvZkNaBWwc_3TpFZoGUIzHPzpqzy3Q4_vZj15HvMva6oByhiiUv0bxmA/ClassDiagram.jpg" mce_src="http://kxacog.Blu.livefilestore.com/y1pdht2-hX63rzBDYX9S1HFP_72nW57MCzvZkNaBWwc_3TpFZoGUIzHPzpqzy3Q4_vZj15HvMva6oByhiiUv0bxmA/ClassDiagram.jpg"&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;El siguiente diagrama de caso de uso permite a los equipos a entender y a acordar las funciones de la aplicación.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;IMG src="http://kxacog.blu.livefilestore.com/y1pOXojC5q4QxZU8LA5uwWS5kaRMme_exqHqMQs8rpMgmwl-b50dKK6JpQ17htbOPvd2AMUE0BsocUxpVCmbJWGcw/OrderUseCases.jpg" mce_src="http://kxacog.Blu.livefilestore.com/y1pOXojC5q4QxZU8LA5uwWS5kaRMme_exqHqMQs8rpMgmwl-b50dKK6JpQ17htbOPvd2AMUE0BsocUxpVCmbJWGcw/OrderUseCases.jpg"&gt;&lt;A href="http://kxacog.blu.livefilestore.com/y1pOXojC5q4QxZU8LA5uwWS5kaRMme_exqHqMQs8rpMgmwl-b50dKK6JpQ17htbOPvd2AMUE0BsocUxpVCmbJWGcw/OrderUseCases.jpg"&gt;&lt;/A&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Una vez que tiene un diagrama UML puede crear o vincular elementos diseñadores con elementos en el sistema de seguimiento de elementos de trabajo dentro de Team Foundation Server (TFS).&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;IMG src="http://kxacog.blu.livefilestore.com/y1puedt9TZhOsburFQM4IpZ5JwgwH_fv9GcN_628ErxRHly0NjWtO115jfejRuJ9fR5av4bKJBMBAGP93CxXRT8IA/TFSIntegration.jpg" mce_src="http://kxacog.Blu.livefilestore.com/y1puedt9TZhOsburFQM4IpZ5JwgwH_fv9GcN_628ErxRHly0NjWtO115jfejRuJ9fR5av4bKJBMBAGP93CxXRT8IA/TFSIntegration.jpg"&gt;&lt;A href="http://kxacog.blu.livefilestore.com/y1puedt9TZhOsburFQM4IpZ5JwgwH_fv9GcN_628ErxRHly0NjWtO115jfejRuJ9fR5av4bKJBMBAGP93CxXRT8IA/TFSIntegration.jpg"&gt;&lt;/A&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;SPAN&gt;Garantizar la validación de la aplicación&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;A lo largo del tiempo, la calidad del código de un proyecto puede decaer si no se realizan las correcciones de errores y la implementación de nuevas características con la arquitectura general en mente. Aquí es donde pueden ayudarle el Diseñador de capas y la Validación de capas. El Diseñador de capas le permite definir los niveles lógicos y las rutas de comunicación válidas entre las capas del proyecto. Una vez se han asociado los ensamblados, espacios de nombres y clases con las capas en el diagrama de nivel, puede validar el código nuevo o existente con las restricciones de capas. Por ejemplo, en este diagrama de nivel, es válido para el software dentro del nivel &lt;I&gt;Presentation (presentación) &lt;/I&gt;tener dependencias de software dentro de la capa de &lt;I&gt;la lógica empresarial&lt;/I&gt;. Sin embargo, puesto que no hay una línea de dependencia entre &lt;I&gt;Presentation (presentación)&lt;/I&gt; y&lt;I&gt; Resource Access (acceso de recurso)&lt;/I&gt;, cualquier software que intente tomar esa dependencia provocará una infracción de tiempo de compilación en la lista de errores.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;IMG src="http://kxacog.blu.livefilestore.com/y1pJvK_lJf6u2qQUjy3XCd_mKq8wJuNOur7-imYES8vkkzR07xxh7_ic2V_wyFtWd_kBTwKU6lI2SxFiLLFJ7Npyg/LayerDiagram.jpg" mce_src="http://kxacog.Blu.livefilestore.com/y1pJvK_lJf6u2qQUjy3XCd_mKq8wJuNOur7-imYES8vkkzR07xxh7_ic2V_wyFtWd_kBTwKU6lI2SxFiLLFJ7Npyg/LayerDiagram.jpg"&gt;&lt;A href="http://kxacog.blu.livefilestore.com/y1pJvK_lJf6u2qQUjy3XCd_mKq8wJuNOur7-imYES8vkkzR07xxh7_ic2V_wyFtWd_kBTwKU6lI2SxFiLLFJ7Npyg/LayerDiagram.jpg"&gt;&lt;/A&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Puede validar las restricciones de capa desde la superficie del diseñador, línea de comandos, o desde el proceso de generación. El proceso de protección de Team Build garantiza que las infracciones de restricción de capa nunca pasen al control de código fuente.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Éstas son algunas de las características de las herramientas de arquitectura de Visual Studio Team System 2010. Puede obtener más información acerca de éstas y otras características en el blog de &lt;A href="http://blogs.msdn.com/camerons/"&gt;Cameron Skinner&lt;/A&gt; (en inglés).&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;¡Namaste!&lt;/SPAN&gt;&lt;/P&gt;&lt;/DIV&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9891108" width="1" height="1"&gt;</content><author><name>SomaEsp</name><uri>http://blogs.msdn.com/members/SomaEsp.aspx</uri></author><category term="Developer Division" scheme="http://blogs.msdn.com/somaespanol/archive/tags/Developer+Division/default.aspx" /><category term="Visual Studio Team System" scheme="http://blogs.msdn.com/somaespanol/archive/tags/Visual+Studio+Team+System/default.aspx" /></entry><entry><title>Mejoras de VB y C# en VS 2010</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/somaespanol/archive/2009/08/20/mejoras-de-vb-y-c-en-vs-2010.aspx" /><id>http://blogs.msdn.com/somaespanol/archive/2009/08/20/mejoras-de-vb-y-c-en-vs-2010.aspx</id><published>2009-08-20T20:23:00Z</published><updated>2009-08-20T20:23:00Z</updated><content type="html">&lt;P&gt;&lt;I&gt;&lt;SPAN&gt;Publicación del &lt;A href="http://blogs.msdn.com/somasegar/archive/2009/08/19/vb-and-c-enhancements-in-vs-2010.aspx" mce_href="http://blogs.msdn.com/somasegar/archive/2009/08/19/vb-and-c-enhancements-in-vs-2010.aspx"&gt;inglés original&lt;/A&gt;: miércoles, 19 de agosto a las 22:54 PST por &lt;A href="http://blogs.msdn.com/user/Profile.aspx?UserID=3644" mce_href="http://blogs.msdn.com/user/Profile.aspx?UserID=3644"&gt;Somasegar&lt;/A&gt;&lt;/SPAN&gt;&lt;/I&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;La elección de un lenguaje de programación es una elección personal que cada programador tiene que hacer. Es similar a elegir el sabor de un helado: hay muy buenas elecciones por ahí pero su sabor favorito es una cuestión de preferencias personales.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;En Visual Studio 2010 hemos realizado varias mejoras a nuestros dos lenguajes más populares, Visual Basic y C#, para dar a los programadores todas las herramientas necesarias para construir gran software independientemente del lenguaje que elijan.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;SPAN&gt;Visual Basic&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;El equipo de Visual Basic se ha centrado en agregar características de productividad en el lenguaje para que los programadores puedan hacer más con menos líneas de código. La petición más común de nuestros clientes de Visual Basic ha sido la de quitar el carácter de subrayado ("_") que divide una instrucción de código en varias líneas. Visual Basic 10 presenta la continuación de línea implícita, que elimina la necesidad del carácter de subrayado en la mayoría de los casos.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 80%; FONT-FAMILY: Consolas; COLOR: blue; FONT-SIZE: 9.5pt; mso-bidi-font-weight: bold; mso-fareast-font-family: +mn-ea; mso-bidi-font-family: 'Courier New'; mso-font-kerning: 12.0pt"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: 80%; MARGIN: 0in 0in 0pt; BACKGROUND: #eeece1" class=MsoNormal&gt;&lt;SPAN style="LINE-HEIGHT: 80%; FONT-FAMILY: Consolas; COLOR: blue; FONT-SIZE: 9.5pt; mso-bidi-font-weight: bold; mso-fareast-font-family: +mn-ea; mso-bidi-font-family: 'Courier New'; mso-font-kerning: 12.0pt"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Function &lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 80%; FONT-FAMILY: Consolas; COLOR: black; FONT-SIZE: 9.5pt; mso-bidi-font-weight: bold; mso-fareast-font-family: +mn-ea; mso-bidi-font-family: 'Courier New'; mso-font-kerning: 12.0pt"&gt;Filter(&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 80%; FONT-FAMILY: 'Times New Roman','serif'; FONT-SIZE: 9.5pt; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: 80%; MARGIN: 0in 0in 0pt; BACKGROUND: #eeece1" class=MsoNormal&gt;&lt;SPAN style="LINE-HEIGHT: 80%; FONT-FAMILY: Consolas; COLOR: blue; FONT-SIZE: 9.5pt; mso-bidi-font-weight: bold; mso-fareast-font-family: +mn-ea; mso-bidi-font-family: 'Courier New'; mso-font-kerning: 12.0pt"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;ByVal &lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 80%; FONT-FAMILY: Consolas; COLOR: black; FONT-SIZE: 9.5pt; mso-bidi-font-weight: bold; mso-fareast-font-family: +mn-ea; mso-bidi-font-family: 'Courier New'; mso-font-kerning: 12.0pt"&gt;customers&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 80%; FONT-FAMILY: Consolas; COLOR: blue; FONT-SIZE: 9.5pt; mso-bidi-font-weight: bold; mso-fareast-font-family: +mn-ea; mso-bidi-font-family: 'Courier New'; mso-font-kerning: 12.0pt"&gt; As List&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 80%; FONT-FAMILY: Consolas; COLOR: black; FONT-SIZE: 9.5pt; mso-bidi-font-weight: bold; mso-fareast-font-family: +mn-ea; mso-bidi-font-family: 'Courier New'; mso-font-kerning: 12.0pt"&gt;(&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 80%; FONT-FAMILY: Consolas; COLOR: blue; FONT-SIZE: 9.5pt; mso-bidi-font-weight: bold; mso-fareast-font-family: +mn-ea; mso-bidi-font-family: 'Courier New'; mso-font-kerning: 12.0pt"&gt;Of &lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 80%; FONT-FAMILY: Consolas; COLOR: black; FONT-SIZE: 9.5pt; mso-bidi-font-weight: bold; mso-fareast-font-family: +mn-ea; mso-bidi-font-family: 'Courier New'; mso-font-kerning: 12.0pt"&gt;Customer),&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 80%; FONT-FAMILY: 'Times New Roman','serif'; FONT-SIZE: 9.5pt; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: 80%; MARGIN: 0in 0in 0pt; BACKGROUND: #eeece1" class=MsoNormal&gt;&lt;SPAN style="LINE-HEIGHT: 80%; FONT-FAMILY: Consolas; COLOR: blue; FONT-SIZE: 9.5pt; mso-bidi-font-weight: bold; mso-fareast-font-family: +mn-ea; mso-bidi-font-family: 'Courier New'; mso-font-kerning: 12.0pt"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;ByVal &lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 80%; FONT-FAMILY: Consolas; COLOR: black; FONT-SIZE: 9.5pt; mso-bidi-font-weight: bold; mso-fareast-font-family: +mn-ea; mso-bidi-font-family: 'Courier New'; mso-font-kerning: 12.0pt"&gt;orderCount&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 80%; FONT-FAMILY: Consolas; COLOR: blue; FONT-SIZE: 9.5pt; mso-bidi-font-weight: bold; mso-fareast-font-family: +mn-ea; mso-bidi-font-family: 'Courier New'; mso-font-kerning: 12.0pt"&gt; As Integer&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 80%; FONT-FAMILY: 'Times New Roman','serif'; FONT-SIZE: 9.5pt; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: 80%; MARGIN: 0in 0in 0pt; BACKGROUND: #eeece1" class=MsoNormal&gt;&lt;SPAN style="LINE-HEIGHT: 80%; FONT-FAMILY: Consolas; COLOR: black; FONT-SIZE: 9.5pt; mso-bidi-font-weight: bold; mso-fareast-font-family: +mn-ea; mso-bidi-font-family: 'Courier New'; mso-font-kerning: 12.0pt"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;)&lt;/SPAN&gt;&lt;SPAN style="LINE-HEIGHT: 80%; FONT-FAMILY: 'Times New Roman','serif'; FONT-SIZE: 9.5pt; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; BACKGROUND: #eeece1; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: blue; FONT-SIZE: 9.5pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; BACKGROUND: #eeece1; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: blue; FONT-SIZE: 9.5pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Dim&lt;/SPAN&gt;&lt;FONT color=#000000&gt;&lt;B&gt;&lt;SPAN style="FONT-FAMILY: 'Arial','sans-serif'; FONT-SIZE: 9.5pt; mso-fareast-font-family: 'Times New Roman'"&gt; &lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;query =&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Arial','sans-serif'; FONT-SIZE: 9.5pt; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; BACKGROUND: #eeece1; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;B&gt;&lt;SPAN style="FONT-FAMILY: 'Arial','sans-serif'; FONT-SIZE: 9.5pt; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: blue; FONT-SIZE: 9.5pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;From&lt;/SPAN&gt;&lt;FONT color=#000000&gt;&lt;B&gt;&lt;SPAN style="FONT-FAMILY: 'Arial','sans-serif'; FONT-SIZE: 9.5pt; mso-fareast-font-family: 'Times New Roman'"&gt; &lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;c&lt;/SPAN&gt;&lt;B&gt;&lt;SPAN style="FONT-FAMILY: 'Arial','sans-serif'; FONT-SIZE: 9.5pt; mso-fareast-font-family: 'Times New Roman'"&gt; &lt;/SPAN&gt;&lt;/B&gt;&lt;/FONT&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: blue; FONT-SIZE: 9.5pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;In&lt;/SPAN&gt;&lt;FONT color=#000000&gt;&lt;B&gt;&lt;SPAN style="FONT-FAMILY: 'Arial','sans-serif'; FONT-SIZE: 9.5pt; mso-fareast-font-family: 'Times New Roman'"&gt; &lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;customers&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; BACKGROUND: #eeece1; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;Where&lt;/SPAN&gt;&lt;FONT color=#000000&gt; c.Orders.Count &amp;gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; BACKGROUND: #eeece1; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;FONT color=#000000&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;orderCount&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Arial','sans-serif'; FONT-SIZE: 9.5pt; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; BACKGROUND: #eeece1; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;B&gt;&lt;SPAN style="FONT-FAMILY: 'Arial','sans-serif'; FONT-SIZE: 9.5pt; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: blue; FONT-SIZE: 9.5pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;Select&lt;/SPAN&gt;&lt;FONT color=#000000&gt;&lt;B&gt;&lt;SPAN style="FONT-FAMILY: 'Arial','sans-serif'; FONT-SIZE: 9.5pt; mso-fareast-font-family: 'Times New Roman'"&gt; &lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;c &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;
&lt;P&gt;&lt;SPAN&gt;Otra característica nueva de productividad es las propiedades implementadas automáticamente. Con las propiedades implementadas automáticamente, se pueden reemplazar las líneas repetitivas del código de implementación de la propiedad, con declaraciones de una sola línea. Hasta ahora, las declaraciones de propiedad a menudo tenían este aspecto:&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;Private&lt;/SPAN&gt; _FavoriteFlavor &lt;SPAN style="COLOR: blue"&gt;As&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;String&lt;/SPAN&gt; = &lt;SPAN style="COLOR: #a31515"&gt;"Butter Pecan"&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; BACKGROUND: #eeece1; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; BACKGROUND: #eeece1; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;Property&lt;/SPAN&gt; FavoriteFlavor() &lt;SPAN style="COLOR: blue"&gt;As&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;String&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; BACKGROUND: #eeece1; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;Get&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; BACKGROUND: #eeece1; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;Return&lt;/SPAN&gt; _FavoriteFlavor&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; BACKGROUND: #eeece1; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;End&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;Get&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; BACKGROUND: #eeece1; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;Set&lt;/SPAN&gt;(&lt;SPAN style="COLOR: blue"&gt;ByVal&lt;/SPAN&gt; value &lt;SPAN style="COLOR: blue"&gt;As&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;String&lt;/SPAN&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; BACKGROUND: #eeece1; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;_FavoriteFlavor = value&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; BACKGROUND: #eeece1; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;End&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;Set&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; BACKGROUND: #eeece1; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;End&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;Property&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; BACKGROUND: #eeece1; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: blue; FONT-SIZE: 9.5pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; BACKGROUND: #eeece1; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; COLOR: blue; FONT-SIZE: 9.5pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Private&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt; _FlavorList &lt;SPAN style="COLOR: blue"&gt;As&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;New&lt;/SPAN&gt; List(&lt;SPAN style="COLOR: blue"&gt;Of&lt;/SPAN&gt; Flavor) &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; BACKGROUND: #eeece1; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; BACKGROUND: #eeece1; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;Property&lt;/SPAN&gt; FlavorList() &lt;SPAN style="COLOR: blue"&gt;As&lt;/SPAN&gt; List(&lt;SPAN style="COLOR: blue"&gt;Of&lt;/SPAN&gt; Flavor)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; BACKGROUND: #eeece1; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;Get&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; BACKGROUND: #eeece1; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;Return&lt;/SPAN&gt; _FlavorList&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; BACKGROUND: #eeece1; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;End&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;Get&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; BACKGROUND: #eeece1; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;Set&lt;/SPAN&gt;(&lt;SPAN style="COLOR: blue"&gt;ByVal&lt;/SPAN&gt; value &lt;SPAN style="COLOR: blue"&gt;As&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;String&lt;/SPAN&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; BACKGROUND: #eeece1; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;_FlavorList = value&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; BACKGROUND: #eeece1; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;End&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;Set&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; BACKGROUND: #eeece1; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;End&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;Property&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/SPAN&gt;
&lt;P&gt;&lt;SPAN&gt;Ahora las declaraciones de propiedad se pueden declarar de una manera mucho más sencilla:&lt;/SPAN&gt;&lt;SPAN&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; BACKGROUND: #eeece1; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;Property&lt;/SPAN&gt; FavoriteFlavor &lt;SPAN style="COLOR: blue"&gt;As&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;String&lt;/SPAN&gt; = &lt;SPAN style="COLOR: #a31515"&gt;"Butter Pecan"&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; BACKGROUND: #eeece1; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;Property&lt;/SPAN&gt; FlavorList &lt;SPAN style="COLOR: blue"&gt;As&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;New&lt;/SPAN&gt; List(&lt;SPAN style="COLOR: blue"&gt;Of&lt;/SPAN&gt; Flavor) &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;
&lt;P&gt;&lt;SPAN&gt;Los inicializadores de colección y literales de matriz son también más simples. Ahora se pueden inicializar colecciones cuando se están declarando y el tipo de literales de matriz lo infiere el compilador.&lt;/SPAN&gt;&lt;SPAN&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; BACKGROUND: #eeece1; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;Dim&lt;/SPAN&gt; toppings = &lt;SPAN style="COLOR: blue"&gt;New&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;List&lt;/SPAN&gt;(&lt;SPAN style="COLOR: blue"&gt;Of&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;String&lt;/SPAN&gt;) &lt;SPAN style="COLOR: blue"&gt;From&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; BACKGROUND: #eeece1; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; BACKGROUND: #eeece1; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;"sprinkles"&lt;/SPAN&gt;,&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; BACKGROUND: #eeece1; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;"chocolate chips"&lt;/SPAN&gt;,&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; BACKGROUND: #eeece1; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;"strawberries"&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; BACKGROUND: #eeece1; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; BACKGROUND: #eeece1; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;Dim&lt;/SPAN&gt; cones = {&lt;SPAN style="COLOR: #a31515"&gt;"sugar cone"&lt;/SPAN&gt;, &lt;SPAN style="COLOR: #a31515"&gt;"waffle cone"&lt;/SPAN&gt;} &lt;SPAN style="COLOR: green"&gt;'the type String() is inferred&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;
&lt;P&gt;&lt;SPAN&gt;Visual Basic 10.0 ahora tiene mejor soporte para funciones lambdas. Las funciones lambdas ahora pueden contener expresiones que no devuelvan un valor, como la palabra clave Sub indica a continuación:&lt;/SPAN&gt;&lt;/P&gt;&lt;SPAN&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; BACKGROUND: #eeece1; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #2b91af"&gt;Array&lt;/SPAN&gt;.ForEach(toppings, &lt;SPAN style="COLOR: blue"&gt;Sub&lt;/SPAN&gt;(n) &lt;SPAN style="COLOR: #2b91af"&gt;Console&lt;/SPAN&gt;.WriteLine(n))&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;
&lt;P&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;A veces, le gustaría poder hacer algo más complejo dentro de una declaración lambda. Visual Basic 10.0 admite lambdas multilínea. El compilador infiere el parámetro y devuelve los tipos donde sea posible al igual que en lambdas regulares.&lt;/SPAN&gt;&lt;SPAN&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; BACKGROUND: #eeece1; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;Dim&lt;/SPAN&gt; doubleDown = &lt;SPAN style="COLOR: blue"&gt;Function&lt;/SPAN&gt;(n &lt;SPAN style="COLOR: blue"&gt;As&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;String&lt;/SPAN&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; BACKGROUND: #eeece1; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;If&lt;/SPAN&gt; n.StartsWith(&lt;SPAN style="COLOR: #a31515"&gt;"s"&lt;/SPAN&gt;) &lt;SPAN style="COLOR: blue"&gt;Then&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; BACKGROUND: #eeece1; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;Return&lt;/SPAN&gt; &lt;SPAN style="COLOR: #a31515"&gt;"extra "&lt;/SPAN&gt; &amp;amp; n&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; BACKGROUND: #eeece1; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;Else&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; BACKGROUND: #eeece1; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;Return&lt;/SPAN&gt; n&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; BACKGROUND: #eeece1; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;End If&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; BACKGROUND: #eeece1; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;End&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;Function&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; BACKGROUND: #eeece1; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/SPAN&gt;
&lt;P&gt;&lt;SPAN&gt;La interoperación con código de lenguaje dinámico como Python y Ruby se ha vuelto más sencilla en Visual Basic 10.0. Por ejemplo, el fragmento de código siguiente llama a un método definido en una biblioteca de Python "math.py":&lt;/SPAN&gt;&lt;SPAN&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; BACKGROUND: #eeece1; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;Dim&lt;/SPAN&gt; mathLib &lt;SPAN style="COLOR: blue"&gt;As&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;Object&lt;/SPAN&gt; = python.UseFile(&lt;SPAN style="COLOR: #a31515"&gt;"math.py"&lt;/SPAN&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; BACKGROUND: #eeece1; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;Dim&lt;/SPAN&gt; firstNumber = 44.2&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; BACKGROUND: #eeece1; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;Dim&lt;/SPAN&gt; secondNumber = 9.5&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; BACKGROUND: #eeece1; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;mathLib.PowerOf(firstNumber, secondNumber)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;
&lt;P&gt;&lt;/SPAN&gt;&lt;B&gt;&lt;SPAN&gt;C#&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Las principales mejoras de C# 4.0 son la interoperabilidad con paradigmas de programación dinámica y la mejora de la programación en Office. La búsqueda dinámica, una nueva característica de C# 4.0, le permite utilizar y manipular un objeto desde IronPython, IronRuby, JScript, HTML DOM o una biblioteca estándar de .NET de la misma manera, independientemente de donde proceda. &lt;/SPAN&gt;Otras mejoras del lenguaje como nombre y parámetros opcionales y compatibilidad mejorada para los clientes COM proporcionan a los programadores de C# que trabajan con la API de Office, la misma gran experiencia que han disfrutado los desarrolladores de Visual Basic.&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Agregar la nueva palabra clave dinámica a su código le permite que su tipo se resuelva dinámicamente en tiempo de ejecución, en lugar de forma estática en tiempo de compilación. Esto le permite que los lenguajes dinámicos expongan sus objetos a C# de manera natural para un programador de C#:&lt;/SPAN&gt;&lt;SPAN&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; BACKGROUND: #eeece1; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;dynamic&lt;/SPAN&gt; dynamicObject = GetDynamicObjectFromRuby();&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; BACKGROUND: #eeece1; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;dynamicObject.Foo(7);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; BACKGROUND: #eeece1; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;dynamicObject.Property = &lt;SPAN style="COLOR: #a31515"&gt;"Property value"&lt;/SPAN&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; BACKGROUND: #eeece1; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;dynamicObject[0] = &lt;SPAN style="COLOR: #a31515"&gt;"Indexed value"&lt;/SPAN&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;
&lt;P&gt;&lt;SPAN&gt;Los parámetros del método opcional son familiares para los programadores de Visual Basic y C++ y ahora están disponibles para los programadores de C#. Los parámetros opcionales se declaran con un valor predeterminado en la firma de método, tal y como sigue:&lt;/SPAN&gt;&lt;SPAN&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; BACKGROUND: #eeece1; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;private&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;void&lt;/SPAN&gt; CreateNewStudent(&lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt; name, &lt;SPAN style="COLOR: blue"&gt;int&lt;/SPAN&gt; currentCredits = 0, &lt;SPAN style="COLOR: blue"&gt;int&lt;/SPAN&gt; year = 1)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;El método anterior puede llamarse de cualquiera de las maneras siguientes:&lt;/SPAN&gt;&lt;/P&gt;&lt;SPAN&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; BACKGROUND: #eeece1; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;CreateNewStudent(&lt;SPAN style="COLOR: #a31515"&gt;"Chloe"&lt;/SPAN&gt;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; BACKGROUND: #eeece1; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;CreateNewStudent(&lt;SPAN style="COLOR: #a31515"&gt;"Zoe"&lt;/SPAN&gt;, 16);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; BACKGROUND: #eeece1; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;CreateNewStudent(&lt;SPAN style="COLOR: #a31515"&gt;"Joey"&lt;/SPAN&gt;, 40, 2);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;Para omitir el valor del parámetro currentCredits pero especificar el parámetro de año, se puede utilizar la nueva característica de argumentos con nombre (resaltada). Todas las condiciones siguientes son también llamadas válidas:&lt;/SPAN&gt;&lt;/P&gt;&lt;SPAN&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; BACKGROUND: #eeece1; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;CreateNewStudent(&lt;SPAN style="COLOR: #a31515"&gt;"Jill"&lt;/SPAN&gt;, &lt;SPAN style="BACKGROUND: yellow; mso-highlight: yellow"&gt;year:&lt;/SPAN&gt; 2);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; BACKGROUND: #eeece1; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;CreateNewStudent(&lt;SPAN style="BACKGROUND: yellow; mso-highlight: yellow"&gt;name:&lt;/SPAN&gt; &lt;SPAN style="COLOR: #a31515"&gt;"Bill"&lt;/SPAN&gt;, &lt;SPAN style="BACKGROUND: yellow; mso-highlight: yellow"&gt;currentCredits:&lt;/SPAN&gt; 30, &lt;SPAN style="BACKGROUND: yellow; mso-highlight: yellow"&gt;year:&lt;/SPAN&gt; 2);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; BACKGROUND: #eeece1; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: Consolas; FONT-SIZE: 9.5pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;CreateNewStudent(&lt;SPAN style="COLOR: #a31515"&gt;"Will"&lt;/SPAN&gt;, &lt;SPAN style="BACKGROUND: yellow; mso-highlight: yellow"&gt;currentCredits:&lt;/SPAN&gt; 4);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; mso-layout-grid-align: none" class=MsoNormal&gt;&lt;SPAN&gt;Los argumentos con nombre también son una excelente forma de escribir llamadas autoexplicativas a los métodos existentes, incluso si no utilizan parámetros opcionales.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;SPAN&gt;Obtenga más información&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Conozca más acerca de las mejoras de los lenguajes de Visual Studio 2010 y descargue ejemplos en el &lt;A href="http://code.msdn.microsoft.com/vbfuture" mce_href="http://code.msdn.microsoft.com/vbfuture"&gt;sitio del futuro de VB&lt;/A&gt; (en inglés) y en el &lt;A href="http://code.msdn.microsoft.com/csharpfuture" mce_href="http://code.msdn.microsoft.com/csharpfuture"&gt;sitio del futuro de C#&lt;/A&gt; (en inglés). Para jugar con las nuevas características, &lt;A href="http://www.microsoft.com/visualstudio/en-us/products/2010/default.mspx" mce_href="http://www.microsoft.com/visualstudio/en-us/products/2010/default.mspx"&gt;descargue&lt;/A&gt; (en inglés) e instale Visual Studio Beta 1 y &lt;A href="http://social.msdn.microsoft.com/Forums/en-US/categories" mce_href="http://social.msdn.microsoft.com/Forums/en-US/categories"&gt;únase a la conversación&lt;/A&gt; (en inglés).&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;¡Namaste!&lt;/SPAN&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9877282" width="1" height="1"&gt;</content><author><name>SomaEsp</name><uri>http://blogs.msdn.com/members/SomaEsp.aspx</uri></author><category term="Developer Division" scheme="http://blogs.msdn.com/somaespanol/archive/tags/Developer+Division/default.aspx" /><category term=".NET Framework" scheme="http://blogs.msdn.com/somaespanol/archive/tags/.NET+Framework/default.aspx" /><category term="Visual Studio" scheme="http://blogs.msdn.com/somaespanol/archive/tags/Visual+Studio/default.aspx" /></entry><entry><title>Depuración, generación de perfiles y análisis de aplicaciones paralelas</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/somaespanol/archive/2009/08/17/depuraci-n-generaci-n-de-perfiles-y-an-lisis-de-aplicaciones-paralelas.aspx" /><id>http://blogs.msdn.com/somaespanol/archive/2009/08/17/depuraci-n-generaci-n-de-perfiles-y-an-lisis-de-aplicaciones-paralelas.aspx</id><published>2009-08-17T19:44:00Z</published><updated>2009-08-17T19:44:00Z</updated><content type="html">&lt;DIV&gt;
&lt;P&gt;&lt;I&gt;&lt;SPAN&gt;Publicación del &lt;A href="http://blogs.msdn.com/somasegar/archive/2009/08/07/debugging-profiling-and-analyzing-parallel-applications.aspx"&gt;inglés original&lt;/A&gt;: viernes, 7 de agosto de 2009 a las 11:46 PM PST por &lt;A href="http://blogs.msdn.com/user/Profile.aspx?UserID=3644"&gt;Somasegar&lt;/A&gt;&lt;/SPAN&gt;&lt;/I&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Cuando se introduce un modelo de programación, los desarrolladores necesitan soporte de herramientas sólidas para aprenderlo, escribir, depurar y optimizar su código para hacer uso de él. Esto es especialmente cierto para la programación paralela, que agrega un conjunto de nuevas variables a la ecuación.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Visual Studio 2010 ha realizado grandes progresos en la experiencia de depuración paralela. Muchas características también están disponibles como complementos para Visual Studio 2008. Aquí tiene un breve paseo por la programación paralela, su depuración y las características de diagnóstico disponibles en Visual Studio 2008 y en Visual Studio 2010.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;SPAN&gt;Depuración&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Aunque Visual Studio 2005 tenía un depurador integrado simple para programas MPI, no se proporcionó una completa experiencia “F5”. El &lt;A href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;amp;FamilyID=d3993532-bdf8-4024-b164-db2ee8a851f5"&gt;nuevo complemento de de Visual Studio 2008&lt;/A&gt; (en inglés), que también está integrado en Visual Studio 2010, permite seleccionar un nodo principal del clúster, cuántos núcleos desea, y presionar F5 para depurar el programa MPI.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;IMG src="http://0ebx5a.blu.livefilestore.com/y1pSNskIHTfrl6nGz1yd6M6w_RBur-HjIVp5KL00WPysM_FcBsFYWMVzQBTqpRYxJ1etXHavAGNaUriC2KinikRpQ/DebuggerSmall.jpg" mce_src="http://0ebx5a.Blu.livefilestore.com/y1pSNskIHTfrl6nGz1yd6M6w_RBur-HjIVp5KL00WPysM_FcBsFYWMVzQBTqpRYxJ1etXHavAGNaUriC2KinikRpQ/DebuggerSmall.jpg"&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Junto con el gran trabajo que ha realizado el equipo del depurador, Allinea, líder en tecnologías de depuración paralela, ha adaptado su entorno a Visual Studio. &lt;A href="http://www.allinea.com/?page=86"&gt;El complemento Allinea&lt;/A&gt; (en inglés) permite la depuración de MPI específicas aún más eficaz, incluido el rango basado en cambio de contexto, paso group-wise, pausa y ejecución, vista de la pila de ejecución paralela y laminación. A continuación puede ver el entorno de depuración de MPI ’s Allinea:&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;IMG src="http://0ebx5a.blu.livefilestore.com/y1pjLLjpgQUcIlDONSc7kQS3RwXgiiP-rFUpKpj8rA3PgSNNfZOyBVaYyhpqM71DRsmy59ah33xAMY6l3cN8pRiNg/AllineaSmall.jpg" mce_src="http://0ebx5a.Blu.livefilestore.com/y1pjLLjpgQUcIlDONSc7kQS3RwXgiiP-rFUpKpj8rA3PgSNNfZOyBVaYyhpqM71DRsmy59ah33xAMY6l3cN8pRiNg/AllineaSmall.jpg"&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;SPAN&gt;Depuración de Arquitectura orientada a servicios (Service Oriented Architecture - SOA)&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Uno de los nuevos modelos de programación introducidos en Windows HPC Server 2008 fue SOA en clúster, basada en WCF con la programación avanzada y equilibrio de carga proporcionado por el scheduler/broker de HPC. Hasta ahora, la depuración de SOA en clúster estaba limitada al estilo de depuración básico de WCF y .NET sin integración de clúster. En Visual Studio. 2010, un complemento para clústeres SOA activa la ficha Configuración de SOA, lo que permite elegir un nodo principal, nodos de depuración y servicios, implementar las bibliotecas de tiempo de ejecución y limpieza automática. Aquí se puede ver el nuevo depurador SOA en Visual Studio 2010:&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;IMG src="http://0ebx5a.blu.livefilestore.com/y1pJbbd9zpyLRxhW-V2ejZqsNMn7YnjwFpF9wEhCHahoKHQo2E9jtRiiDz8SZL7RooIZKKV2i69--YixGOcgbRGXw/SOASettingsSmall.jpg" mce_src="http://0ebx5a.Blu.livefilestore.com/y1pJbbd9zpyLRxhW-V2ejZqsNMn7YnjwFpF9wEhCHahoKHQo2E9jtRiiDz8SZL7RooIZKKV2i69--YixGOcgbRGXw/SOASettingsSmall.jpg"&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;SPAN&gt;Generación de perfiles&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Los perfiles integrados compatibles con MPI no estaban disponibles en Windows Server HPC 1.0. Con Windows HPC Server 2008, herramientas como XPerf han habilitado perfiles de MPI, así como generación de perfiles y solución de problemas a nivel de sistema. Pero incluso XPerf no sabía mucho sobre los detalles del tráfico de mensajes MPI y no existían visores de tráfico de mensajes. Desde entonces, &lt;A href="http://www.vampir.eu/download/index.html"&gt;Vampir&lt;/A&gt; (en inglés), el Visor de tráfico de mensajes MPI principal, se ha trasladado a Windows y está totalmente integrado con ETW. Vampir permite solucionar problemas de orden de mensaje y retrasos. Diversas herramientas HPC de código abierto están disponibles, como &lt;A href="http://www.mcs.anl.gov/research/projects/perfvis/download/index.htm"&gt;JumpShot&lt;/A&gt; (en inglés), un visor gratuito de mensaje MPI basado en Java.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;A menudo, el generador de perfiles integrado en VS puede ofrecer una perspectiva de los problemas de rendimiento. En Visual Studio. 2010, esta capacidad se ha integrado completamente con el programador de trabajo HPC para ayudar a analizar el comportamiento de un rango o nodo determinado de MPI. El Analizador de Visual Studio MPI muestra información de perfil a nivel de línea, incluida una vista de temperatura de ejecución, side-by-side con vista de origen:&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;IMG src="http://0ebx5a.blu.livefilestore.com/y1pwTb_4h08Zb--QOjU3IdWgJKn3uH8Ylw_lSPb9deB4mnetV3wIiZCMrjrNa02K9Fa4vnfB05db_J8ANIW35mEUg/ComputeSmall.jpg" mce_src="http://0ebx5a.Blu.livefilestore.com/y1pwTb_4h08Zb--QOjU3IdWgJKn3uH8Ylw_lSPb9deB4mnetV3wIiZCMrjrNa02K9Fa4vnfB05db_J8ANIW35mEUg/ComputeSmall.jpg"&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;El generador de perfiles también muestra un informe comparativo entre varias ejecuciones para que pueda ver fácilmente el efecto de sus cambios.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;IMG src="http://0ebx5a.blu.livefilestore.com/y1pvFd_VcEZ2OpTGTx76NY82OqNn5O6wq5Ex9JkQ7bNTf6ngkWlSxMbyYd-M6KofNEkX87XIMQkym0Ca-iWxvarWg/ComputeReportSmall.jpg" mce_src="http://0ebx5a.Blu.livefilestore.com/y1pvFd_VcEZ2OpTGTx76NY82OqNn5O6wq5Ex9JkQ7bNTf6ngkWlSxMbyYd-M6KofNEkX87XIMQkym0Ca-iWxvarWg/ComputeReportSmall.jpg"&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;SPAN&gt;Análisis del tiempo de ejecución MPI&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;A veces más allá de los depuradores y generadores de perfiles, necesita herramientas de análisis especializado para ayudarle con las complejidades de programas paralelos de gran escala. HLRS/ZIH en Stuttgart, un instituto líder en Alemania, ha trasladado &lt;A href="http://www.hlrs.de/organization/av/amt/research/marmot/"&gt;Marmot&lt;/A&gt; (en inglés), su herramienta de análisis MPI dedicado, a Visual Studio 2008. Marmot puede utilizarse para comprobar la validez de parámetros pasados a llamadas MPI y detectar interbloqueos y administración incorrecta de los recursos. A continuación puede ver Marmot en acción:&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;IMG src="http://0ebx5a.blu.livefilestore.com/y1p1jJ_X6V5YqzwWNSzMKDx-IlMDexkGJl80I0xjHomJjjK-5Enh0zy0qK9EDNOaWhebYYT-SY7Sjj_FRHq3IJmNg/MarmotSmall.jpg" mce_src="http://0ebx5a.Blu.livefilestore.com/y1p1jJ_X6V5YqzwWNSzMKDx-IlMDexkGJl80I0xjHomJjjK-5Enh0zy0qK9EDNOaWhebYYT-SY7Sjj_FRHq3IJmNg/MarmotSmall.jpg"&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;SPAN&gt;De Printf a creación de perfiles integrados y depuración&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;En un mundo donde depuración estilo printf era lo normal no hace mucho tiempo, lo último en herramientas de depuración y generación de perfiles han dado un paso importante hacia delante.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;En Visual Studio, puede depurar y generar perfiles para código nativo así como aplicaciones de MPI y SOA de clúster de alto rendimiento que escalan desde cientos a miles de núcleos. Para obtener una vista realmente holística de la aplicación en el contexto de todo el sistema se pueden utilizar XPerf y ETW. También puede utilizar eficazmente las nuevas herramientas de generación de perfiles y depuración de varios núcleos que se han introducido en Visual Studio 2010 en un clúster de nivel de nodo.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Visual Studio se está convirtiendo en un entorno enriquecido y productivo para escribir programas paralelos de todo tipos. Para obtener más información acerca de modelos de programación de HPC de Windows, visite el &lt;A href="http://www.microsoft.com/hpc/dev"&gt;Centro de recursos de desarrolladores de Windows HPC Server&lt;/A&gt; (en inglés). Puede encontrar un conjunto de ejemplos que utilizan distintos modelos de programación paralelas en el sitio de CodePlex &lt;A href="http://paralleldwarfs.codeplex.com/"&gt;Parallel Dwarfs&lt;/A&gt; (en inglés).&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;¡Namaste!&lt;/SPAN&gt;&lt;/P&gt;&lt;/DIV&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9872492" width="1" height="1"&gt;</content><author><name>SomaEsp</name><uri>http://blogs.msdn.com/members/SomaEsp.aspx</uri></author><category term="Developer Division" scheme="http://blogs.msdn.com/somaespanol/archive/tags/Developer+Division/default.aspx" /><category term=".NET Framework" scheme="http://blogs.msdn.com/somaespanol/archive/tags/.NET+Framework/default.aspx" /><category term="Visual Studio" scheme="http://blogs.msdn.com/somaespanol/archive/tags/Visual+Studio/default.aspx" /></entry></feed>