<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-4773349175418023585</id><updated>2011-11-28T01:39:31.009+01:00</updated><category term='Baleares on .Net'/><category term='Herramientas'/><category term='Dublin'/><category term='NUG'/><category term='AJAX'/><category term='Azure'/><category term='Orcas'/><category term='3.5'/><category term='Mesh'/><category term='Oslo'/><category term='WCF'/><category term='Trucos'/><category term='INETA'/><category term='Sharepoint'/><category term='FxCop'/><category term='Eventos'/><category term='parallel'/><category term='MSSql'/><category term='Usabilidad'/><category term='ADO.NET Data Services'/><category term='WPF'/><category term='WinForms'/><category term='Cloud'/><category term='VS.Net'/><category term='Silverlight'/><title type='text'>I Remote</title><subtitle type='html'>Otro blog sobre C#</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://iremote.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4773349175418023585/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://iremote.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>jmservera</name><uri>http://www.blogger.com/profile/17142856972629218862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>68</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4773349175418023585.post-4830730544268823394</id><published>2011-01-08T21:07:00.002+01:00</published><updated>2011-01-08T21:16:44.397+01:00</updated><title type='text'>Mudanza</title><content type='html'>Me he mudado a WordPress a la dirección &lt;a href="http://jmservera.wordpress.com"&gt;http://jmservera.wordpress.com&lt;/a&gt; así que no seguiré escribiendo en este. He copiado allí todos mis artículos y en unos meses daré de baja I Remote para siempre.&lt;div&gt;Seguiré hablando de temas de programación en el mundo del .Net Framework, ahora enfocado más a Surface, WP7 y Azure.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;div&gt;Nos leemos en WordPress.com!&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4773349175418023585-4830730544268823394?l=iremote.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iremote.blogspot.com/feeds/4830730544268823394/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4773349175418023585&amp;postID=4830730544268823394' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4773349175418023585/posts/default/4830730544268823394'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4773349175418023585/posts/default/4830730544268823394'/><link rel='alternate' type='text/html' href='http://iremote.blogspot.com/2011/01/mudanza.html' title='Mudanza'/><author><name>jmservera</name><uri>http://www.blogger.com/profile/17142856972629218862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4773349175418023585.post-6529756287029848804</id><published>2010-10-11T12:10:00.005+02:00</published><updated>2010-10-11T13:05:40.521+02:00</updated><title type='text'>StackOverflow, ¿para cuándo uno en castellano?</title><content type='html'>&lt;div&gt;&lt;a href="http://stackoverflow.com/"&gt;StackOverflow.com&lt;/a&gt; es una web colaborativa de preguntas y respuestas sobre programación. Creada por el equipo de &lt;a href="http://joelonsoftware.com/"&gt;Joel Spolsky&lt;/a&gt;, empezó como un experimento y hoy en día ya se ha convertido en un punto de referencia para desarrolladores de todo el mundo.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Hace unos meses crearon un sitio (&lt;a href="http://area51.stackexchange.com/"&gt;area51&lt;/a&gt;) donde proponer nuevas aplicaciones para el motor Stack Exchange, el usado en StackOverflow.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Crear un sitio es gratuito y el único requisito es que haya una comunidad lo suficientemente grande y activa. Hay ya más de 1000 propuestas, de las más variopintas, entre ellas una propuesta de crear un &lt;a href="http://area51.stackexchange.com/proposals/13664/desarrollo-de-software-en-espanol"&gt;foro de programación en castellano&lt;/a&gt;, pero aún está en fase de definición.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;¿&lt;a href="http://area51.stackexchange.com/proposals/13664/desarrollo-de-software-en-espanol"&gt;Alguien se apunta&lt;/a&gt;?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Si aún no conocéis &lt;a href="http://stackoverflow.com/"&gt;StackOverflow.com&lt;/a&gt; os animo a visitar el sitio y participar.&lt;/div&gt;&lt;div&gt;Para más referencias podéis ver el &lt;a href="http://channel9.msdn.com/blogs/glucose/hanselminutes-on-9-social-networking-for-developers-part-1-every-developer-needs-a-blog"&gt;vídeo (en inglés) de Scott Hanselman&lt;/a&gt; en el que habla sobre StackOverflow y otras cosas interesantes.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4773349175418023585-6529756287029848804?l=iremote.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iremote.blogspot.com/feeds/6529756287029848804/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4773349175418023585&amp;postID=6529756287029848804' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4773349175418023585/posts/default/6529756287029848804'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4773349175418023585/posts/default/6529756287029848804'/><link rel='alternate' type='text/html' href='http://iremote.blogspot.com/2010/10/stackoverflow-para-cuando-uno-en.html' title='StackOverflow, ¿para cuándo uno en castellano?'/><author><name>jmservera</name><uri>http://www.blogger.com/profile/17142856972629218862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4773349175418023585.post-6675625611963143987</id><published>2010-04-27T17:01:00.003+02:00</published><updated>2010-04-27T17:08:15.804+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ADO.NET Data Services'/><title type='text'>Código fuente de la OData Client Library</title><content type='html'>Para ayudar a la comunidad a crear sus propias librerías cliente de &lt;a href="http://www.odata.org"&gt;OData&lt;/a&gt;, el equipo de &lt;a href="http://blogs.msdn.com/astoriateam/"&gt;Project Astoria&lt;/a&gt; ha publicado sus librerías de cliente .Net y Silverlight en &lt;a href="http://odata.codeplex.com"&gt;codeplex&lt;/a&gt; bajo licencia Apache 2.0.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4773349175418023585-6675625611963143987?l=iremote.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iremote.blogspot.com/feeds/6675625611963143987/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4773349175418023585&amp;postID=6675625611963143987' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4773349175418023585/posts/default/6675625611963143987'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4773349175418023585/posts/default/6675625611963143987'/><link rel='alternate' type='text/html' href='http://iremote.blogspot.com/2010/04/codigo-fuente-de-la-odata-client.html' title='Código fuente de la OData Client Library'/><author><name>jmservera</name><uri>http://www.blogger.com/profile/17142856972629218862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4773349175418023585.post-9033333481315678299</id><published>2010-04-23T23:57:00.006+02:00</published><updated>2010-04-24T01:16:33.486+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Herramientas'/><title type='text'>Enterprise Library 5.0 publicada</title><content type='html'>Microsoft patterns &amp;amp; practices ha &lt;a href="http://msdn.microsoft.com/en-us/library/ff632023.aspx"&gt;publicado&lt;/a&gt; la nueva &lt;a href="http://entlib.codeplex.com/"&gt;Enterprise Library 5.0&lt;/a&gt;, una colección de módulos que se pueden usar a modo de bloques prefabricados y configurables para construir grandes aplicaciones. &lt;div&gt;Como desde su &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=0325B97A-9534-4349-8038-D56B38EC394C&amp;amp;displaylang=en"&gt;primera versión&lt;/a&gt;, incluyen el código fuente como ejemplo de buenas prácticas y también para posibilitar modificaciones que no sean posibles a través de su extenso sistema de configuración.&lt;/div&gt;&lt;div&gt;Al ser un sistema modular no hace falta distribuir toda la librería entera con nuestra aplicación, sino que usaremos sólo los bloques que nos convengan. Para los que aún no sepáis qué es, la colección entera incluye:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Caching Application Block&lt;/b&gt;: para almacenar datos temporalmente, tanto en memoria como en un almacen de datos intermedio.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Cryptography Application Block&lt;/b&gt;: para incorporar fácilmente hashing y encriptación simétrica a nuestras aplicaciones.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Data Access Application Block&lt;/b&gt;: simplifica el acceso a datos, normalmente basado en ADO.Net y DataSets, independizando la capa de acceso a datos del motor.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Exception Handling Application Block&lt;/b&gt;: para definir estrategias comunes de manejo de excepciones y errores a todos los niveles de las capas de la aplicación&lt;/li&gt;&lt;li&gt;&lt;b&gt;Logging Application Block&lt;/b&gt;: los desarrolladores pueden incluir el registro de mensajes sobre un amplio abanico de fuentes de manera simple y sencilla.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Policy Injection Application Block&lt;/b&gt;: usando los mecanismos de inyección de Unity se pueden implementar políticas de captura de mensajes para canalizar la implementación de partes comunes como el manejo de excepciones o el caching.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Security Application Block&lt;/b&gt;: para incorporar autorización y funcionalidades de caché de seguridad en las aplicaciones.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Unity Application Block&lt;/b&gt;: un contenedor de inyección de dependencias, para que podamos crear aplicaciones fácilmente extensibles&lt;/li&gt;&lt;li&gt;&lt;b&gt;Validation Application Block&lt;/b&gt;: permite crear reglas de validación para objetos que puedan ser usadas en otras capas de la aplicación.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4773349175418023585-9033333481315678299?l=iremote.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iremote.blogspot.com/feeds/9033333481315678299/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4773349175418023585&amp;postID=9033333481315678299' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4773349175418023585/posts/default/9033333481315678299'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4773349175418023585/posts/default/9033333481315678299'/><link rel='alternate' type='text/html' href='http://iremote.blogspot.com/2010/04/microsoft-patterns-practices-ha.html' title='Enterprise Library 5.0 publicada'/><author><name>jmservera</name><uri>http://www.blogger.com/profile/17142856972629218862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4773349175418023585.post-7618767505355165483</id><published>2009-07-23T09:34:00.007+02:00</published><updated>2010-04-24T00:49:56.114+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WPF'/><category scheme='http://www.blogger.com/atom/ns#' term='Cloud'/><category scheme='http://www.blogger.com/atom/ns#' term='Azure'/><title type='text'>Wikipedia Explorer ahora sobre Azure</title><content type='html'>&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.dotnetsolutions.ltd.uk/"&gt;DotNet Solutions&lt;/a&gt; ha actualizado su &lt;a href="http://www.dotnetsolutions.ltd.uk/evidence/wikiexplorer/"&gt;Wikipedia Explorer&lt;/a&gt; que ahora utiliza la tecnología de Windows Azure para convertir la base de datos de la &lt;a href="http://wikipedia.org/"&gt;Wikipedia&lt;/a&gt; a formato XML/XAML y así acelerar la aplicación que antes convertía los datos al vuelo.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;b&gt;Wikipedia Explorer&lt;/b&gt; es una aplicación WPF que proporciona una nueva forma de navegar por la wikipedia, visualizando las relaciones entre documentos.&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.dotnetsolutions.co.uk/assets/images/screenshots/we2.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://www.dotnetsolutions.co.uk/assets/images/screenshots/we2.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;Gracias a la plataforma Windows Azure han podido reducir el tiempo de proceso para la conversión de la base de datos de 6 meses a 5 días.&lt;/div&gt;&lt;div style="text-align: left;"&gt;La aplicación está disponible en modo ClickOnce &lt;a href="http://wikipediaexplorer.blob.core.windows.net/wpf/WikipediaExplorer/publish.htm"&gt;aquí&lt;/a&gt;.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4773349175418023585-7618767505355165483?l=iremote.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iremote.blogspot.com/feeds/7618767505355165483/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4773349175418023585&amp;postID=7618767505355165483' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4773349175418023585/posts/default/7618767505355165483'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4773349175418023585/posts/default/7618767505355165483'/><link rel='alternate' type='text/html' href='http://iremote.blogspot.com/2009/07/wikipedia-explorer-sobre-azure.html' title='Wikipedia Explorer ahora sobre Azure'/><author><name>jmservera</name><uri>http://www.blogger.com/profile/17142856972629218862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4773349175418023585.post-2904652837541578</id><published>2009-04-24T09:35:00.003+02:00</published><updated>2009-04-24T10:27:31.511+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Herramientas'/><category scheme='http://www.blogger.com/atom/ns#' term='FxCop'/><category scheme='http://www.blogger.com/atom/ns#' term='VS.Net'/><title type='text'>Las verdaderas razones detrás de un cambio</title><content type='html'>Hoy, leyendo una &lt;a href="http://www.josebonnin.com/post/2009/04/23/Static-Code-Analysis.aspx"&gt;entrada de Jose Fco Bonnin&lt;/a&gt;, me han empezado a sonar las alarmas y he sentido la necesidad de investigar un poco.&lt;div&gt;El motivo de su post es que en el VS2008 se quitaron algunas reglas del FxCop, entre ellas la "&lt;a href="http://msdn.microsoft.com/en-us/library/ms182272(VS.80).aspx"&gt;CA1818 - Do not concatenate strings inside loops&lt;/a&gt;".&lt;/div&gt;&lt;div&gt;Tal como Jose ha comprobado, no ha habido ningún cambio en el framework para que esa regla se pueda quitar y el motivo que alega el equipo de &lt;a href="http://blogs.msdn.com/fxcop/"&gt;Code Analysis&lt;/a&gt; es que la han quitado debido a "&lt;a href="http://msmvps.com/blogs/vstsblog/archive/2008/01/13/some-code-analysis-rules-gone-in-visual-studio-2008.aspx"&gt;high noise or no longer applicable analysis&lt;/a&gt;".&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Cualquier desarrollador de .Net que se haya preocupado un mínimo por el rendimiento una de las primeras cosas que suele mirar es si la aplicación está generando demasiados strings; así que debe haber alguna otra razón para quitar esa regla del motor.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Tras buscar un poco he encontrado unas entradas que nos dan alguna una pista: tanto en una &lt;a href="http://social.msdn.microsoft.com/forums/en-US/vstscode/thread/0fd68dc1-6815-44d4-b743-e0d4149bf7e7/"&gt;conversación en el foro de fxcop beta&lt;/a&gt; como en una &lt;a href="http://blogs.msdn.com/fxcop/archive/2008/01/07/faq-which-rules-shipped-in-which-version.aspx"&gt;nota de su blog&lt;/a&gt; comentan que el "data flow analysis engine", el encargado de comprobar esa regla, ha sido eliminado porque no funcionaba bien, era muy lento y además indeterminista.&lt;/div&gt;&lt;div&gt;Es una opinión/deducción personal, pero creo que nos han contado una verdad a medias y el impacto de haber quitado esa regla puede ser verdaderamente alto en aplicaciones grandes.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Teóricamente &lt;a href="https://connect.microsoft.com/Phoenix"&gt;Phoenix&lt;/a&gt; iba a arreglar el desaguisado pero no parece que tenga continuidad, así que habrá que ver si en vs2010, que vuelve a tener un data flow engine, las reglas se han vuelto a activar. ¿Alguien lo ha probado ya?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4773349175418023585-2904652837541578?l=iremote.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iremote.blogspot.com/feeds/2904652837541578/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4773349175418023585&amp;postID=2904652837541578' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4773349175418023585/posts/default/2904652837541578'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4773349175418023585/posts/default/2904652837541578'/><link rel='alternate' type='text/html' href='http://iremote.blogspot.com/2009/04/las-verdaderas-razones-detras-de-un.html' title='Las verdaderas razones detrás de un cambio'/><author><name>jmservera</name><uri>http://www.blogger.com/profile/17142856972629218862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4773349175418023585.post-2814404919398075374</id><published>2009-02-23T13:51:00.006+01:00</published><updated>2009-02-23T14:09:00.780+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Trucos'/><title type='text'>Serialización dinámica con el XmlSerializer</title><content type='html'>&lt;p&gt;Para acabar con esta espontanea serie de posts sobre el XmlSerializer os cuento un par de trucos no demasiado bien documentados para controlar la serialización. &lt;/p&gt;  &lt;p&gt;En algunas ocasiones podemos necesitar que una clase hija no persista algunas de las propiedades del base, pero, como ya hemos visto &lt;a href="http://iremote.blogspot.com/2009/02/xmlserializer-y-ocultacion-de.html"&gt;antes&lt;/a&gt;, si la propiedad no es virtual se complica un poco el asunto. En estos casos podemos añadir un miembro público a la clase base con el mismo nombre de la propiedad + Specified con el valor a true:&lt;/p&gt;  &lt;pre&gt;&lt;pre style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #ffffff"&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;class&lt;/span&gt; C1&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #ffffff"&gt;{&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #ffffff"&gt;	&lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;string&lt;/span&gt; MyProperty { &lt;span style="color: #0000ff"&gt;get&lt;/span&gt;; &lt;span style="color: #0000ff"&gt;set&lt;/span&gt;; }&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #ffffff"&gt;&lt;/pre&gt;&lt;pre style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #ffffff"&gt;	[XmlIgnore]&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #ffffff"&gt;	&lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;bool&lt;/span&gt; MyPropertySpecified = &lt;span style="color: #0000ff"&gt;true&lt;/span&gt;;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #ffffff"&gt;}&lt;/pre&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;De esta manera al heredar de la clase podremos especificar su valor a false, lo que hará que no se persista dicha propiedad:&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;pre style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #ffffff"&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;class&lt;/span&gt; C2:C1&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #ffffff"&gt;{&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #ffffff"&gt;	&lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;string&lt;/span&gt; MyOtherProperty { &lt;span style="color: #0000ff"&gt;get&lt;/span&gt;; &lt;span style="color: #0000ff"&gt;set&lt;/span&gt;; }&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #ffffff"&gt;&lt;/pre&gt;&lt;pre style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #ffffff"&gt;	&lt;span style="color: #0000ff"&gt;public&lt;/span&gt; C2()&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #ffffff"&gt;	{&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #ffffff"&gt;		MyPropertySpecified = &lt;span style="color: #0000ff"&gt;false&lt;/span&gt;;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #ffffff"&gt;	}&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #ffffff"&gt;}&lt;/pre&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;En otras ocasiones, lo que querremos es decidir cuando se debe persistir el valor y cuando no. Por ejemplo, si una lista no tiene valores o si un string es null puede que no nos interese que aparezca el valor vacío en el xml. Eso se consigue con un método público llamado ShouldSerialize + el nombre de la propiedad y que devuelva un bool indicando si la propiedad debe persistirse:&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;pre style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #ffffff"&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;class&lt;/span&gt; C3 : C2&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #ffffff"&gt;{&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #ffffff"&gt;	&lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;string&lt;/span&gt; MyThirdProperty { &lt;span style="color: #0000ff"&gt;get&lt;/span&gt;; &lt;span style="color: #0000ff"&gt;set&lt;/span&gt;; }&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #ffffff"&gt;&lt;/pre&gt;&lt;pre style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #ffffff"&gt;	&lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;bool&lt;/span&gt; ShouldSerializeMyThirdProperty()&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #ffffff"&gt;	{&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #ffffff"&gt;		&lt;span style="color: #0000ff"&gt;return&lt;/span&gt; &lt;span style="color: #0000ff"&gt;false&lt;/span&gt;;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #ffffff"&gt;	}&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #ffffff"&gt;}&lt;/pre&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Ahora podéis probar las clases, adivinad qué mostrará cada llamada:&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;pre style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #ffffff"&gt;XmlSerializer ser = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; XmlSerializer(&lt;span style="color: #0000ff"&gt;typeof&lt;/span&gt;(C1), &lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #ffffff"&gt;	&lt;span style="color: #0000ff"&gt;new&lt;/span&gt; Type[] { &lt;span style="color: #0000ff"&gt;typeof&lt;/span&gt;(C2), &lt;span style="color: #0000ff"&gt;typeof&lt;/span&gt;(C3) });&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #ffffff"&gt;ser.Serialize(Console.Out, &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; C1() { MyProperty = &amp;quot;&lt;span style="color: #8b0000"&gt;test&lt;/span&gt;&amp;quot;});&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #ffffff"&gt;Console.WriteLine();&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #ffffff"&gt;ser.Serialize(Console.Out, &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; C2() { MyProperty = &amp;quot;&lt;span style="color: #8b0000"&gt;test&lt;/span&gt;&amp;quot;, &lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #ffffff"&gt;	MyOtherProperty = &amp;quot;&lt;span style="color: #8b0000"&gt;test 2&lt;/span&gt;&amp;quot; });&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #ffffff"&gt;Console.WriteLine();&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #ffffff"&gt;ser.Serialize(Console.Out, &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; C3() { MyProperty = &amp;quot;&lt;span style="color: #8b0000"&gt;test&lt;/span&gt;&amp;quot;, &lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #ffffff"&gt;	MyOtherProperty = &amp;quot;&lt;span style="color: #8b0000"&gt;test 2&lt;/span&gt;&amp;quot;, MyThirdProperty=&amp;quot;&lt;span style="color: #8b0000"&gt;test 3&lt;/span&gt;&amp;quot; });&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 12px; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; background-color: #ffffff"&gt;Console.ReadLine();&lt;/pre&gt;&lt;/pre&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4773349175418023585-2814404919398075374?l=iremote.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iremote.blogspot.com/feeds/2814404919398075374/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4773349175418023585&amp;postID=2814404919398075374' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4773349175418023585/posts/default/2814404919398075374'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4773349175418023585/posts/default/2814404919398075374'/><link rel='alternate' type='text/html' href='http://iremote.blogspot.com/2009/02/serializacion-dinamica-con-el.html' title='Serialización dinámica con el XmlSerializer'/><author><name>jmservera</name><uri>http://www.blogger.com/profile/17142856972629218862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4773349175418023585.post-1796422560547054059</id><published>2009-02-20T16:49:00.006+01:00</published><updated>2009-02-23T13:21:30.309+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Trucos'/><title type='text'>XmlSerializer y ocultación de propiedades</title><content type='html'>&lt;div&gt;Esta mañana tras responder a un &lt;a href="http://geeks.ms/blogs/etomas/archive/2009/02/20/xmlserializer-y-propiedades-ocultadas.aspx"&gt;post&lt;/a&gt; de &lt;a href="http://geeks.ms/members/etomas/default.aspx"&gt;Eduard Tomàs i Avellana&lt;/a&gt; me ha dado por investigar un poco más sobre el tema...&lt;/div&gt;&lt;br /&gt;&lt;div&gt;En su caso el problema tenía solución pues podía modificar ambas clases, pero ¿qué pasaría si estamos heredando de una clase que no podemos modificar? Hay múltiples soluciones, desde el uso de un patrón Adapter hasta la implementación del interface IXmlSerializable, pero todas ellas requieren escribir una cantidad considerable de código.&lt;/div&gt;&lt;div&gt;Pero... en algunos casos nos podría servir una sobrecarga del XmlSerializer que admite como argumento una instancia del &lt;a href="http://msdn.microsoft.com/en-us/library/system.xml.serialization.xmlattributeoverrides.aspx"&gt;XmlAttributeOverrides&lt;/a&gt;, que, como su propio nombre indica, nos permite sobrecargar los atributos que usa el XmlSerializer sobre una clase para generar el código de serialización. Aunque tiene sus peligros podremos influir en cómo se serializa la clase base sin tener que modificarla.&lt;/div&gt;&lt;div&gt;Por ejemplo, si tuviéramos la siguiente definición de clases:&lt;/div&gt;&lt;br /&gt;&lt;code&gt;public class C1&lt;br /&gt;{&lt;br /&gt; List&amp;lt;C1&amp;gt; _myList = new List&amp;lt;C1&amp;gt;();&lt;br /&gt; public List&amp;lt;C1&amp;gt; MyList { get { return _myList; } }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public class C2:C1&lt;br /&gt;{&lt;br /&gt; List&amp;lt;C2&amp;gt; _myList = new List&amp;lt;C2&amp;gt;();&lt;br /&gt; public new List&amp;lt;C2&amp;gt; MyList { get { return _myList; } }&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;div&gt;Al crear el XmlSerializer nos daría un error de reflexión como pasaba en el caso de Eduard. Pero podemos obligar al serializador que ignore la propiedad de la clase base mediante el siguiente código:&lt;/div&gt;&lt;br /&gt;&lt;code class="prettyprint"&gt;&lt;br /&gt;XmlAttributeOverrides xOver = new XmlAttributeOverrides();&lt;br /&gt;XmlAttributes atts = new XmlAttributes(){ XmlIgnore=true};&lt;br /&gt;xOver.Add(typeof(C1), "MyList", atts);&lt;br /&gt;XmlSerializer ser = new XmlSerializer(typeof(C2),xOver);&lt;br /&gt;ser.Serialize(Console.Out, new C2());&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;div&gt;Aunque hay que usarlo con extremo cuidado, pues cualquier otra instancia del tipo C1 o derivados no serializará la propiedad MyList con ese serializador.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;¿Alguien más se anima a encontrar otra solución?&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4773349175418023585-1796422560547054059?l=iremote.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iremote.blogspot.com/feeds/1796422560547054059/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4773349175418023585&amp;postID=1796422560547054059' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4773349175418023585/posts/default/1796422560547054059'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4773349175418023585/posts/default/1796422560547054059'/><link rel='alternate' type='text/html' href='http://iremote.blogspot.com/2009/02/xmlserializer-y-ocultacion-de.html' title='XmlSerializer y ocultación de propiedades'/><author><name>jmservera</name><uri>http://www.blogger.com/profile/17142856972629218862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4773349175418023585.post-7543114205001872644</id><published>2009-02-06T12:00:00.020+01:00</published><updated>2009-02-11T11:45:50.837+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Trucos'/><title type='text'>Optimización de XmlSerializer</title><content type='html'>&lt;p&gt;Ayer, haciendo una de revisión en un servicio,  nos dimos cuenta que se hacían continuamente llamadas al csc.exe. Esto provocaba que el servicio fuera muy lento y además consumiera mucha memoria, así que nos pusimos manos a la obra.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Como sabíamos que el servicio hacía un uso intensivo de la serialización Xml con el &lt;a href="http://msdn.microsoft.com/en-us/library/system.xml.serialization.xmlserializer.aspx"&gt;XmlSerializer&lt;/a&gt; no hizo falta hacer debug sino que fuimos a mirar el código que probablemente invocaba al csc.&lt;/p&gt;&lt;p&gt;Paso directamente a describir cómo funciona y el porqué del comportamiento que encontramos.&lt;/p&gt;&lt;p&gt;En .Net serializar una clase sencilla (sin referencias circulares, con al menos el constructor por defecto, etc...) a Xml es bastante directo, sólo necesitas crear un &lt;a href="http://msdn.microsoft.com/en-us/library/system.xml.serialization.xmlserializer.aspx"&gt;XmlSerializer&lt;/a&gt; para la clase en cuestión, por ejemplo, si tenemos un conjunto de clases así:&lt;code&gt;&lt;br /&gt;public class BaseClass&lt;br /&gt;{&lt;br /&gt; public int BaseProperty { get; set; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public class TestClass&lt;br /&gt;{&lt;br /&gt; public string MyProperty1 { get; set; }&lt;br /&gt; public BaseClass MyProperty2{get;set;}&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/p&gt;&lt;p&gt;Para serializar TestClass podríamos usar el siguiente código:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;TestClass xmlSerializableClass =&lt;br /&gt; new TestClass { MyProperty1 = "test", MyProperty2 = new BaseClass()};&lt;br /&gt;XmlSerializer serializer = new XmlSerializer(typeof(TestClass));&lt;br /&gt;serializer.Serialize(Console.Out, xmlSerializableClass);&lt;br /&gt;&lt;/code&gt;&lt;/p&gt;&lt;p&gt;Al ejecutarse genera un archivo .cs con el código de serialización de nuestra clase lo compila y lo ejecuta para serializarlo. La siguiente vez la clase XmlSerializer no volverá a compilar pues guarda internamente una lista con (casi) todos los serializadores que va creando.&lt;/p&gt;&lt;p&gt;Si heredamos de BaseClass y queremos que nuestra nueva clase se incluya en el serializador hay que agregar un atributo para que el XmlSerializer la tenga en cuenta automáticamente, en caso contrario nos daría un error en tiempo de ejecución:&lt;br /&gt;&lt;code&gt;public class AnotherClass:BaseClass&lt;br /&gt;{&lt;br /&gt; public int AnotherProperty { get; set; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;[&lt;strong&gt;XmlInclude&lt;/strong&gt;(typeof(&lt;strong&gt;AnotherClass&lt;/strong&gt;))]&lt;br /&gt;public class BaseClass&lt;br /&gt;{&lt;br /&gt; public int BaseProperty { get; set; }&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;De esta manera el siguiente código seguirá funcionando y utilizando el caché:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;TestClass xmlSerializableClass =&lt;br /&gt;  new TestClass { MyProperty1 = "test", MyProperty2 = new &lt;strong&gt;AnotherClass&lt;/strong&gt;()};&lt;br /&gt;XmlSerializer serializer = new XmlSerializer(typeof(TestClass));&lt;br /&gt;serializer.Serialize(Console.Out, xmlSerializableClass);&lt;br /&gt;&lt;/code&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Hasta aquí bien, pero ¿qué pasa si en tiempo de compilación aún no sabemos exactamente cuantas clases heredarán de BaseClass? Podría ocurrir que tuvieramos una aplicación con plugins y que pudieran añadir más clases ahí. Para eso el XmlSerializer tiene otro constructor donde le podemos pasar una lista de tipos a añadir al serializador aparte de los que haya indicados en el atributo:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;XmlSerializer serializer = new XmlSerializer(typeof(TestClass),&lt;br /&gt;  new Type[]{typeof(&lt;strong&gt;NotIncludedClass&lt;/strong&gt;)});&lt;/code&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;El único problema de este constructor es que no guarda la clase autogenerada en el caché. Por lo tanto, cada vez que se ejecute el código se ejecutará un csc.exe y se cargará un nuevo assembly dentro de nuestra aplicación. Eso nos produce dos efectos:&lt;/p&gt;&lt;ol&gt;  &lt;li&gt;Nuestra aplicación se ralentiza&lt;/li&gt;  &lt;li&gt;Como los assemblies no se descargan nunca, la memoria no se libera&lt;/li&gt;&lt;/ol&gt;En estos casos nos conviene guardar una referencia al serializador. Espero haber ayudado a alguien. Podéis descargar el código de ejemplo &lt;a href="http://cid-31eeba0d051ac7c4.skydrive.live.com/self.aspx/.Public/IRemote/XmlSerializationTest/Program.zip"&gt;aquí&lt;/a&gt;.&lt;div&gt;&lt;br /&gt;&lt;div&gt;Para saber más, hace ya unos cuantos años escribí un pequeño  de introducción al &lt;a href="http://msdn.microsoft.com/en-us/library/system.xml.serialization.xmlserializer.aspx"&gt;XmlSerializer&lt;/a&gt; que podéis encontrar &lt;a href="http://www.elguille.info/colabora/puntoNET/soylan_XmlSerializer.htm"&gt;aquí&lt;/a&gt;.&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4773349175418023585-7543114205001872644?l=iremote.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iremote.blogspot.com/feeds/7543114205001872644/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4773349175418023585&amp;postID=7543114205001872644' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4773349175418023585/posts/default/7543114205001872644'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4773349175418023585/posts/default/7543114205001872644'/><link rel='alternate' type='text/html' href='http://iremote.blogspot.com/2009/02/optimizacion-de-xmlserializer.html' title='Optimización de XmlSerializer'/><author><name>jmservera</name><uri>http://www.blogger.com/profile/17142856972629218862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4773349175418023585.post-1472424530717546815</id><published>2008-12-03T17:38:00.004+01:00</published><updated>2008-12-07T00:12:22.267+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Cloud'/><title type='text'>The network is the...</title><content type='html'>&lt;strike&gt;Computer&lt;/strike&gt; Great Deal!&lt;br /&gt;Mientras los unos hablan del Cloud como la evolución natural e ineludible y los otros nos advierten de sus peligros, los más avispados se están dando cuenta de que volvemos a los inicios de la computación, cuando alquilaban los “superordenadores” por horas. El Cloud Computing no va de ubicuidad, ni va de la red, ni va de encontrar la pregunta a la respuesta 42, sino de cambiar la manera en que las grandes compañías hacen el negocio.&lt;br /&gt;Igual que la moda tiene ciclos (y no sólo la de mujer... &lt;a href="http://www.guardian.co.uk/technology/2008/sep/29/cloud.computing.richard.stallman"&gt;aunque lo diga Stallman&lt;/a&gt;) y cada 50 años vuelven los pantalones de campana, parece ser que en tecnología ocurre lo mismo (y ahí si que le doy la razón).&lt;br /&gt;&lt;br /&gt;EC2, GoogleApi, Azure, Project Caroline, Blue Cloud, vCloud son todo tecnologías propietarias, pero yo me pregunto si habrá alguien desarrollando un Free Cloud OS por ahí, algo revolucionario de verdad.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4773349175418023585-1472424530717546815?l=iremote.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iremote.blogspot.com/feeds/1472424530717546815/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4773349175418023585&amp;postID=1472424530717546815' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4773349175418023585/posts/default/1472424530717546815'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4773349175418023585/posts/default/1472424530717546815'/><link rel='alternate' type='text/html' href='http://iremote.blogspot.com/2008/12/network-is.html' title='The network is the...'/><author><name>jmservera</name><uri>http://www.blogger.com/profile/17142856972629218862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4773349175418023585.post-3909521181218931065</id><published>2008-12-01T15:28:00.010+01:00</published><updated>2008-12-01T16:45:52.467+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Trucos'/><category scheme='http://www.blogger.com/atom/ns#' term='VS.Net'/><title type='text'>Nota mental: desactivar el informe de problemas y soluciones</title><content type='html'>Hace unos días la herramienta de "Informes de errores y soluciones" me dió un buen susto. Mientras ejecutaba unos tests unitarios en Visual Studio el VSTestHost.exe encontró un problema y se cerró... tras el primer susto inicial (que luego os cuento) resultó que una de las clases que estaba testeando daba una StackOverflowException. &lt;div&gt;Como algunos sabréis las StackOverflowException no son capturables desde la versión 2.0 del framework. Además, para los que no lo hayáis probado sabed que ni siquiera se capturan con RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup, así que el framework de unit testing tampoco las captura, se cierra y punto.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;Lo gracioso de todo esto es cómo el Windows Vista ha manejado el error del unit testing. La dichosa herramienta de solución de errores me ha dado la siguiente solución:&lt;/div&gt;&lt;br /&gt;&lt;div style="BORDER-RIGHT: 1px dotted; BORDER-TOP: 1px dotted; BORDER-LEFT: 1px dotted; BORDER-BOTTOM: 1px dotted"&gt;&lt;br /&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="FONT-WEIGHT: bold"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;Informes de errores y soluciones&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;Este problema se debe a &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="FONT-WEIGHT: bold"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;Visual Studio Team Edition for Software Testers&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;. Visual Studio Team Edition for Software Testers fue creado por &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="FONT-WEIGHT: bold"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;Visual Studio Team Edition for Software Testers&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;.&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;El período de prueba para ejecutar versiones beta o preliminares de Visual Studio Team Edition for Software Testers se ha agotado, y Visual Studio Team Edition for Software Testers ya no ofrece soporte para versiones beta. Deberá realizar la actualización a la versión comercial de Visual Studio Team Edition for Software Testers.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="FONT-WEIGHT: bold"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;Solución&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="COLOR: rgb(255,0,0)"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;Para obtener más información acerca de cómo realizar la actualización a la versión comercial de Visual Studio Team Edition for Software Testers, vaya al sitio web que se indica a continuación.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;¿Cómo?¿Que tengo que comprar otro VS.Net para ejecutar las pruebas que venía ejecutando hasta ahora? ¿Tan malo soy programando?&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Moraleja: en las máquinas de desarrollo con Vista mejor &lt;a href="http://geeks.ms/blogs/vista-tecnica/archive/2008/01/31/c-243-mo-desactivar-la-herramienta-de-informe-de-errores-en-vista-por-i-241-aki-ayucar.aspx"&gt;desactivar el informe&lt;/a&gt;... os evitaréis problemas innecesarios.&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4773349175418023585-3909521181218931065?l=iremote.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iremote.blogspot.com/feeds/3909521181218931065/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4773349175418023585&amp;postID=3909521181218931065' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4773349175418023585/posts/default/3909521181218931065'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4773349175418023585/posts/default/3909521181218931065'/><link rel='alternate' type='text/html' href='http://iremote.blogspot.com/2008/12/nota-mental-desactivar-el-informe-de.html' title='Nota mental: desactivar el informe de problemas y soluciones'/><author><name>jmservera</name><uri>http://www.blogger.com/profile/17142856972629218862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4773349175418023585.post-1155039188165970800</id><published>2008-11-19T09:34:00.003+01:00</published><updated>2008-11-19T09:40:07.042+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Cloud'/><category scheme='http://www.blogger.com/atom/ns#' term='Oslo'/><category scheme='http://www.blogger.com/atom/ns#' term='Azure'/><category scheme='http://www.blogger.com/atom/ns#' term='Dublin'/><title type='text'>Guía sobre Oslo, Azure &amp; Dublin</title><content type='html'>Vía &lt;a href="http://geeks.ms/blogs/mllopis/archive/2008/11/18/gu-237-a-de-bloggers-para-adentrarse-en-quot-connected-systems-1-0-quot-oslo-wcf-wf-azure-y-dublin.aspx"&gt;Miguel Llopis&lt;/a&gt; he encontrado una guía de los blogs del equipo de Connected Systems en Microsoft donde encontraréis todo lo que se ha hablado sobre estos temas. Podéis encontrar esta guía &lt;a href="http://bloggersguides.net/media/p/186.aspx"&gt;aquí&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Recordad desbloquear el CHM en las propiedades del fichero para poder verlo.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4773349175418023585-1155039188165970800?l=iremote.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iremote.blogspot.com/feeds/1155039188165970800/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4773349175418023585&amp;postID=1155039188165970800' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4773349175418023585/posts/default/1155039188165970800'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4773349175418023585/posts/default/1155039188165970800'/><link rel='alternate' type='text/html' href='http://iremote.blogspot.com/2008/11/gua-sobre-oslo-azure-dublin.html' title='Guía sobre Oslo, Azure &amp; Dublin'/><author><name>jmservera</name><uri>http://www.blogger.com/profile/17142856972629218862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4773349175418023585.post-4995911570799112344</id><published>2008-11-18T18:20:00.004+01:00</published><updated>2008-11-19T09:55:59.178+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Cloud'/><category scheme='http://www.blogger.com/atom/ns#' term='Mesh'/><category scheme='http://www.blogger.com/atom/ns#' term='Azure'/><title type='text'>Revuelo en la nube</title><content type='html'>&lt;p&gt;Hace ya algunas semanas que no hace más que hablarse de &lt;a href="http://www.microsoft.com/presspass/exec/ozzie/10-27PDC08dayone.mspx"&gt;Azure&lt;/a&gt; y los partidarios de cada bando dan sus argumentos de por qué un sistema es mejor que otro: que si amazon lleva más tiempo, que si google sabe más de internet, que si vamos camino del gran hermano de Orwell (otra vez!).&lt;/p&gt;&lt;p&gt;Creo que mejor dejamos esta guerra a los de sistemas y nos centramos en lo que más nos interesa a nosotros: con Azure podremos crear aplicaciones con ASP.Net, desde el Visual Studio y desplegarlas a la nube fácilmente.&lt;br /&gt;¿Qué más queréis? Personalmente me parece fantástico poder crear aplicaciones de una nueva forma sin tener que ampliar de nuevo mis conocimientos, que, como dice &lt;a href="http://blogs.msdn.com/davidsalgado/archive/2008/11/10/interpretar-los-contenidos-del-pdc-sin-agobiarse.aspx"&gt;David Salgado&lt;/a&gt;, ya suficiente tenemos con el nuevo paradigma de &lt;a href="http://en.wikipedia.org/wiki/Model-driven_architecture"&gt;MDD&lt;/a&gt; y las novedades de C# 4.0.&lt;br /&gt;La pena de todo esto es que por ahora es un &lt;a href="http://www.microsoft.com/azure/default.mspx"&gt;CTP cerrado&lt;/a&gt; y los mortales que no fuimos al PDC no podemos probarlo aún, habrá que esperar.&lt;br /&gt;&lt;br /&gt;Por otra parte, está claro que Microsoft sigue viendo un gran negocio en las aplicaciones de escritorio y &lt;a href="https://www.mesh.com/"&gt;Mesh&lt;/a&gt; nos permite sincronizar datos entre dispositivos usando la nube. Seguro que cuando lo probéis decidiréis dejar los pendrives en la misma caja donde tenéis los disquettes.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4773349175418023585-4995911570799112344?l=iremote.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iremote.blogspot.com/feeds/4995911570799112344/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4773349175418023585&amp;postID=4995911570799112344' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4773349175418023585/posts/default/4995911570799112344'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4773349175418023585/posts/default/4995911570799112344'/><link rel='alternate' type='text/html' href='http://iremote.blogspot.com/2008/11/revuelo-en-la-nube_18.html' title='Revuelo en la nube'/><author><name>jmservera</name><uri>http://www.blogger.com/profile/17142856972629218862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4773349175418023585.post-8752347556415857498</id><published>2008-10-22T10:36:00.003+02:00</published><updated>2008-10-22T11:17:58.219+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Herramientas'/><title type='text'>Crack.Net</title><content type='html'>No, no es un buscador de lo que pensais sino una nueva herramienta para mirar dentro de la "managed heap" de cualquier aplicación Net de escritorio. La podéis descargar &lt;a href="http://www.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=cracknetproject&amp;amp;DownloadId=46987"&gt;aquí&lt;/a&gt;:&lt;br /&gt;&lt;a href="http://www.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=cracknetproject&amp;amp;DownloadId=46987"&gt;http://www.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=cracknetproject&amp;amp;DownloadId=46987&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Josh Smith, uno de los creadores de &lt;a href="http://www.codeproject.com/KB/macros/MoleForVisualStudioEdit.aspx"&gt;mole&lt;/a&gt; ha creado esta potente herramienta que nos ayudará a ver qué hacen nuestras aplicaciones de una manera más intuitiva que el debugger del vs.net.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://joshsmithonwpf.files.wordpress.com/2008/10/annotatedlauncherwindow.png"&gt;&lt;img style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://joshsmithonwpf.files.wordpress.com/2008/10/annotatedlauncherwindow.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://joshsmithonwpf.files.wordpress.com/2008/10/annotatedmemoryexplorer_selectedobject.png"&gt;&lt;img style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://joshsmithonwpf.files.wordpress.com/2008/10/annotatedmemoryexplorer_selectedobject.png" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4773349175418023585-8752347556415857498?l=iremote.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iremote.blogspot.com/feeds/8752347556415857498/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4773349175418023585&amp;postID=8752347556415857498' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4773349175418023585/posts/default/8752347556415857498'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4773349175418023585/posts/default/8752347556415857498'/><link rel='alternate' type='text/html' href='http://iremote.blogspot.com/2008/10/cracknet.html' title='Crack.Net'/><author><name>jmservera</name><uri>http://www.blogger.com/profile/17142856972629218862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4773349175418023585.post-6818888761313687417</id><published>2008-10-14T11:03:00.003+02:00</published><updated>2008-10-14T11:16:35.277+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='parallel'/><title type='text'>Multicore &amp; Parallel Programming</title><content type='html'>&lt;div&gt;¿Es 2 mejor que 1?&lt;br /&gt;&lt;/div&gt;Acabo de leer un post de &lt;a href="http://geeks.ms/blogs/jalarcon/archive/2008/10/10/procesadores-multicore-amenaza-para-la-industria.aspx"&gt;José Manuel Alarcón&lt;/a&gt; sobre el problema de los procesadores multicore y cómo la industria está intentado resolverlo. No es sencillo y, como siempre, quien tiene que apechugar con las "nuevas características" y paradigmas del hardware es el pobre desarrollador. Menos mal que alguna ayudita tendremos gracias a que las &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=348F73FD-593D-4B3C-B055-694C50D2B0F3&amp;amp;displaylang=en"&gt;Parallel Extensions&lt;/a&gt; serán parte de &lt;a href="http://blogs.msdn.com/pfxteam/archive/2008/10/10/8994927.aspx"&gt;núcleo del Framework 4.0&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4773349175418023585-6818888761313687417?l=iremote.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iremote.blogspot.com/feeds/6818888761313687417/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4773349175418023585&amp;postID=6818888761313687417' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4773349175418023585/posts/default/6818888761313687417'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4773349175418023585/posts/default/6818888761313687417'/><link rel='alternate' type='text/html' href='http://iremote.blogspot.com/2008/10/multicore-parallel-programming.html' title='Multicore &amp; Parallel Programming'/><author><name>jmservera</name><uri>http://www.blogger.com/profile/17142856972629218862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4773349175418023585.post-8503682489946538107</id><published>2008-10-14T10:37:00.003+02:00</published><updated>2008-10-14T10:43:27.726+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Baleares on .Net'/><category scheme='http://www.blogger.com/atom/ns#' term='MSSql'/><title type='text'>Nuevas charlas de Baleares on .Net</title><content type='html'>Podéis leer en el &lt;a href="http://www.balearsinnovacio.com/blog/?p=1214"&gt;blog de Javier Jofre&lt;/a&gt; que hay dos nuevas charlas sobre MS SQL Server 2008 preparadas por la gente de Innova. El equivalente al Heroes Community Launch para SQL Server 2008. Serán:&lt;br /&gt;Viernes 24 Octubre:&lt;br /&gt;- Carlos A. García: Tipos de datos nuevos en SQL Server 2008.- Pedro Bauzá: Sql Server 2008 versus SQL Server 2005.&lt;br /&gt; Jueves 20 Noviembre:&lt;br /&gt;- Javier Jofre: Reporting Services con SQL Server 2008.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4773349175418023585-8503682489946538107?l=iremote.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iremote.blogspot.com/feeds/8503682489946538107/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4773349175418023585&amp;postID=8503682489946538107' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4773349175418023585/posts/default/8503682489946538107'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4773349175418023585/posts/default/8503682489946538107'/><link rel='alternate' type='text/html' href='http://iremote.blogspot.com/2008/10/nuevas-charlas-de-baleares-on-net.html' title='Nuevas charlas de Baleares on .Net'/><author><name>jmservera</name><uri>http://www.blogger.com/profile/17142856972629218862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4773349175418023585.post-2743098942345089860</id><published>2008-08-12T08:48:00.003+02:00</published><updated>2008-08-12T09:06:35.769+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='3.5'/><category scheme='http://www.blogger.com/atom/ns#' term='ADO.NET Data Services'/><title type='text'>System.Data.Services</title><content type='html'>Hace ya un tiempo que en &lt;a href="http://www.baleareson.net/"&gt;Baleares on .Net&lt;/a&gt; dimos, &lt;a href="http://iremote.blogspot.com/2008/03/primer-aniversario-de-baleares-on-net.html"&gt;entre otras&lt;/a&gt;, una charla sobre ADO .Net data services. Por entonces estaba en fase beta, pero ya funcionaba bien y prometía mucho.&lt;br /&gt;Como todo tiene un final, ayer, por fin, se publicó el &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=ab99342f-5d1a-413d-8319-81da479ab0d7&amp;amp;DisplayLang=en"&gt;SP1 del Framework 3.5&lt;/a&gt; con todas las nuevas funcionalidades, así que ya podremos usar en producción los servicios REST y unas cuantas cosas más.&lt;br /&gt;&lt;br /&gt;La documentación para ADO.Net Data Services está online dentro del namespace &lt;a href="http://msdn.microsoft.com/en-us/library/system.data.services.aspx"&gt;System.Data.Services&lt;/a&gt; y en el &lt;a href="http://blogs.msdn.com/marcelolr/archive/2008/08/11/system-data-services.aspx"&gt;WebLog de Marcelo&lt;/a&gt; encontraréis la explicación de los namespaces.&lt;br /&gt;&lt;br /&gt;Happy coding.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4773349175418023585-2743098942345089860?l=iremote.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iremote.blogspot.com/feeds/2743098942345089860/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4773349175418023585&amp;postID=2743098942345089860' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4773349175418023585/posts/default/2743098942345089860'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4773349175418023585/posts/default/2743098942345089860'/><link rel='alternate' type='text/html' href='http://iremote.blogspot.com/2008/08/systemdataservices.html' title='System.Data.Services'/><author><name>jmservera</name><uri>http://www.blogger.com/profile/17142856972629218862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4773349175418023585.post-4658996040635029967</id><published>2008-07-29T10:36:00.003+02:00</published><updated>2008-07-29T11:03:20.735+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='INETA'/><title type='text'>Ineta Europe gets social</title><content type='html'>&lt;p&gt;A través de &lt;a href="http://www.josefcobonnin.com/post/2008/07/28/INETA-Europe-newsletter.aspx"&gt;Mad about .Net&lt;/a&gt; he sabido que &lt;a href="http://europe.ineta.org/"&gt;INETA&lt;/a&gt; ha creado una red social para todos sus miembros.&lt;/p&gt;&lt;p&gt;Podéis uniros en &lt;a href="http://community.ineta-europe.org/"&gt;http://community.ineta-europe.org/&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4773349175418023585-4658996040635029967?l=iremote.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iremote.blogspot.com/feeds/4658996040635029967/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4773349175418023585&amp;postID=4658996040635029967' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4773349175418023585/posts/default/4658996040635029967'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4773349175418023585/posts/default/4658996040635029967'/><link rel='alternate' type='text/html' href='http://iremote.blogspot.com/2008/07/ineta-europe-gets-social.html' title='Ineta Europe gets social'/><author><name>jmservera</name><uri>http://www.blogger.com/profile/17142856972629218862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4773349175418023585.post-2586649446173145399</id><published>2008-06-13T09:38:00.003+02:00</published><updated>2008-06-13T09:49:55.584+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Trucos'/><title type='text'>Herramientas de Sysinternals compartidas en la web</title><content type='html'>A través de un &lt;a href="http://geeks.ms/blogs/lamaya/archive/2008/06/12/herramientas-de-sysinternals-disponibles-en-windows-live.aspx"&gt;blogger de Geeks&lt;/a&gt; he encontrado un lugar donde están compartidas todas las herramientas de &lt;a href="http://technet.microsoft.com/es-es/sysinternals/default(en-us).aspx"&gt;sysinternals&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;&lt;a title="http://live.sysinternals.com/" href="http://live.sysinternals.com/"&gt;http://live.sysinternals.com/&lt;/a&gt; &lt;br /&gt;Es una simple lista de utilidades que se  pueden ejecutar directamente desde la página en un momento de apuro. Por ejemplo segundos antes de hacer una demo nos damos cuenta que no tenemos instalado el zoomit... pues ahí está.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4773349175418023585-2586649446173145399?l=iremote.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iremote.blogspot.com/feeds/2586649446173145399/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4773349175418023585&amp;postID=2586649446173145399' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4773349175418023585/posts/default/2586649446173145399'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4773349175418023585/posts/default/2586649446173145399'/><link rel='alternate' type='text/html' href='http://iremote.blogspot.com/2008/06/herramientas-de-sysinternals.html' title='Herramientas de Sysinternals compartidas en la web'/><author><name>jmservera</name><uri>http://www.blogger.com/profile/17142856972629218862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4773349175418023585.post-7655004596369997538</id><published>2008-05-13T10:02:00.003+02:00</published><updated>2008-05-13T10:19:05.772+02:00</updated><title type='text'>ADO.NET Data Services Framework Beta 1</title><content type='html'>¡&lt;a href="http://blogs.msdn.com/astoriateam/archive/2008/05/12/ado-net-data-services-framework-beta-1-is-live.aspx"&gt;Por fin ya tenemos la beta&lt;/a&gt;! Viene incluida como parte del paquete &lt;a href="http://go.microsoft.com/fwlink/?LinkId=115068" mce_href="http://go.microsoft.com/fwlink/?LinkId=115068"&gt;.NET 3.5 SP1 Beta 1&lt;/a&gt; al mismo tiempo que &lt;a href="http://go.microsoft.com/fwlink/?LinkId=117351" mce_href="http://go.microsoft.com/fwlink/?LinkId=117351"&gt;Visual Studio 2008 SP1 Beta 1&lt;/a&gt;. Hay un montón de cambios que ya empezaron a anunciar en el &lt;a href="http://sessions.visitmix.com/"&gt;Mix 08&lt;/a&gt;. A nivel de nombres de clases y namespaces ha habido bastantes, algo habitual cuando se pasa de un ctp a una beta, pero además hay unas cuantas novedades importantes:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Batch: ahora se pueden enviar paquetes de cambios que se ejecutarán en un contexto atómico.&lt;/li&gt;&lt;li&gt;Concurrencia optimista: se posibilita mediante un "token" de concurrencia mediante ETags y HTTP If-*.&lt;/li&gt;&lt;li&gt;Nuevo interface IUpdatable: para permitir servicios de escritura sobre fuentes de datos que no estén usando el Entity Framework sino un interface IQueryable.&lt;/li&gt;&lt;/ul&gt;Podéis leer más en el &lt;a href="http://blogs.msdn.com/pablo/archive/2008/05/12/data-services-and-entity-framework-beta-bits-available.aspx"&gt;blog de Pablo Castro&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4773349175418023585-7655004596369997538?l=iremote.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iremote.blogspot.com/feeds/7655004596369997538/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4773349175418023585&amp;postID=7655004596369997538' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4773349175418023585/posts/default/7655004596369997538'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4773349175418023585/posts/default/7655004596369997538'/><link rel='alternate' type='text/html' href='http://iremote.blogspot.com/2008/05/adonet-data-services-framework-beta-1.html' title='ADO.NET Data Services Framework Beta 1'/><author><name>jmservera</name><uri>http://www.blogger.com/profile/17142856972629218862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4773349175418023585.post-4031860182681542018</id><published>2008-05-05T13:17:00.004+02:00</published><updated>2008-05-05T13:30:26.977+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Silverlight'/><title type='text'>Hago mis propios programas... y juegos!</title><content type='html'>Parece que ese infame anuncio de un curso de programación dejó huella en alguien del equipo de &lt;a href="http://www.blogger.com/www.popfly.com"&gt;Popfly&lt;/a&gt;, y ahí tenéis el resultado:&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://1.bp.blogspot.com/_kP0EgelReEA/SB7uvJnUGLI/AAAAAAAAAp4/Xe11-4CnYVU/s1600-h/game.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5196853513834207410" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/_kP0EgelReEA/SB7uvJnUGLI/AAAAAAAAAp4/Xe11-4CnYVU/s400/game.jpg" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt; Un creador de juegos online basado en Silverlight. Podéis ver más en el &lt;a href="http://blogs.msdn.com/jasonz/archive/2008/05/03/announcing-popfly-game-creator.aspx"&gt;blog de Jason Zander&lt;/a&gt;.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4773349175418023585-4031860182681542018?l=iremote.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iremote.blogspot.com/feeds/4031860182681542018/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4773349175418023585&amp;postID=4031860182681542018' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4773349175418023585/posts/default/4031860182681542018'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4773349175418023585/posts/default/4031860182681542018'/><link rel='alternate' type='text/html' href='http://iremote.blogspot.com/2008/05/hago-mis-propios-programas-y-juegos.html' title='Hago mis propios programas... y juegos!'/><author><name>jmservera</name><uri>http://www.blogger.com/profile/17142856972629218862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_kP0EgelReEA/SB7uvJnUGLI/AAAAAAAAAp4/Xe11-4CnYVU/s72-c/game.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4773349175418023585.post-4300484043325092993</id><published>2008-04-24T13:54:00.004+02:00</published><updated>2008-11-19T09:56:36.398+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Cloud'/><category scheme='http://www.blogger.com/atom/ns#' term='Mesh'/><title type='text'>Microsoft se vuelve a subir a la nube con Live Mesh</title><content type='html'>Si hace poco ya anunciaron los &lt;a href="https://www.microsoft.com/sql/dataservices/default.mspx"&gt;SQL Server Data Services&lt;/a&gt;, que ofrecen a los desarrolladores la plataforma de SQL Server en la nube, ahora dan un paso más alla con todos los servicios del desktop en la nube con &lt;a href="https://www.mesh.com/"&gt;Live Mesh&lt;/a&gt;. Podéis ver a Ray Ozzie hablando del tema en &lt;a href="http://channel9.msdn.com/Showpost.aspx?postid=399578"&gt;Channel 9&lt;/a&gt; o ver este video de demostración:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;iframe src="http://on10.net/blogs/nic/22038/player/" frameborder="0" width="320" scrolling="no" height="325"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;a href="http://on10.net/blogs/nic/Hands-on-with-Live-Mesh/"&gt;Hands on with Live Mesh&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4773349175418023585-4300484043325092993?l=iremote.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iremote.blogspot.com/feeds/4300484043325092993/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4773349175418023585&amp;postID=4300484043325092993' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4773349175418023585/posts/default/4300484043325092993'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4773349175418023585/posts/default/4300484043325092993'/><link rel='alternate' type='text/html' href='http://iremote.blogspot.com/2008/04/microsoft-se-vuelve-subir-la-nube-con.html' title='Microsoft se vuelve a subir a la nube con Live Mesh'/><author><name>jmservera</name><uri>http://www.blogger.com/profile/17142856972629218862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4773349175418023585.post-7975265596650276533</id><published>2008-04-21T20:28:00.002+02:00</published><updated>2008-04-21T20:35:08.522+02:00</updated><title type='text'>.NET 3.5 Enhancements Training Kit</title><content type='html'>El equipo de evangelismo de VS y .Net Framework publicó hace poco un &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=355c80e9-fde0-4812-98b5-8a03f5874e96&amp;amp;displaylang=en"&gt;paquete de recursos &lt;/a&gt;sobre las siguientes tecnologías:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;ADO.NET Data Services &lt;/li&gt;&lt;li&gt;ADO.NET Entity Framework &lt;/li&gt;&lt;li&gt;ASP.NET AJAX History &lt;/li&gt;&lt;li&gt;ASP.NET Dynamic Data &lt;/li&gt;&lt;li&gt;ASP.NET MVC &lt;/li&gt;&lt;li&gt;ASP.NET Silverlight controls &lt;/li&gt;&lt;/ol&gt;&lt;p&gt;En el &lt;a href="http://lostintangent.com/2008/04/16/net-35-enhancements-training-kit/"&gt;post original &lt;/a&gt;comentan que irán añadiendo poco a poco más cosas como demos, presentaciones, etc...&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4773349175418023585-7975265596650276533?l=iremote.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iremote.blogspot.com/feeds/7975265596650276533/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4773349175418023585&amp;postID=7975265596650276533' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4773349175418023585/posts/default/7975265596650276533'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4773349175418023585/posts/default/7975265596650276533'/><link rel='alternate' type='text/html' href='http://iremote.blogspot.com/2008/04/net-35-enhancements-training-kit.html' title='.NET 3.5 Enhancements Training Kit'/><author><name>jmservera</name><uri>http://www.blogger.com/profile/17142856972629218862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4773349175418023585.post-1199684527502033790</id><published>2008-04-02T18:06:00.005+02:00</published><updated>2008-04-02T18:29:11.755+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Baleares on .Net'/><category scheme='http://www.blogger.com/atom/ns#' term='Eventos'/><title type='text'>Fotos del aniversario de Baleares On .Net</title><content type='html'>&lt;a href="http://blogs.clearscreen.com/jfbonnin/archive/2008/04/02/11816.aspx"&gt;Jose&lt;/a&gt; ha colgado las fotos del aniversario en su &lt;a href="http://www.facebook.com/album.php?aid=45188&amp;amp;page=3&amp;amp;l=73321&amp;amp;id=597496250"&gt;facebook&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.facebook.com/album.php?aid=45188&amp;amp;page=3&amp;amp;l=73321&amp;amp;id=597496250"&gt;&lt;img style="FLOAT: left; MARGIN: 0px 10px 10px 0px; WIDTH: 200px; CURSOR: hand" alt="" src="http://photos-e.ak.facebook.com/photos-ak-sf2p/v190/232/37/597496250/n597496250_1047364_6961.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.facebook.com/album.php?aid=45188&amp;amp;page=3&amp;amp;l=73321&amp;amp;id=597496250"&gt;&lt;img style="FLOAT: left; MARGIN: 0px 10px 10px 0px; WIDTH: 200px; CURSOR: hand" alt="" src="http://photos-f.ak.facebook.com/photos-ak-sf2p/v190/232/37/597496250/n597496250_1047389_4278.jpg" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4773349175418023585-1199684527502033790?l=iremote.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iremote.blogspot.com/feeds/1199684527502033790/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4773349175418023585&amp;postID=1199684527502033790' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4773349175418023585/posts/default/1199684527502033790'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4773349175418023585/posts/default/1199684527502033790'/><link rel='alternate' type='text/html' href='http://iremote.blogspot.com/2008/04/fotos-del-aniversario-de-baleares-on.html' title='Fotos del aniversario de Baleares On .Net'/><author><name>jmservera</name><uri>http://www.blogger.com/profile/17142856972629218862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4773349175418023585.post-1560305893206158547</id><published>2008-03-31T15:58:00.004+02:00</published><updated>2008-04-01T21:19:52.424+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Baleares on .Net'/><category scheme='http://www.blogger.com/atom/ns#' term='Eventos'/><title type='text'>Primer aniversario de Baleares on Net</title><content type='html'>El pasado viernes participé en el &lt;a href="http://www.baleareson.net/CommunityLaunch/"&gt;Community Launch&lt;/a&gt; y aniversario del grupo de usuarios Baleares on Net. Mi charla fué sobre &lt;a href="http://astoria.mslivelabs.com/"&gt;Ado .Net Data Services&lt;/a&gt;, espero que os gustara tanto como me ha gustado a mi prepararla. Dentro de poco estarán disponibles las diapositivas y demos para descarga.&lt;br /&gt;&lt;br /&gt;Gracias a todos por asistir y a los ponentes por ser tan majos y dispuestos a venir tan lejos.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4773349175418023585-1560305893206158547?l=iremote.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iremote.blogspot.com/feeds/1560305893206158547/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4773349175418023585&amp;postID=1560305893206158547' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4773349175418023585/posts/default/1560305893206158547'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4773349175418023585/posts/default/1560305893206158547'/><link rel='alternate' type='text/html' href='http://iremote.blogspot.com/2008/03/primer-aniversario-de-baleares-on-net.html' title='Primer aniversario de Baleares on Net'/><author><name>jmservera</name><uri>http://www.blogger.com/profile/17142856972629218862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4773349175418023585.post-3085701438666867052</id><published>2008-03-07T13:43:00.004+01:00</published><updated>2008-03-07T13:50:22.666+01:00</updated><title type='text'>Heroes Community Launch</title><content type='html'>&lt;p&gt;Ya tenemos preparado el &lt;a href="http://www.heroescommunitylaunch.com/" target="_blank" closure_hashcode_="513"&gt;Heroes Community Launch&lt;/a&gt; en la comunidad &lt;a href="http://baleareson.net/" target="_blank" closure_hashcode_="514"&gt;Baleares On .Net&lt;/a&gt;. Vamos a realizar una jornada para la presentación de los últimos productos de Microsoft lanzados el 27 de Febrero de 2008. &lt;a href="http://blogs.clearscreen.com/jfbonnin/" target="_blank" closure_hashcode_="515"&gt;José&lt;/a&gt; lo ha organizado para que vengan ponentes reconocidos que han estado en otros eventos similares. Será el &lt;a href="http://www.baleareson.net/CommunityLaunch/Default.aspx" target="_blank" closure_hashcode_="516"&gt;28 de Marzo&lt;/a&gt; bajo el siguiente programa:&lt;br /&gt;&lt;strong&gt;09:00 - 09:30 Registro&lt;br /&gt;09:30 - 10:00&lt;/strong&gt; Bienvenida y Presentación.&lt;br /&gt;&lt;strong&gt;10:00 - 11:00&lt;/strong&gt; Windows Server 2008 - David Cervigón, Microsoft.&lt;br /&gt;&lt;strong&gt;11:00 - 12:00&lt;/strong&gt; Metodologías Ágiles con TFS 2008 - Rodrigo Corral, PlainConcepts.&lt;br /&gt;&lt;strong&gt;12:00 - 12:30 Coffee Break&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;12:30 - 13:30&lt;/strong&gt; SQL Server 2008 - Eladio Rincón, SolidQuality Mentors.&lt;br /&gt;&lt;strong&gt;13:30 - 14:30&lt;/strong&gt; ADO.NET Framework Entity - Jose Fco Bonnin, Payvision.&lt;br /&gt;&lt;strong&gt;14:30 - 15:30 Tiempo libre para almorzar&lt;br /&gt;15:30 - 16:30&lt;/strong&gt; ADO.NET Data Services - Juan Manuel Servera, Babtec.&lt;br /&gt;&lt;strong&gt;16:30 - 17:30&lt;/strong&gt; Diseño Emocional y Experiencias de Usuario Avanzadas con Silverlight y WPF - Miguel Jiménez, Ilitia.&lt;br /&gt;&lt;strong&gt;17:30 - 18:30&lt;/strong&gt; Advanced Debugging - David Salgado, Microsoft.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;Para asistir simplemente es necesario &lt;a href="http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032369009&amp;amp;Culture=es-ES" target="_blank" closure_hashcode_="519"&gt;registrarse&lt;/a&gt;.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4773349175418023585-3085701438666867052?l=iremote.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iremote.blogspot.com/feeds/3085701438666867052/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4773349175418023585&amp;postID=3085701438666867052' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4773349175418023585/posts/default/3085701438666867052'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4773349175418023585/posts/default/3085701438666867052'/><link rel='alternate' type='text/html' href='http://iremote.blogspot.com/2008/03/heroes-community-launch.html' title='Heroes Community Launch'/><author><name>jmservera</name><uri>http://www.blogger.com/profile/17142856972629218862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4773349175418023585.post-6637295435303912925</id><published>2008-02-19T10:49:00.004+01:00</published><updated>2008-02-19T10:58:13.544+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Baleares on .Net'/><category scheme='http://www.blogger.com/atom/ns#' term='Eventos'/><category scheme='http://www.blogger.com/atom/ns#' term='NUG'/><title type='text'>Visual Studio 2008, SQL Server 2008, Windows Server 2008, Astoria, Entity Framework ...</title><content type='html'>El 28 de Marzo tenemos un evento especial en &lt;a href="http://www.baleareson.net/"&gt;Baleares On .Net&lt;/a&gt;. El aniversario del grupo coincide con un evento del programa &lt;a href="http://www.heroescommunitylaunch.com/"&gt;{Community} Launch&lt;/a&gt;, del que formamos parte, así que habrá una gran presentación de los nuevos productos de Microsoft para desarrolladores.&lt;br /&gt;Podéis leer más detalles en: &lt;a href="http://www.baleareson.net/CommunityLaunch/"&gt;http://www.baleareson.net/CommunityLaunch/&lt;/a&gt;&lt;br /&gt;Dentro de poco estará disponible el registro.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4773349175418023585-6637295435303912925?l=iremote.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iremote.blogspot.com/feeds/6637295435303912925/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4773349175418023585&amp;postID=6637295435303912925' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4773349175418023585/posts/default/6637295435303912925'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4773349175418023585/posts/default/6637295435303912925'/><link rel='alternate' type='text/html' href='http://iremote.blogspot.com/2008/02/visual-studio-2008-sql-server-2008.html' title='Visual Studio 2008, SQL Server 2008, Windows Server 2008, Astoria, Entity Framework ...'/><author><name>jmservera</name><uri>http://www.blogger.com/profile/17142856972629218862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4773349175418023585.post-7090552834422409706</id><published>2007-12-01T10:19:00.000+01:00</published><updated>2007-12-01T10:35:10.096+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WPF'/><category scheme='http://www.blogger.com/atom/ns#' term='Silverlight'/><title type='text'>Silverlight 2.0</title><content type='html'>&lt;strong&gt;Scott Guthrie&lt;/strong&gt; acaba de &lt;a href="http://weblogs.asp.net/scottgu/archive/2007/11/29/net-web-product-roadmap-asp-net-silverlight-iis7.aspx"&gt;anunciar en su blog&lt;/a&gt; (entre otras muchas cosas) el lanzamiento de la primera beta de Silverlight 2.0 a principios del año que viene.&lt;br /&gt;El "truco" reside en que estaban añadiendo tantas características nuevas a 1.1 que han decidido cambiarle el número de versión.&lt;br /&gt;Las mejoras son: uso de un subconjunto de las características del WPF UI compatibles con éste, más de 20 controles ricos que incluyen textbox, checkbox, radiobutton, grid, tabcontrol, progressbar y un largo etcétera, manejo en red de REST, POX, RSS, and WS* y conexiones cross-domain (por fin!), además de las funcionalidades de las librerías base de .Net (colecciones, generics,...) e incluso LINQ to XML.&lt;br /&gt;¡Ya no tendremos excusa para no usarlo!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4773349175418023585-7090552834422409706?l=iremote.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iremote.blogspot.com/feeds/7090552834422409706/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4773349175418023585&amp;postID=7090552834422409706' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4773349175418023585/posts/default/7090552834422409706'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4773349175418023585/posts/default/7090552834422409706'/><link rel='alternate' type='text/html' href='http://iremote.blogspot.com/2007/12/silverlight-20.html' title='Silverlight 2.0'/><author><name>jmservera</name><uri>http://www.blogger.com/profile/17142856972629218862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4773349175418023585.post-527356111455686658</id><published>2007-11-07T10:26:00.000+01:00</published><updated>2007-11-07T10:34:22.651+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VS.Net'/><title type='text'>Visual Studio 2008</title><content type='html'>Microsoft anunció en el TechEd de Barcelona la  inminente publicación de la versión RTM (release to manufacturing) de &lt;a href="http://msdn2.microsoft.com/es-es/vstudio/default.aspx"&gt;Visual Studio 2008 &lt;/a&gt; a finales de este mes.&lt;br /&gt;&lt;br /&gt;La versión final junto con Windows Server 2008 y SQL Server 2008 la veremos el 27 de Febrero.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4773349175418023585-527356111455686658?l=iremote.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iremote.blogspot.com/feeds/527356111455686658/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4773349175418023585&amp;postID=527356111455686658' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4773349175418023585/posts/default/527356111455686658'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4773349175418023585/posts/default/527356111455686658'/><link rel='alternate' type='text/html' href='http://iremote.blogspot.com/2007/11/visual-studio-2008.html' title='Visual Studio 2008'/><author><name>jmservera</name><uri>http://www.blogger.com/profile/17142856972629218862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4773349175418023585.post-1572728075471589854</id><published>2007-10-22T23:54:00.000+02:00</published><updated>2007-10-23T00:41:13.600+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='AJAX'/><category scheme='http://www.blogger.com/atom/ns#' term='Sharepoint'/><title type='text'>AJAX y WebParts</title><content type='html'>&lt;a href="http://asp.net/ajax/downloads/default.aspx"&gt;ASP.NET AJAX Extensions&lt;/a&gt; se publicó hace ya algún tiempo y aún no hay una versión oficial de sharepoint con soporte directo para éstas.&lt;br /&gt;En ASP.NET siempre se ha podido leer contenido de manera asíncrona usando la cláusula &lt;a href="http://msdn.microsoft.com/msdnmag/issues/06/07/ExtremeASPNET/default.aspx"&gt;Async&lt;/a&gt; y un par de trucos de javascript; pero todos sabemos que AJAX hace mucho más que eso y de manera mucho más fácil y elegante... hasta que lo intentas usar en sharepoint!&lt;br /&gt;Instalar las extensiones es &lt;a href="http://sharepoint.microsoft.com/blogs/mike/Lists/Posts/Post.aspx?ID=3"&gt;una tarea complicada pero no imposible&lt;/a&gt; si tenemos algo de experiencia con sharepoint, aunque hacer que funcionen como esperamos puede ser un buen rompecabezas.&lt;br /&gt;&lt;br /&gt;Afortunadamente hay un montón de gente con ganas de usar AJAX. Ahí tenéis dos ejemplos:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;El sr. Zlatan ha dado con una solución para el &lt;a href="http://dotnet.org.za/zlatan/archive/2007/10/12/developing-ajax-web-parts-in-sharepoint-2007.aspx"&gt;refresco cíclico de datos en una webpart &lt;/a&gt;&lt;/li&gt;&lt;li&gt;Como ya comenté en la presentación, lo verdaderamente complicado de AJAX en Sharepoint son las conexiones entre webparts, aunque siempre podemos usar la nueva &lt;a href="http://weblogs.asp.net/jan/archive/2007/02/26/new-version-of-smartpart-now-with-ajax-connections.aspx"&gt;SmartPart&lt;/a&gt; de Jan Tielens.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Espero que os sirvan.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4773349175418023585-1572728075471589854?l=iremote.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iremote.blogspot.com/feeds/1572728075471589854/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4773349175418023585&amp;postID=1572728075471589854' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4773349175418023585/posts/default/1572728075471589854'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4773349175418023585/posts/default/1572728075471589854'/><link rel='alternate' type='text/html' href='http://iremote.blogspot.com/2007/10/ajax-y-webparts.html' title='AJAX y WebParts'/><author><name>jmservera</name><uri>http://www.blogger.com/profile/17142856972629218862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4773349175418023585.post-1970197913661413834</id><published>2007-10-01T10:55:00.000+02:00</published><updated>2007-10-01T11:09:29.572+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Sharepoint'/><title type='text'>SharePoint 2007 Learning Guide</title><content type='html'>Para los que os haya entrado el gusanillo Sharepoint aquí teneis un sitio con montones de links para aprender sobre él:&lt;br /&gt;&lt;p&gt;&lt;a href="http://searchvb.techtarget.com/generic/0,295582,sid8_gci1274283,00.html"&gt;http://searchvb.techtarget.com/generic/0,295582,sid8_gci1274283,00.html&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4773349175418023585-1970197913661413834?l=iremote.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iremote.blogspot.com/feeds/1970197913661413834/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4773349175418023585&amp;postID=1970197913661413834' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4773349175418023585/posts/default/1970197913661413834'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4773349175418023585/posts/default/1970197913661413834'/><link rel='alternate' type='text/html' href='http://iremote.blogspot.com/2007/10/sharepoint-2007-learning-guide.html' title='SharePoint 2007 Learning Guide'/><author><name>jmservera</name><uri>http://www.blogger.com/profile/17142856972629218862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4773349175418023585.post-474201870219671799</id><published>2007-09-23T23:29:00.001+02:00</published><updated>2007-09-24T00:28:06.550+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Baleares on .Net'/><category scheme='http://www.blogger.com/atom/ns#' term='Eventos'/><category scheme='http://www.blogger.com/atom/ns#' term='Sharepoint'/><title type='text'>Mi primer evento</title><content type='html'>&lt;p&gt;El pasado día 21 tuve la ocasión de dar mi primera charla sobre el &lt;a href="http://www.baleareson.net/forums/p/196/481.aspx"&gt;desarrollo sobre Sharepoint&lt;/a&gt; en un evento del grupo &lt;a href="http://www.baleareson.net/"&gt;Baleares on .Net&lt;/a&gt;. Podéis encontrar la &lt;a href="http://www.baleareson.net/files/folders/presentaciones/entry479.aspx"&gt;presentación powerpoint en la web del grupo&lt;/a&gt;. En breve mandaré algunos ejemplos más que me pidieron pero que fue imposible hacer en directo por falta de tiempo. &lt;p&gt;Nos vemos en el próximo evento!&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4773349175418023585-474201870219671799?l=iremote.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iremote.blogspot.com/feeds/474201870219671799/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4773349175418023585&amp;postID=474201870219671799' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4773349175418023585/posts/default/474201870219671799'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4773349175418023585/posts/default/474201870219671799'/><link rel='alternate' type='text/html' href='http://iremote.blogspot.com/2007/09/mi-primer-evento.html' title='Mi primer evento'/><author><name>jmservera</name><uri>http://www.blogger.com/profile/17142856972629218862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4773349175418023585.post-4999282460396069961</id><published>2007-08-28T23:45:00.001+02:00</published><updated>2007-08-29T00:08:47.989+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Sharepoint'/><title type='text'>Copia de listas en Sharepoint</title><content type='html'>&lt;p&gt;Hace unos días en el foro &lt;a href="http://www.baleareson.net/"&gt;Baleares On .Net&lt;/a&gt; pedían un ejemplo para &lt;a href="http://www.baleareson.net/forums/t/192.aspx"&gt;fusionar listas en MOSS 2007&lt;/a&gt;. Aquí tenéis un ejemplo rápido de cómo se pueden hacer estas cosas gracias al modelo de objetos de WSS. Basta con crear una aplicación de consola con una referencia a la librería Microsoft.Sharepoint.dll (v12) y escribir un código parecido a éste (si lo parametrizais un poco quedará mucho más bonito):&lt;br&gt;&lt;/p&gt; &lt;div class="wlWriterSmartContent" id="57F11A72-B0E5-49c7-9094-E3A15BD5B5E7:19c780cd-d96f-4f6e-a251-b15b0c9173cd" contenteditable="false" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;pre style="background-color:White;"&gt;&lt;div&gt;&lt;!--&lt;br /&gt;&lt;br /&gt;Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br /&gt;http://www.CodeHighlighter.com/&lt;br /&gt;&lt;br /&gt;--&gt;&lt;span style="color: #0000FF; "&gt;using&lt;/span&gt;&lt;span style="color: #000000; "&gt; System;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000FF; "&gt;using&lt;/span&gt;&lt;span style="color: #000000; "&gt; System.Collections.Generic;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000FF; "&gt;using&lt;/span&gt;&lt;span style="color: #000000; "&gt; System.Text;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000FF; "&gt;using&lt;/span&gt;&lt;span style="color: #000000; "&gt; Microsoft.SharePoint;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000FF; "&gt;namespace&lt;/span&gt;&lt;span style="color: #000000; "&gt; ListMerge&lt;br /&gt;{&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;class&lt;/span&gt;&lt;span style="color: #000000; "&gt; Program&lt;br /&gt;    {&lt;br /&gt;        &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;static&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;void&lt;/span&gt;&lt;span style="color: #000000; "&gt; Main(&lt;/span&gt;&lt;span style="color: #0000FF; "&gt;string&lt;/span&gt;&lt;span style="color: #000000; "&gt;[] args)&lt;br /&gt;        {&lt;br /&gt;            &lt;/span&gt;&lt;span style="color: #008000; "&gt;//&lt;/span&gt;&lt;span style="color: #008000; "&gt;abre el sitio&lt;/span&gt;&lt;span style="color: #008000; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000; "&gt;            Console.WriteLine(&lt;/span&gt;&lt;span style="color: #000000; "&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000; "&gt;Abriendo sitio...&lt;/span&gt;&lt;span style="color: #000000; "&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000; "&gt;);&lt;br /&gt;            SPSite mySite &lt;/span&gt;&lt;span style="color: #000000; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;new&lt;/span&gt;&lt;span style="color: #000000; "&gt; SPSite(&lt;/span&gt;&lt;span style="color: #000000; "&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000; "&gt;http://localhost&lt;/span&gt;&lt;span style="color: #000000; "&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000; "&gt;);&lt;br /&gt;            SPWeb myWeb &lt;/span&gt;&lt;span style="color: #000000; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; "&gt; mySite.OpenWeb();&lt;br /&gt;            &lt;br /&gt;            &lt;/span&gt;&lt;span style="color: #008000; "&gt;//&lt;/span&gt;&lt;span style="color: #008000; "&gt;obtiene las listas&lt;/span&gt;&lt;span style="color: #008000; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000; "&gt;            Console.WriteLine(&lt;/span&gt;&lt;span style="color: #000000; "&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000; "&gt;Obteniendo listas...&lt;/span&gt;&lt;span style="color: #000000; "&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000; "&gt;);&lt;br /&gt;            SPList list1 &lt;/span&gt;&lt;span style="color: #000000; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; "&gt; myWeb.Lists[&lt;/span&gt;&lt;span style="color: #000000; "&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000; "&gt;task list 1&lt;/span&gt;&lt;span style="color: #000000; "&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000; "&gt;];&lt;br /&gt;            SPList list2 &lt;/span&gt;&lt;span style="color: #000000; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; "&gt; myWeb.Lists[&lt;/span&gt;&lt;span style="color: #000000; "&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000; "&gt;task list 2&lt;/span&gt;&lt;span style="color: #000000; "&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000; "&gt;];&lt;br /&gt;            &lt;br /&gt;            &lt;/span&gt;&lt;span style="color: #008000; "&gt;//&lt;/span&gt;&lt;span style="color: #008000; "&gt;crea una nueva lista para copiar las dos anteriores&lt;/span&gt;&lt;span style="color: #008000; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000; "&gt;            Console.WriteLine(&lt;/span&gt;&lt;span style="color: #000000; "&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000; "&gt;Creando nueva lista...&lt;/span&gt;&lt;span style="color: #000000; "&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000; "&gt;);&lt;br /&gt;            Guid newListId &lt;/span&gt;&lt;span style="color: #000000; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; "&gt; myWeb.Lists.Add(&lt;/span&gt;&lt;span style="color: #000000; "&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000; "&gt;nueva Lista&lt;/span&gt;&lt;span style="color: #000000; "&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000; "&gt;,&lt;br /&gt;                &lt;/span&gt;&lt;span style="color: #000000; "&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000; "&gt;nueva lista a partir de otras dos&lt;/span&gt;&lt;span style="color: #000000; "&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000; "&gt;,&lt;br /&gt;                list1.BaseTemplate);&lt;br /&gt;                &lt;br /&gt;            SPList newList &lt;/span&gt;&lt;span style="color: #000000; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; "&gt; myWeb.Lists[newListId];&lt;br /&gt;            newList.Update();&lt;br /&gt;            &lt;br /&gt;            &lt;/span&gt;&lt;span style="color: #008000; "&gt;//&lt;/span&gt;&lt;span style="color: #008000; "&gt;copia la primera lista&lt;/span&gt;&lt;span style="color: #008000; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000; "&gt;            Console.WriteLine(&lt;/span&gt;&lt;span style="color: #000000; "&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000; "&gt;copiando lista 1&lt;/span&gt;&lt;span style="color: #000000; "&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000; "&gt;);&lt;br /&gt;            &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;foreach&lt;/span&gt;&lt;span style="color: #000000; "&gt; (SPListItem item &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;in&lt;/span&gt;&lt;span style="color: #000000; "&gt; list1.Items)&lt;br /&gt;            {&lt;br /&gt;                SPListItem newItem&lt;/span&gt;&lt;span style="color: #000000; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; "&gt;newList.Items.Add();&lt;br /&gt;                &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;foreach&lt;/span&gt;&lt;span style="color: #000000; "&gt; (SPField field &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;in&lt;/span&gt;&lt;span style="color: #000000; "&gt; item.Fields)&lt;br /&gt;                {&lt;br /&gt;                    &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;if&lt;/span&gt;&lt;span style="color: #000000; "&gt; (&lt;/span&gt;&lt;span style="color: #000000; "&gt;!&lt;/span&gt;&lt;span style="color: #000000; "&gt;field.ReadOnlyField)&lt;br /&gt;                    {&lt;br /&gt;                        &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;if&lt;/span&gt;&lt;span style="color: #000000; "&gt; (newList.Fields.GetField(field.Title) &lt;/span&gt;&lt;span style="color: #000000; "&gt;!=&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;null&lt;/span&gt;&lt;span style="color: #000000; "&gt;)&lt;br /&gt;                        {&lt;br /&gt;                            &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;try&lt;/span&gt;&lt;span style="color: #000000; "&gt;&lt;br /&gt;                            {&lt;br /&gt;                                newItem[field.Title] &lt;/span&gt;&lt;span style="color: #000000; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; "&gt; item[field.Title];&lt;br /&gt;                            }&lt;br /&gt;                            &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;catch&lt;/span&gt;&lt;span style="color: #000000; "&gt; (Exception ex)&lt;br /&gt;                            {&lt;br /&gt;                             &lt;/span&gt;&lt;span style="color: #008000; "&gt;//&lt;/span&gt;&lt;span style="color: #008000; "&gt;algunos campos puede que no se puedan &lt;br /&gt;                                &lt;/span&gt;&lt;span style="color: #008000; "&gt;//&lt;/span&gt;&lt;span style="color: #008000; "&gt;copiar (attachments, etc...)&lt;/span&gt;&lt;span style="color: #008000; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000; "&gt;                                Console.WriteLine(ex.Message);&lt;br /&gt;                            }&lt;br /&gt;                        }&lt;br /&gt;                    }&lt;br /&gt;                }&lt;br /&gt;                &lt;/span&gt;&lt;span style="color: #008000; "&gt;//&lt;/span&gt;&lt;span style="color: #008000; "&gt;necesario para crear el item&lt;/span&gt;&lt;span style="color: #008000; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000; "&gt;                newItem.Update(); &lt;br /&gt;            }&lt;br /&gt;            &lt;br /&gt;            &lt;/span&gt;&lt;span style="color: #008000; "&gt;//&lt;/span&gt;&lt;span style="color: #008000; "&gt;copia la segunda lista, c&amp;#243;digo exacto al anterior&lt;/span&gt;&lt;span style="color: #008000; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000; "&gt;            Console.WriteLine(&lt;/span&gt;&lt;span style="color: #000000; "&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000; "&gt;copiando lista 2&lt;/span&gt;&lt;span style="color: #000000; "&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000; "&gt;);&lt;br /&gt;            &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;foreach&lt;/span&gt;&lt;span style="color: #000000; "&gt; (SPListItem item &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;in&lt;/span&gt;&lt;span style="color: #000000; "&gt; list2.Items)&lt;br /&gt;            {&lt;br /&gt;                SPListItem newItem &lt;/span&gt;&lt;span style="color: #000000; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; "&gt; newList.Items.Add();&lt;br /&gt;                &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;foreach&lt;/span&gt;&lt;span style="color: #000000; "&gt; (SPField field &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;in&lt;/span&gt;&lt;span style="color: #000000; "&gt; item.Fields)&lt;br /&gt;                {&lt;br /&gt;                    &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;if&lt;/span&gt;&lt;span style="color: #000000; "&gt; (&lt;/span&gt;&lt;span style="color: #000000; "&gt;!&lt;/span&gt;&lt;span style="color: #000000; "&gt;field.ReadOnlyField)&lt;br /&gt;                    {&lt;br /&gt;                        &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;if&lt;/span&gt;&lt;span style="color: #000000; "&gt; (newList.Fields.GetField(field.Title) &lt;/span&gt;&lt;span style="color: #000000; "&gt;!=&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;null&lt;/span&gt;&lt;span style="color: #000000; "&gt;)&lt;br /&gt;                        {&lt;br /&gt;                            &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;try&lt;/span&gt;&lt;span style="color: #000000; "&gt;&lt;br /&gt;                            {&lt;br /&gt;                                newItem[field.Title] &lt;/span&gt;&lt;span style="color: #000000; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; "&gt; item[field.Title];&lt;br /&gt;                            }&lt;br /&gt;                            &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;catch&lt;/span&gt;&lt;span style="color: #000000; "&gt; (Exception ex)&lt;br /&gt;                            {&lt;br /&gt;                                Console.WriteLine(ex.Message);&lt;br /&gt;                            }&lt;br /&gt;                        }&lt;br /&gt;                    }&lt;br /&gt;                }&lt;br /&gt;                newItem.Update();&lt;br /&gt;                &lt;br /&gt;            }&lt;br /&gt;            &lt;br /&gt;            newList.Update();&lt;br /&gt;            Console.WriteLine(&lt;/span&gt;&lt;span style="color: #000000; "&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000; "&gt;Finalizado!!!&lt;/span&gt;&lt;span style="color: #000000; "&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000; "&gt;);&lt;br /&gt;            Console.ReadLine();&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4773349175418023585-4999282460396069961?l=iremote.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iremote.blogspot.com/feeds/4999282460396069961/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4773349175418023585&amp;postID=4999282460396069961' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4773349175418023585/posts/default/4999282460396069961'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4773349175418023585/posts/default/4999282460396069961'/><link rel='alternate' type='text/html' href='http://iremote.blogspot.com/2007/08/copia-de-listas-en-sharepoint.html' title='Copia de listas en Sharepoint'/><author><name>jmservera</name><uri>http://www.blogger.com/profile/17142856972629218862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4773349175418023585.post-6631172089980820225</id><published>2007-08-06T15:02:00.000+02:00</published><updated>2007-08-06T15:38:30.565+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Sharepoint'/><title type='text'>Webparts conectadas y el ciclo de vida</title><content type='html'>La mayoría de las quejas que oigo sobre el modelo de eventos de ASP.Net son por desconocimiento del &lt;a href="http://msdn2.microsoft.com/en-us/library/ms178472.aspx"&gt;ciclo de vida&lt;/a&gt; de las páginas. La más habitual suele estar relacionada con la gestión de eventos, ya que ocurren después del OnLoad de la página. Es muy importante conocer el orden pues en cada postback se vuelve a repetir todo el ciclo, así que aquí teneis una lista completa de qué pasa cuando se carga una página ASP.Net: &lt;a href="http://blogs.thesitedoctor.co.uk/tim/2006/06/30/Complete+Lifecycle+Of+An+ASPNet+Page+And+Controls.aspx"&gt;http://blogs.thesitedoctor.co.uk/tim/2006/06/30/Complete+Lifecycle+Of+An+ASPNet+Page+And+Controls.aspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Para el caso de webparts conectadas hay un paso adicional a tener en cuenta: los eventos de consumición de datos. Para no liarnos hay que tener en cuenta siempre este orden:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;OnInit&lt;/li&gt;&lt;li&gt;CreateChildControls&lt;/li&gt;&lt;li&gt;OnLoad&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Gestión de eventos de postback&lt;/strong&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color:#993300;"&gt;&lt;strong&gt;Consumición de datos de webparts conectadas&lt;/strong&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;OnPreRender&lt;/li&gt;&lt;li&gt;RenderContents&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4773349175418023585-6631172089980820225?l=iremote.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iremote.blogspot.com/feeds/6631172089980820225/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4773349175418023585&amp;postID=6631172089980820225' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4773349175418023585/posts/default/6631172089980820225'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4773349175418023585/posts/default/6631172089980820225'/><link rel='alternate' type='text/html' href='http://iremote.blogspot.com/2007/08/webparts-conectadas-y-el-ciclo-de-vida.html' title='Webparts conectadas y el ciclo de vida'/><author><name>jmservera</name><uri>http://www.blogger.com/profile/17142856972629218862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4773349175418023585.post-4415415896410320904</id><published>2007-08-06T13:14:00.000+02:00</published><updated>2007-08-06T15:02:18.819+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Sharepoint'/><title type='text'>Hands on lab de MOSS 2007 este viernes</title><content type='html'>Este viernes en &lt;a href="http://www.balearsinnovacio.com/"&gt;Innova&lt;/a&gt; realizan un Hands on Lab sobre Microsoft Office Sharepoint 2007: &lt;a href="http://baleareson.net/forums/p/184/430.aspx#430"&gt;http://baleareson.net/forums/p/184/430.aspx#430&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Un buen punto de partida para todos los que querais implementar un sitio colaborativo con &lt;a href="http://office.microsoft.com/en-us/sharepointserver/FX100492001033.aspx"&gt;MOSS2007&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4773349175418023585-4415415896410320904?l=iremote.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iremote.blogspot.com/feeds/4415415896410320904/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4773349175418023585&amp;postID=4415415896410320904' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4773349175418023585/posts/default/4415415896410320904'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4773349175418023585/posts/default/4415415896410320904'/><link rel='alternate' type='text/html' href='http://iremote.blogspot.com/2007/08/hands-on-lab-de-moss-2007-este-viernes.html' title='Hands on lab de MOSS 2007 este viernes'/><author><name>jmservera</name><uri>http://www.blogger.com/profile/17142856972629218862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4773349175418023585.post-1212122559325772588</id><published>2007-06-29T09:37:00.000+02:00</published><updated>2007-06-29T09:57:51.985+02:00</updated><title type='text'>Visual Studio Island en Second Life</title><content type='html'>&lt;a href="http://www.microsoft.com/"&gt;Microsoft&lt;/a&gt; se ha apuntado a la moda de promocionarse en &lt;a href="http://www.secondlife.com/"&gt;Second Life&lt;/a&gt; y el mes pasado abrió su &lt;a href="https://www.visualstudioisland.com/"&gt;Visual Studio Island&lt;/a&gt;. Forma parte de la campaña &lt;a href="http://www.defyallchallenges.com/"&gt;Defy All Callenges&lt;/a&gt; donde presentan las bonanzas de sus herramientas de desarrollo a modo de videojuego. Aquí podeis ver el video promocional de la isla:&lt;br /&gt;&lt;embed name="msn_soapbox" pluginspage="http://macromedia.com/go/getflashplayer" src="http://images.soapbox.msn.com/flash/soapbox1_1.swf" width="432" height="364" type="application/x-shockwave-flash" quality="high" wmode="transparent" flashvars="c=v&amp;v=d2b365ac-6754-47bf-883f-8aa39681a8ff"&gt;&lt;/embed&gt;&lt;br /&gt;&lt;a title="Visual Studio Island" href="http://soapbox.msn.com/video.aspx?vid=d2b365ac-6754-47bf-883f-8aa39681a8ff" target="_new"&gt;Video: Visual Studio Island&lt;/a&gt;&lt;br /&gt;Hay que resolver diez acertijos lógicos que te conducen a una zona VIP donde el jugador obtiene un premio (presuntamente tierras en &lt;a href="http://www.secondlife.com/"&gt;Second Life&lt;/a&gt;).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4773349175418023585-1212122559325772588?l=iremote.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iremote.blogspot.com/feeds/1212122559325772588/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4773349175418023585&amp;postID=1212122559325772588' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4773349175418023585/posts/default/1212122559325772588'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4773349175418023585/posts/default/1212122559325772588'/><link rel='alternate' type='text/html' href='http://iremote.blogspot.com/2007/06/visual-studio-island-en-second-life.html' title='Visual Studio Island en Second Life'/><author><name>jmservera</name><uri>http://www.blogger.com/profile/17142856972629218862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4773349175418023585.post-348729935205675527</id><published>2007-06-28T09:16:00.000+02:00</published><updated>2007-06-28T23:11:53.532+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Trucos'/><title type='text'>El caso de la TypeEntry vacía</title><content type='html'>Hace poco encontramos un extraño problema en un smart client conectado a través de remoting a las reglas de negocio. El caso es que utilizamos la clase &lt;a href="http://stage.ingorammer.com/RemotingFAQ/USEINTERFACESWITHCONFIGFILES.html"&gt;RemotingHelper&lt;/a&gt; de &lt;a href="http://www.thinktecture.com/staff/ingo"&gt;Ingo Rammer&lt;/a&gt; para facilitar el modo en que se acceden a las reglas de negocio, pero tenemos un interfaz que no se encuentra registrado en el app.config sino que lo registramos dinámicamente durante el incio del programa llamando a:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;RegisterWellKnownClientType(typeof(&lt;span style="color:#2b91af;"&gt;IMyInterface&lt;/span&gt;), url);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;A pesar de que el susodicho método no da ningún error, al hacer una llamada al método &lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;span style="color:#2b91af;"&gt;RemotingConfiguration&lt;/span&gt;.GetRegisteredWellKnownClientTypes()&lt;/span&gt; el objeto &lt;span style="font-family:courier new;font-size:85%;color:#2b91af;"&gt;WellKnownClientTypeEntry&lt;/span&gt; que se corresponde con el registro anterior tiene un null en su propiedad ObjectType!!!&lt;br /&gt;&lt;br /&gt;Tras investigar un poco y gracias al fuslogvw.exe descubrimos que la configuración de remoting no encontraba la librería que contenía el interfaz porque ésta estaba en el GAC y no en la carpeta de la aplicación y el registro de entradas de cliente no la encontraba.&lt;br /&gt;&lt;br /&gt;Para conseguir que lo anterior funcione existen dos alternativas:&lt;br /&gt;&lt;br /&gt;a) Copiar siempre la librería a la carpeta del ejecutable.&lt;br /&gt;b) Indicar al registro que también hay que buscar la librería en el GAC.&lt;br /&gt;&lt;br /&gt;Para la opción b (la buena) el truco está en crear la entrada manualmente usando el FullName de la librería, que contiene la versión y clave pública con la que se puede realizar la búsqueda en el GAC, con el siguiente código:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;span style="color:#2b91af;"&gt;WellKnownClientTypeEntry&lt;/span&gt; entry=new &lt;span style="color:#2b91af;"&gt;WellKnownClientTypeEntry&lt;/span&gt;(&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;typeof&lt;/span&gt;(&lt;span style="color:#2b91af;"&gt;IMyInterface&lt;/span&gt;).FullName,&lt;span style="color:#0000ff;"&gt;typeof&lt;/span&gt;(&lt;span style="color:#2b91af;"&gt;IMyInterface&lt;/span&gt;).Assembly.FullName,commonBusinessUrl);&lt;br /&gt;&lt;span style="color:#2b91af;"&gt;RemotingConfiguration&lt;/span&gt;.RegisterWellKnownClientType(entry);&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Así el registro se encargará de buscar la librería en el GAC si hace falta.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4773349175418023585-348729935205675527?l=iremote.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iremote.blogspot.com/feeds/348729935205675527/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4773349175418023585&amp;postID=348729935205675527' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4773349175418023585/posts/default/348729935205675527'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4773349175418023585/posts/default/348729935205675527'/><link rel='alternate' type='text/html' href='http://iremote.blogspot.com/2007/06/el-caso-de-la-typeentry-vaca.html' title='El caso de la TypeEntry vacía'/><author><name>jmservera</name><uri>http://www.blogger.com/profile/17142856972629218862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4773349175418023585.post-3980823944263644440</id><published>2007-06-27T10:37:00.000+02:00</published><updated>2007-06-27T11:07:13.871+02:00</updated><title type='text'>Unidades de prueba para aplicaciones multi-hilos</title><content type='html'>Muchas veces un pequeño cambio en una función puede romper o bloquear la ejecución de ésta cuando se ejecuta en multiples hilos. Integrar pruebas multi-hilos en nuestras unidades puede resultar complicado y pesado, así que &lt;a href="http://weblogs.asp.net/rosherove/default.aspx"&gt;Roy Osherove&lt;/a&gt; ha publicado una libreria para ayudarnos a probar:&lt;br /&gt;&lt;a href="http://weblogs.asp.net/rosherove/archive/2007/06/22/multi-threaded-unit-tests-with-osherove-threadtester.aspx"&gt;http://weblogs.asp.net/rosherove/archive/2007/06/22/multi-threaded-unit-tests-with-osherove-threadtester.aspx&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4773349175418023585-3980823944263644440?l=iremote.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iremote.blogspot.com/feeds/3980823944263644440/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4773349175418023585&amp;postID=3980823944263644440' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4773349175418023585/posts/default/3980823944263644440'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4773349175418023585/posts/default/3980823944263644440'/><link rel='alternate' type='text/html' href='http://iremote.blogspot.com/2007/06/unidades-de-prueba-para-aplicaciones.html' title='Unidades de prueba para aplicaciones multi-hilos'/><author><name>jmservera</name><uri>http://www.blogger.com/profile/17142856972629218862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4773349175418023585.post-9072289851975999281</id><published>2007-06-22T10:47:00.000+02:00</published><updated>2007-06-22T10:58:13.232+02:00</updated><title type='text'>ReSharper 3.0</title><content type='html'>&lt;a href="http://www.jetbrains.com/index.html"&gt;JetBrains&lt;/a&gt; ha anunciado la nueva versión de su Add-in para VS.Net &lt;a href="http://www.jetbrains.com/resharper/index.html"&gt;ReSharper 3.0&lt;/a&gt;, una herramienta de análisis y productividad casi imprescindible.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4773349175418023585-9072289851975999281?l=iremote.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iremote.blogspot.com/feeds/9072289851975999281/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4773349175418023585&amp;postID=9072289851975999281' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4773349175418023585/posts/default/9072289851975999281'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4773349175418023585/posts/default/9072289851975999281'/><link rel='alternate' type='text/html' href='http://iremote.blogspot.com/2007/06/resharper-30.html' title='ReSharper 3.0'/><author><name>jmservera</name><uri>http://www.blogger.com/profile/17142856972629218862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4773349175418023585.post-7585734344235041491</id><published>2007-06-21T09:51:00.000+02:00</published><updated>2007-06-21T10:02:44.630+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Baleares on .Net'/><category scheme='http://www.blogger.com/atom/ns#' term='Eventos'/><title type='text'>Evento: Aplicaciones de la web 2.0 con Microsoft AJAX Extensions</title><content type='html'>Ya tenemos fecha y url de registro para el próximo evento de &lt;a href="http://www.baleareson.net/"&gt;Baleares on .Net&lt;/a&gt;: será el día 29 de junio y os podeis registrar en: &lt;a href="http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032344604&amp;Culture=es-ES"&gt;http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032344604&amp;amp;Culture=es-ES&lt;/a&gt;&lt;br /&gt;En esta ocasión contamos con un ponente de lujo: &lt;a class="" href="http://blogs.clearscreen.com/migs" target="_blank"&gt;Miguel Jiménez&lt;/a&gt;, Software Engineer y responsable de formación en Ilitia Technologies, es MVP de Visual C# y ponente habitual en eventos de Microsoft como el&lt;a class="" href="http://www.microsoft.com/spanish/msdn/spain/eventos/remix/default.mspx" target="_blank"&gt; Remix 07&lt;/a&gt;.&lt;br /&gt;Los temas que tratará son:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Desarrollo de aplicaciones web dinámicas con VS.Net y AJAX&lt;/li&gt;&lt;li&gt;Cómo usar XML, CSS, XHTML, Javascript, JSON y peticiones asíncronas&lt;/li&gt;&lt;li&gt;Ejemplos prácticos a lo Web 2.0&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Nos vemos!&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4773349175418023585-7585734344235041491?l=iremote.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iremote.blogspot.com/feeds/7585734344235041491/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4773349175418023585&amp;postID=7585734344235041491' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4773349175418023585/posts/default/7585734344235041491'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4773349175418023585/posts/default/7585734344235041491'/><link rel='alternate' type='text/html' href='http://iremote.blogspot.com/2007/06/evento-ajax-en-baleares-on-net.html' title='Evento: Aplicaciones de la web 2.0 con Microsoft AJAX Extensions'/><author><name>jmservera</name><uri>http://www.blogger.com/profile/17142856972629218862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4773349175418023585.post-4003903104515945493</id><published>2007-06-14T17:55:00.000+02:00</published><updated>2007-06-14T18:02:48.280+02:00</updated><title type='text'>Gestión de proyectos para TFS basado en Scrum</title><content type='html'>Microsoft acaba de publicar una herramienta web de gestión de proyectos para la metodología &lt;a href="http://scrumforteamsystem.com/ProcessGuidance/"&gt;Scrum&lt;/a&gt; sobre TFS que se integra con Excel y Project: &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=55a4bde6-10a7-4c41-9938-f388c1ed15e9&amp;amp;displaylang=en"&gt;eScrum 1.0&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4773349175418023585-4003903104515945493?l=iremote.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iremote.blogspot.com/feeds/4003903104515945493/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4773349175418023585&amp;postID=4003903104515945493' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4773349175418023585/posts/default/4003903104515945493'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4773349175418023585/posts/default/4003903104515945493'/><link rel='alternate' type='text/html' href='http://iremote.blogspot.com/2007/06/gestin-de-proyectos-para-tfs-basado-en.html' title='Gestión de proyectos para TFS basado en Scrum'/><author><name>jmservera</name><uri>http://www.blogger.com/profile/17142856972629218862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4773349175418023585.post-3882973930184672138</id><published>2007-06-12T13:31:00.000+02:00</published><updated>2007-06-12T13:33:50.583+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Silverlight'/><title type='text'>Introducción a Silverlight</title><content type='html'>En el MSDNFlash de hoy he encontrado un artículo muy interesante de introducción a &lt;a href="http://msdn2.microsoft.com/en-us/library/bb404703.aspx"&gt;Silverlight&lt;/a&gt;. Lo podéis leer en: &lt;a href="http://www.microsoft.com/spanish/msdn/articulos/archivo/010507/voices/bb404300.mspx"&gt;http://www.microsoft.com/spanish/msdn/articulos/archivo/010507/voices/bb404300.mspx&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4773349175418023585-3882973930184672138?l=iremote.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iremote.blogspot.com/feeds/3882973930184672138/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4773349175418023585&amp;postID=3882973930184672138' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4773349175418023585/posts/default/3882973930184672138'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4773349175418023585/posts/default/3882973930184672138'/><link rel='alternate' type='text/html' href='http://iremote.blogspot.com/2007/06/introduccin-silverlight.html' title='Introducción a Silverlight'/><author><name>jmservera</name><uri>http://www.blogger.com/profile/17142856972629218862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4773349175418023585.post-1824753001221599153</id><published>2007-06-07T10:16:00.000+02:00</published><updated>2007-06-07T10:58:07.988+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WPF'/><category scheme='http://www.blogger.com/atom/ns#' term='Orcas'/><title type='text'>Acropolis o cómo programar a golpe de click</title><content type='html'>Siguiendo los pasos de &lt;a href="http://msdn2.microsoft.com/en-us/library/aa480450.aspx"&gt;Composite UI Application Block&lt;/a&gt; (&lt;a href="http://www.codeplex.com/Project/ProjectDirectory.aspx?ProjectSearchText=cab"&gt;CAB&lt;/a&gt;) y &lt;a href="http://msdn2.microsoft.com/en-us/library/aa480482.aspx"&gt;Smart Client Software Factory&lt;/a&gt; llega una nueva plataforma con conjunto de patrones y herramientas para facilitar el desarrollo modular de aplicaciones Smart Client. Con Orcas y &lt;a href="http://windowsclient.net/Acropolis/"&gt;Acropolis &lt;/a&gt;el desarrollo visual de aplicaciones da un paso adelante, el día de mañana podremos definir toda la aplicación en el diseñador.&lt;br /&gt;&lt;br /&gt;Glenn Block explica en su &lt;a href="http://blogs.msdn.com/gblock/default.aspx"&gt;blog&lt;/a&gt; cómo funciona e incluso ha escrito un pequeño &lt;a href="http://blogs.msdn.com/gblock/archive/2007/06/06/acropolis-the-future-of-smart-client.aspx"&gt;faq&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;La web del proyecto está en &lt;a href="http://www.windowsclient.net/Acropolis"&gt;http://www.windowsclient.net/Acropolis&lt;/a&gt;. Encontraréis un &lt;a href="http://download.microsoft.com/download/9/8/4/984da9b4-b5ff-45ba-b673-03117c393238/Acropolis%20-%20Getting%20Started.wmv"&gt;vídeo de introducción&lt;/a&gt; para que se os vaya haciendo la boca agua.&lt;br /&gt;&lt;br /&gt;Como leí en un viejo libro sobre &lt;a href="http://es.wikipedia.org/wiki/Delphi"&gt;Delphi&lt;/a&gt;, la informática cada vez se parece más a la fontanería.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/MoreAcropolisbuzz_B26A/image.png"&gt;&lt;img style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 320px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/MoreAcropolisbuzz_B26A/image.png" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4773349175418023585-1824753001221599153?l=iremote.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iremote.blogspot.com/feeds/1824753001221599153/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4773349175418023585&amp;postID=1824753001221599153' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4773349175418023585/posts/default/1824753001221599153'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4773349175418023585/posts/default/1824753001221599153'/><link rel='alternate' type='text/html' href='http://iremote.blogspot.com/2007/06/acropolis-o-cmo-programar-golpe-de.html' title='Acropolis o cómo programar a golpe de click'/><author><name>jmservera</name><uri>http://www.blogger.com/profile/17142856972629218862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4773349175418023585.post-799741440606597647</id><published>2007-06-01T17:13:00.001+02:00</published><updated>2007-06-01T17:16:02.434+02:00</updated><title type='text'>LiveScribe Smartpen</title><content type='html'>Los nuevos ordenadores portátiles se llevan en el bolsillo...&lt;br&gt;&lt;br /&gt;&lt;embed src="http://services.brightcove.com/services/viewer/federated_f8/452319854" bgcolor="#FFFFFF" flashVars="videoId=932887791&amp;playerId=452319854&amp;viewerSecureGatewayURL=https://services.brightcove.com/services/amfgateway&amp;servicesURL=http://services.brightcove.com/services&amp;cdnURL=http://admin.brightcove.com&amp;domain=embed&amp;autoStart=false&amp;" base="http://admin.brightcove.com" name="flashObj" width="486" height="412" seamlesstabbing="false" type="application/x-shockwave-flash" swLiveConnect="true" pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash"&gt;&lt;/embed&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4773349175418023585-799741440606597647?l=iremote.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iremote.blogspot.com/feeds/799741440606597647/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4773349175418023585&amp;postID=799741440606597647' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4773349175418023585/posts/default/799741440606597647'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4773349175418023585/posts/default/799741440606597647'/><link rel='alternate' type='text/html' href='http://iremote.blogspot.com/2007/06/livescribe-smartpen_01.html' title='LiveScribe Smartpen'/><author><name>jmservera</name><uri>http://www.blogger.com/profile/17142856972629218862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4773349175418023585.post-7059882086022180726</id><published>2007-06-01T09:46:00.000+02:00</published><updated>2007-06-01T09:57:34.818+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WinForms'/><category scheme='http://www.blogger.com/atom/ns#' term='Trucos'/><title type='text'>¿Hay vida después del Trace?</title><content type='html'>A los programadores nos suele gustar mucho escribir en la consola lo que están haciendo nuestras funciones.&lt;br /&gt;Algunas veces es porque simplemente nos gusta ver que el interior funciona, como cuando abríamos un coche de scalextric o desmontábamos un reloj, pero normalmente es para saber qué está ocurriendo dentro del código sin hacer interminables sesiones de debug.&lt;br /&gt;Cuando la programamos con múltiples hilos, eventos y cientos de controles, poner puntos de debug se vuelve una auténtica locura. Unas pocas líneas llamando a métodos de la clase System.Diagnostics.Trace nos pueden ayudar mucho. Pero, ¿qué pasa cuando no tenemos enganchado el debugger del VS.Net?, ¿adónde van los mensajes de Trace?&lt;br /&gt;El mejor amigo del programador es aquí la clase &lt;a href="http://msdn2.microsoft.com/en-us/library/system.diagnostics.tracelistener(vs.80).aspx"&gt;System.Diagnostics.TraceListener&lt;/a&gt;. Heredando de ella podemos crear fácilmente nuestra propia ventana de Trace sin necesidad de tener un debugger para poder verlos. Simplemente hemos de implementar dos métodos que escriban en nuestra ventana:&lt;br /&gt;&lt;br /&gt;He aquí una muestra de código, os dejo para vosotros la implementación de la TraceWindow:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:gray;"&gt;&amp;lt;summary&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:green;"&gt; Trace Listener que dirige el trace a una ventana.&lt;br /&gt;&lt;/span&gt;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:gray;"&gt;&amp;lt;/summary&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;public&lt;/span&gt; &lt;span style="color:blue;"&gt;class&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;WindowTraceListener&lt;/span&gt; : &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:#2b91af;"&gt;TraceListener&lt;br /&gt;&lt;/span&gt;{&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:blue;"&gt;private &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;TraceWindow&lt;/span&gt; traceWin;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:gray;"&gt;&amp;lt;summary&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:green;"&gt; Crea una instancia de WindowTraceListenerClass&lt;br /&gt;&lt;/span&gt;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:gray;"&gt;&amp;lt;/summary&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;public &lt;/span&gt;WindowTraceListener() : &lt;span style="color:blue;"&gt;base&lt;/span&gt;()&lt;br /&gt;{&lt;br /&gt;ShowTraceWindow();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:gray;"&gt;&amp;lt;summary&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:green;"&gt; Abre la ventana de Trace.&lt;br /&gt;&lt;/span&gt;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:gray;"&gt;&amp;lt;/summary&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;public &lt;/span&gt;&lt;span style="color:blue;"&gt;void&lt;/span&gt; ShowTraceWindow()&lt;br /&gt;{&lt;br /&gt;&lt;span style="color:#2b91af;"&gt;ThreadPool&lt;/span&gt;.QueueUserWorkItem(&lt;br /&gt;&lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;WaitCallback&lt;/span&gt;(ShowTraceWindowInThread));&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:gray;"&gt;&amp;lt;summary&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:green;"&gt; Inicializa una nueva instancia de la clase WindowTraceListener&lt;br /&gt;&lt;/span&gt;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:green;"&gt; usando el nombre espcificado.&lt;br /&gt;&lt;/span&gt;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:gray;"&gt;&amp;lt;/summary&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt; &lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;param name="name"&amp;gt;&lt;/span&gt;&lt;span style="color:green;"&gt;nombre para el listener.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:gray;"&gt;&amp;lt;/param&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;public&lt;/span&gt; WindowTraceListener(&lt;span style="color:blue;"&gt;string&lt;/span&gt; name) : &lt;span style="color:blue;"&gt;base&lt;/span&gt;(name)&lt;br /&gt;{&lt;br /&gt;ShowTraceWindow();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:green;"&gt;// ejecuta la ventana en otro thread para evitar atascar nuestra aplicacion&lt;br /&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;private&lt;/span&gt; &lt;span style="color:blue;"&gt;void&lt;/span&gt; ShowTraceWindowInThread(&lt;span style="color:blue;"&gt;object&lt;/span&gt; o)&lt;br /&gt;{&lt;br /&gt;&lt;span style="color:blue;"&gt;if&lt;/span&gt; (traceWin == &lt;span style="color:blue;"&gt;null&lt;/span&gt;)&lt;br /&gt;{&lt;br /&gt;traceWin = &lt;span style="color:blue;"&gt;new &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;TraceWindow&lt;/span&gt;();&lt;br /&gt;traceWin.FormClosed += &lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;FormClosedEventHandler&lt;/span&gt;(traceWin_FormClosed);&lt;br /&gt;traceWin.ShowDialog();&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:blue;"&gt;void&lt;/span&gt; traceWin_FormClosed(&lt;span style="color:blue;"&gt;object &lt;/span&gt;sender, &lt;span style="color:#2b91af;"&gt;FormClosedEventArgs&lt;/span&gt; e)&lt;br /&gt;{&lt;br /&gt;traceWin.Dispose();&lt;br /&gt;traceWin = &lt;span style="color:blue;"&gt;null&lt;/span&gt;;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:gray;"&gt;&amp;lt;summary&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:green;"&gt; Escribe un mensaje a la ventana TraceWindow.&lt;br /&gt;&lt;/span&gt;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:gray;"&gt;&amp;lt;/summary&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt; &lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;param name="message"&amp;gt;&lt;/span&gt;&lt;span style="color:green;"&gt;el mensaje a escribir.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:gray;"&gt;&amp;lt;/param&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;public&lt;/span&gt; &lt;span style="color:blue;"&gt;override&lt;/span&gt; &lt;span style="color:blue;"&gt;void&lt;/span&gt; Write(&lt;span style="color:blue;"&gt;string&lt;/span&gt; message)&lt;br /&gt;{&lt;br /&gt;traceWin.Write(message);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:gray;"&gt;&amp;lt;summary&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:green;"&gt; Escribe un mensaje a la ventana TraceWindow.&lt;br /&gt;&lt;/span&gt;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:gray;"&gt;&amp;lt;/summary&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color:gray;"&gt;///&lt;/span&gt;&lt;span style="color:green;"&gt; &lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;param name="message"&amp;gt;&lt;/span&gt;&lt;span style="color:green;"&gt;el mensaje a escribir.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:gray;"&gt;&amp;lt;/param&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;public&lt;/span&gt; &lt;span style="color:blue;"&gt;override&lt;/span&gt; &lt;span style="color:blue;"&gt;void&lt;/span&gt; WriteLine(&lt;span style="color:blue;"&gt;string&lt;/span&gt; message)&lt;br /&gt;{&lt;br /&gt;traceWin.WriteLine(message);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4773349175418023585-7059882086022180726?l=iremote.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iremote.blogspot.com/feeds/7059882086022180726/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4773349175418023585&amp;postID=7059882086022180726' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4773349175418023585/posts/default/7059882086022180726'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4773349175418023585/posts/default/7059882086022180726'/><link rel='alternate' type='text/html' href='http://iremote.blogspot.com/2007/06/hay-vida-despus-del-trace.html' title='¿Hay vida después del Trace?'/><author><name>jmservera</name><uri>http://www.blogger.com/profile/17142856972629218862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4773349175418023585.post-1736318217743876951</id><published>2007-05-28T09:29:00.000+02:00</published><updated>2007-05-28T09:33:16.638+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Baleares on .Net'/><category scheme='http://www.blogger.com/atom/ns#' term='Eventos'/><title type='text'>Evento: Tecnologías AJAX</title><content type='html'>La web 2.0 invade internet, pero ¿qué es?. Únete a nostros el próximo 8 de junio donde veremos qué tecnologías existen para la creación de nuevos interfaces de usuario web en las aplicaciones: uso de AJAX, frameworks Javascript para programación .NET, Lazslo, Flex, JavaFX y MS Silverlight. Ejemplos de uso y resultados visibles desde la nueva web.&lt;br /&gt;&lt;br /&gt;Javi Jofre de &lt;a href="http://www.balearsinnovacio.com"&gt;Innova &lt;/a&gt;nos ofrecerá una &lt;a href="http://www.baleareson.net/forums/t/114.aspx"&gt;interesante charla&lt;/a&gt; sobre el tema. Os esperamos a todos.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4773349175418023585-1736318217743876951?l=iremote.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iremote.blogspot.com/feeds/1736318217743876951/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4773349175418023585&amp;postID=1736318217743876951' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4773349175418023585/posts/default/1736318217743876951'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4773349175418023585/posts/default/1736318217743876951'/><link rel='alternate' type='text/html' href='http://iremote.blogspot.com/2007/05/evento-tecnologas-ajax.html' title='Evento: Tecnologías AJAX'/><author><name>jmservera</name><uri>http://www.blogger.com/profile/17142856972629218862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4773349175418023585.post-7203083122429933454</id><published>2007-05-16T10:07:00.000+02:00</published><updated>2007-05-16T10:11:47.447+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VS.Net'/><title type='text'>Sandcastle para documentar APIs</title><content type='html'>Si queréis generar ficheros chm de documentación tan chulos como los del msdn ya podéis usar la misma herramienta que usa Microsoft para crearlos: &lt;a href="http://www.sandcastledocs.com/Wiki%20Pages/Home.aspx"&gt;Sandcastle&lt;/a&gt;. Existe un CTP descargable en: &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=E82EA71D-DA89-42EE-A715-696E3A4873B2&amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyId=E82EA71D-DA89-42EE-A715-696E3A4873B2&amp;amp;displaylang=en&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4773349175418023585-7203083122429933454?l=iremote.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iremote.blogspot.com/feeds/7203083122429933454/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4773349175418023585&amp;postID=7203083122429933454' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4773349175418023585/posts/default/7203083122429933454'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4773349175418023585/posts/default/7203083122429933454'/><link rel='alternate' type='text/html' href='http://iremote.blogspot.com/2007/05/sandcastle-para-documentar-apis.html' title='Sandcastle para documentar APIs'/><author><name>jmservera</name><uri>http://www.blogger.com/profile/17142856972629218862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4773349175418023585.post-4080214050824509198</id><published>2007-05-09T20:45:00.000+02:00</published><updated>2007-05-09T20:50:25.725+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Baleares on .Net'/><category scheme='http://www.blogger.com/atom/ns#' term='Eventos'/><category scheme='http://www.blogger.com/atom/ns#' term='WCF'/><title type='text'>Evento: Ficheros de la presentación WCF disponibles</title><content type='html'>Ya están disponibles en el foro de &lt;a href="http://www.baleareson.net"&gt;Baleares On .Net&lt;/a&gt; la presentación powerpoint y las demos del evento del pasado día 4 sobre &lt;a href="http://wcf.netfx3.com/"&gt;Windows Communication Foundation&lt;/a&gt; que hizo Salva.&lt;br /&gt;Las podéis encontrar en: &lt;a href="http://www.baleareson.net/files/folders/presentaciones/entry240.aspx"&gt;http://www.baleareson.net/files/folders/presentaciones/entry240.aspx&lt;/a&gt;&lt;br /&gt;Gracias a todos por asistir.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4773349175418023585-4080214050824509198?l=iremote.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iremote.blogspot.com/feeds/4080214050824509198/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4773349175418023585&amp;postID=4080214050824509198' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4773349175418023585/posts/default/4080214050824509198'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4773349175418023585/posts/default/4080214050824509198'/><link rel='alternate' type='text/html' href='http://iremote.blogspot.com/2007/05/evento-ficheros-de-la-presentacin-wcf.html' title='Evento: Ficheros de la presentación WCF disponibles'/><author><name>jmservera</name><uri>http://www.blogger.com/profile/17142856972629218862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4773349175418023585.post-5855494170150443452</id><published>2007-05-07T17:18:00.000+02:00</published><updated>2007-05-08T10:08:28.203+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WinForms'/><category scheme='http://www.blogger.com/atom/ns#' term='Trucos'/><title type='text'>Rendimiento, contadores y mediciones</title><content type='html'>Detectar puntos que degradan la velocidad de una aplicación no siempre es fácil. Si preguntais por ahí normalmente os dirán que useis &lt;a href="http://support.microsoft.com/kb/316365"&gt;contadores de rendimiento&lt;/a&gt;; eso está muy bien para detectar cuellos de botella en aplicaciones servidor, pero en otros escenarios como Windows Forms o para medir operaciones concretas son muy poco manejables.&lt;br /&gt;Para estos últimos podemos comprarnos un buen &lt;a href="http://www.jetbrains.com/profiler/"&gt;profiler&lt;/a&gt; o hacerlo a la antigua contando cuanto tiempo de procesador usa cada llamada. En el .Net framework tenemos una clase que nos facilitará algo esas mediciones dentro del namespace System.Diagnostics llamada &lt;a href="http://msdn2.microsoft.com/en-us/library/system.diagnostics.stopwatch(vs.80).aspx"&gt;Stopwatch&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;System.Diagnostics.&lt;span style="color:#00cccc;"&gt;Stopwatch &lt;/span&gt;sw =&lt;/span&gt; &lt;span style="font-family:Courier New;font-size:85%;"&gt;System.Diagnostics.&lt;span style="color:#00cccc;"&gt;Stopwatch&lt;/span&gt;.StartNew(); &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:#000000;"&gt;presuntaLlamadaCostosa&lt;/span&gt;();&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:courier new;color:#000000;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;System.Diagnostics.&lt;span style="color:#00cccc;"&gt;Trace&lt;/span&gt;.WriteLine(&lt;/span&gt;&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:blue;"&gt;string&lt;/span&gt;.Format(&lt;span style="color:red;"&gt;"La llamada tardó {0}ms ({1}ticks)"&lt;/span&gt;,&lt;/span&gt;&lt;/span&gt; &lt;span style="font-family:Courier New;font-size:85%;"&gt;sw.ElapsedMilliseconds, sw.ElapsedTicks) );&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4773349175418023585-5855494170150443452?l=iremote.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iremote.blogspot.com/feeds/5855494170150443452/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4773349175418023585&amp;postID=5855494170150443452' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4773349175418023585/posts/default/5855494170150443452'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4773349175418023585/posts/default/5855494170150443452'/><link rel='alternate' type='text/html' href='http://iremote.blogspot.com/2007/05/midiendo-velocidad.html' title='Rendimiento, contadores y mediciones'/><author><name>jmservera</name><uri>http://www.blogger.com/profile/17142856972629218862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4773349175418023585.post-5491923727574475025</id><published>2007-05-07T13:06:00.000+02:00</published><updated>2007-05-07T13:10:49.219+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Silverlight'/><title type='text'>Silverlight para Linux</title><content type='html'>En el &lt;a href="http://www.mono-project.com/Main_Page"&gt;proyecto Mono&lt;/a&gt; no pierden el tiempo. Ya están preparando &lt;a href="http://www.mono-project.com/Moonlight"&gt;Moonlight&lt;/a&gt;, lo que será la implementación de &lt;a href="http://silverlight.net"&gt;Silverlight 1.1&lt;/a&gt; para Linux.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4773349175418023585-5491923727574475025?l=iremote.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iremote.blogspot.com/feeds/5491923727574475025/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4773349175418023585&amp;postID=5491923727574475025' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4773349175418023585/posts/default/5491923727574475025'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4773349175418023585/posts/default/5491923727574475025'/><link rel='alternate' type='text/html' href='http://iremote.blogspot.com/2007/05/silverlight-para-linux.html' title='Silverlight para Linux'/><author><name>jmservera</name><uri>http://www.blogger.com/profile/17142856972629218862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4773349175418023585.post-5570410173529642993</id><published>2007-05-02T12:44:00.000+02:00</published><updated>2007-05-02T12:47:44.386+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Orcas'/><category scheme='http://www.blogger.com/atom/ns#' term='VS.Net'/><title type='text'>.Net Framework 3.5 Beta 1</title><content type='html'>Ya se ha publicado la beta 1 del .Net Framework 3.5. Descargable en: &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=E3715E6F-E123-428B-8A0F-028AFB9E0322&amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyId=E3715E6F-E123-428B-8A0F-028AFB9E0322&amp;amp;displaylang=en&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4773349175418023585-5570410173529642993?l=iremote.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iremote.blogspot.com/feeds/5570410173529642993/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4773349175418023585&amp;postID=5570410173529642993' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4773349175418023585/posts/default/5570410173529642993'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4773349175418023585/posts/default/5570410173529642993'/><link rel='alternate' type='text/html' href='http://iremote.blogspot.com/2007/05/net-framework-35-beta-1.html' title='.Net Framework 3.5 Beta 1'/><author><name>jmservera</name><uri>http://www.blogger.com/profile/17142856972629218862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4773349175418023585.post-7100685935558512497</id><published>2007-05-02T12:01:00.000+02:00</published><updated>2007-05-02T12:43:54.340+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Silverlight'/><title type='text'>Silverlight y DLR</title><content type='html'>Mientras Silverlight 1.0 aún está en beta ya se ha publicado la versión alpha de &lt;a href="http://download.microsoft.com/download/f/2/e/f2ecc2ad-c498-4538-8a2c-15eb157c00a7/SL_Map_FinalNET.png"&gt;Silverlight 1.1&lt;/a&gt;, que incluye Dynamic Language Runtime (DLR).&lt;br /&gt;Como ya casi todos sabemos, Silverlight es un plug-in multiplataforma (windows y mac os x) para los navegadores más importantes del mercado (iexplorer, firefox, safari y opera).&lt;br /&gt;Hasta ahí nada muy diferente de lo que es el Flash. El problema venía a la hora de programar dentro de la plataforma. Programar sobre un Flash una aplicación Ajax era realmente complicado.&lt;br /&gt;Ahora con el DLR tendremos todas las ventajas de los diferentes lenguajes de script pero combinado con cualquier elemento de .Net 3.0 y 3.5.&lt;br /&gt;Por el momento la implementación inicial incluye ya cuatro lenguajes: IronPython, JavaScript, Ruby y Visual Basic.&lt;br /&gt;&lt;br /&gt;Al &lt;a href="http://www.adobe.com/products/flex/productinfo/features/"&gt;Adobe Flex&lt;/a&gt; le ha salido un duro competidor.&lt;br /&gt;&lt;br /&gt;Para leer más:&lt;br /&gt;&lt;a href="http://www.eweek.com/article2/0,1895,2123859,00.asp"&gt;http://www.eweek.com/article2/0,1895,2123859,00.asp&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.microsoft.com/silverlight/default.aspx"&gt;http://www.microsoft.com/silverlight/default.aspx&lt;/a&gt;&lt;br /&gt;Demos:&lt;br /&gt;&lt;a href="http://delay.members.winisp.net/SilverlightAirlinesDemo/"&gt;http://delay.members.winisp.net/SilverlightAirlinesDemo/&lt;/a&gt; (&lt;a href="http://delay.members.winisp.net/SilverlightAirlinesDemo/SilverlightAirlinesDemo.zip"&gt;código fuente de la demo&lt;/a&gt;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4773349175418023585-7100685935558512497?l=iremote.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iremote.blogspot.com/feeds/7100685935558512497/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4773349175418023585&amp;postID=7100685935558512497' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4773349175418023585/posts/default/7100685935558512497'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4773349175418023585/posts/default/7100685935558512497'/><link rel='alternate' type='text/html' href='http://iremote.blogspot.com/2007/05/silverlight-y-dlr.html' title='Silverlight y DLR'/><author><name>jmservera</name><uri>http://www.blogger.com/profile/17142856972629218862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4773349175418023585.post-8450839688428080502</id><published>2007-04-19T10:46:00.000+02:00</published><updated>2007-04-25T00:32:29.305+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Baleares on .Net'/><category scheme='http://www.blogger.com/atom/ns#' term='Eventos'/><title type='text'>Evento: Fundamentos de Windows Communication Foundation</title><content type='html'>Ya estamos preparando el segundo evento del NUG &lt;a href="http://www.baleareson.net"&gt;Baleares on .Net&lt;/a&gt;. Será el próximo día 4 de mayo a las 19:00.&lt;br /&gt;&lt;br /&gt;Podeis inscribiros en:&lt;br /&gt;&lt;a href="http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032337577&amp;Culture=es-ES"&gt;http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032337577&amp;amp;Culture=es-ES&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4773349175418023585-8450839688428080502?l=iremote.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iremote.blogspot.com/feeds/8450839688428080502/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4773349175418023585&amp;postID=8450839688428080502' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4773349175418023585/posts/default/8450839688428080502'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4773349175418023585/posts/default/8450839688428080502'/><link rel='alternate' type='text/html' href='http://iremote.blogspot.com/2007/04/evento-fundamentos-de-windows.html' title='Evento: Fundamentos de Windows Communication Foundation'/><author><name>jmservera</name><uri>http://www.blogger.com/profile/17142856972629218862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4773349175418023585.post-3042898315295641527</id><published>2007-04-17T09:31:00.000+02:00</published><updated>2007-04-17T09:49:55.693+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VS.Net'/><title type='text'>Microsoft SilverLight, no más confusión con WPF</title><content type='html'>Microsoft ha presentado en el &lt;a href="http://www.nab.org/AM/Template.cfm?Section=Home"&gt;NAB&lt;/a&gt; &lt;a href="http://www.microsoft.com/silverlight/default_01.aspx"&gt;SilverLigth&lt;/a&gt;, conocido anteriormente como WPF/E. Se trata de un plugin estilo Flash que incorpora video de alta definición. Formará parte del núcleo de la plataforma .Net y se complementa definitivamente con el &lt;a href="http://www.microsoft.com/Expression/products/overview.aspx?key=media"&gt;Expression Media Encoder&lt;/a&gt;, un nuevo producto para la &lt;a href="http://www.microsoft.com/expression/default.aspx"&gt;Expression Suite&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4773349175418023585-3042898315295641527?l=iremote.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iremote.blogspot.com/feeds/3042898315295641527/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4773349175418023585&amp;postID=3042898315295641527' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4773349175418023585/posts/default/3042898315295641527'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4773349175418023585/posts/default/3042898315295641527'/><link rel='alternate' type='text/html' href='http://iremote.blogspot.com/2007/04/microsoft-silverlight-no-ms-confusin.html' title='Microsoft SilverLight, no más confusión con WPF'/><author><name>jmservera</name><uri>http://www.blogger.com/profile/17142856972629218862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4773349175418023585.post-37191673832154792</id><published>2007-04-10T12:59:00.000+02:00</published><updated>2007-04-10T13:10:22.283+02:00</updated><title type='text'>El fenómeno wiki en el msdn</title><content type='html'>Poco a poco se va extendiendo el fenómeno &lt;a href="http://en.wikipedia.org/wiki/Wiki"&gt;wiki&lt;/a&gt; y este año le ha tocado al MSDN. Por ahora sólo es posible en el &lt;a href="http://msdn2.microsoft.com/en-us/library/default.aspx"&gt;sitio en inglés&lt;/a&gt; y &lt;a href="http://blogs.msdn.com/msdnwiki/archive/2007/03/09/msdnwiki-community-content-update-released.aspx"&gt;parcialmente en algunos idiomas&lt;/a&gt;. Todavía no han añadido el castellano así que seguiremos esperando.&lt;br /&gt;Quien quiera estar al día puede visitar: &lt;a href="http://blogs.msdn.com/msdnwiki/"&gt;http://blogs.msdn.com/msdnwiki/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4773349175418023585-37191673832154792?l=iremote.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iremote.blogspot.com/feeds/37191673832154792/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4773349175418023585&amp;postID=37191673832154792' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4773349175418023585/posts/default/37191673832154792'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4773349175418023585/posts/default/37191673832154792'/><link rel='alternate' type='text/html' href='http://iremote.blogspot.com/2007/04/el-fenmeno-wiki-en-el-msdn.html' title='El fenómeno wiki en el msdn'/><author><name>jmservera</name><uri>http://www.blogger.com/profile/17142856972629218862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4773349175418023585.post-2288475224249905586</id><published>2007-04-03T15:29:00.000+02:00</published><updated>2007-04-03T16:52:21.613+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Baleares on .Net'/><category scheme='http://www.blogger.com/atom/ns#' term='Eventos'/><title type='text'>Baleares on .Net inaugurado!</title><content type='html'>El pasado viernes 30 de Marzo inauguramos el grupo con un evento sobre las &lt;a href="http://www.baleareson.net/forums/thread/41.aspx"&gt;Novedades en C#3.0&lt;/a&gt;. Os podeis descargar la presentación del mismo en &lt;a href="http://www.baleareson.net/files/default.aspx"&gt;http://www.baleareson.net/files/default.aspx&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://blogs.clearscreen.com/jfbonnin/"&gt;Jose Fco. Bonnin&lt;/a&gt; dió una charla muy interesante, estuvo repleta de &lt;a href="http://www.baleareson.net/forums/thread/162.aspx"&gt;ejemplos prácticos&lt;/a&gt; del nuevo C# y de LINQ. En la próxima Salvador de la Rosa nos hablará sobre &lt;a href="http://msdn2.microsoft.com/en-us/netframework/aa663324.aspx"&gt;WCF&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4773349175418023585-2288475224249905586?l=iremote.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iremote.blogspot.com/feeds/2288475224249905586/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4773349175418023585&amp;postID=2288475224249905586' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4773349175418023585/posts/default/2288475224249905586'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4773349175418023585/posts/default/2288475224249905586'/><link rel='alternate' type='text/html' href='http://iremote.blogspot.com/2007/04/baleares-on-net-inaugurado.html' title='Baleares on .Net inaugurado!'/><author><name>jmservera</name><uri>http://www.blogger.com/profile/17142856972629218862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4773349175418023585.post-5129141732494086424</id><published>2007-03-22T09:31:00.000+01:00</published><updated>2007-03-23T00:55:52.239+01:00</updated><title type='text'>Software y Publicidad...</title><content type='html'>Mientras &lt;a href="http://www.windows-now.com/blogs/robert/archive/2007/03/21/google-is-not-a-search-company.aspx"&gt;algunos insisten&lt;/a&gt;, no sin razón, que Google no es ni un buscador ni una companía de software sino todo lo contrario, hoy mismo &lt;a href="http://blogs.zdnet.com/microsoft/?p=339"&gt;Microsoft ha movido Windows Live Search &lt;/a&gt;del grupo Live al grupo de su plataforma de &lt;a href="http://advertising.microsoft.com/microsoft-adcenter"&gt;adCenter&lt;/a&gt;. Por algo será.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4773349175418023585-5129141732494086424?l=iremote.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iremote.blogspot.com/feeds/5129141732494086424/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4773349175418023585&amp;postID=5129141732494086424' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4773349175418023585/posts/default/5129141732494086424'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4773349175418023585/posts/default/5129141732494086424'/><link rel='alternate' type='text/html' href='http://iremote.blogspot.com/2007/03/software-y-publicidad.html' title='Software y Publicidad...'/><author><name>jmservera</name><uri>http://www.blogger.com/profile/17142856972629218862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4773349175418023585.post-3058304501246000742</id><published>2007-03-22T01:13:00.000+01:00</published><updated>2007-03-22T10:49:34.198+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Usabilidad'/><title type='text'>Menos es más</title><content type='html'>Ayer, tras un buen rato discutiendo sobre una opción difícil de comprender (y por lo tanto de explicar) en un menú que además cada uno entendía a su manera, decidimos quitarla para facilitarle la vida al usuario.&lt;br /&gt;Muchas veces tendemos a desarrollar software tremendamente flexible, basando nuestro GUI directamente en la parte estructural y sin tener en cuenta que toda esa flexibilidad va a acabar despistando del todo al usuario.&lt;br /&gt;De esta manera olvidamos que el GUI debe esconder al usuario la lógica de la aplicación. Muchas de las opciones que le queremos dar vienen implícitas en las acciones que el usuario ejecuta.&lt;br /&gt;&lt;br /&gt;Como apunta David Carmona en una entrada de su blog: &lt;a href="http://blogs.msdn.com/tropezones/archive/2007/03/20/piensa-en-el-usuario.aspx"&gt;piensa en el usuario&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4773349175418023585-3058304501246000742?l=iremote.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iremote.blogspot.com/feeds/3058304501246000742/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4773349175418023585&amp;postID=3058304501246000742' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4773349175418023585/posts/default/3058304501246000742'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4773349175418023585/posts/default/3058304501246000742'/><link rel='alternate' type='text/html' href='http://iremote.blogspot.com/2007/03/menos-es-ms.html' title='Menos es más'/><author><name>jmservera</name><uri>http://www.blogger.com/profile/17142856972629218862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4773349175418023585.post-3464751756092211335</id><published>2007-03-15T13:44:00.000+01:00</published><updated>2007-03-15T13:50:05.174+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VS.Net'/><title type='text'>Resource Refactoring</title><content type='html'>&lt;div&gt;Mientras estaba leyendo un &lt;a href="http://www.microsoft.com/spanish/msdn/articulos/archivo/190207/voices/reviewingmanagedcode.mspx"&gt;artículo sobre la revisión de código&lt;/a&gt; he encontrado una herramienta que nos solucionará la vida a más de uno en nuestras revisiones del fxCop: la &lt;a href="http://www.codeplex.com/ResourceRefactoring"&gt;Herramienta de Refactoring de Recursos&lt;/a&gt;. Se integra directamente en el vs.net, ahora mismo voy a probarla:&lt;/div&gt;&lt;img style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 320px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://www.codeplex.com/ResourceRefactoring/Project/FileDownload.aspx?DownloadId=3748" border="0" /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4773349175418023585-3464751756092211335?l=iremote.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iremote.blogspot.com/feeds/3464751756092211335/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4773349175418023585&amp;postID=3464751756092211335' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4773349175418023585/posts/default/3464751756092211335'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4773349175418023585/posts/default/3464751756092211335'/><link rel='alternate' type='text/html' href='http://iremote.blogspot.com/2007/03/resource-refactoring.html' title='Resource Refactoring'/><author><name>jmservera</name><uri>http://www.blogger.com/profile/17142856972629218862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4773349175418023585.post-1266358159949989944</id><published>2007-03-14T10:19:00.000+01:00</published><updated>2007-03-14T10:57:08.565+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Orcas'/><title type='text'>Nuevas clases de biblioteca en "Orcas"</title><content type='html'>Ha salido otro artículo en el msdn sobre algunas clases nuevas que incorprará Orcas: &lt;a href="http://msdn.microsoft.com/msdnmag/issues/07/04/CLRInsideOut/Default.aspx?loc=es"&gt;http://msdn.microsoft.com/msdnmag/issues/07/04/CLRInsideOut/Default.aspx?loc=es&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;De especial interés son las &lt;a href="http://msdn.microsoft.com/msdnmag/issues/07/04/CLRInsideOut/Default.aspx?loc=es#S7"&gt;nuevas clases para comunicación entre procesos (IPC)&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4773349175418023585-1266358159949989944?l=iremote.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iremote.blogspot.com/feeds/1266358159949989944/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4773349175418023585&amp;postID=1266358159949989944' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4773349175418023585/posts/default/1266358159949989944'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4773349175418023585/posts/default/1266358159949989944'/><link rel='alternate' type='text/html' href='http://iremote.blogspot.com/2007/03/nuevas-clases-de-biblioteca-en-orcas.html' title='Nuevas clases de biblioteca en &quot;Orcas&quot;'/><author><name>jmservera</name><uri>http://www.blogger.com/profile/17142856972629218862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4773349175418023585.post-2254575100250261804</id><published>2007-03-06T11:08:00.000+01:00</published><updated>2007-03-06T11:25:04.210+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WinForms'/><title type='text'>Pesadillas con el BindingContext</title><content type='html'>Para todos aquellos incautos que penséis que podéis heredar de la clase BindingContext... olvidadlo.&lt;br /&gt;No entiendo muy bien porqué se diseñó así esta clase:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;El evento CollectionChanged jamás se ejecuta.&lt;/li&gt;&lt;li&gt;El método sobrecargable AddCore no tiene el parámetro datamember y además no es llamado nunca.&lt;/li&gt;&lt;li&gt;Los indexer no son virtual, así que no es posible sobrecargarlos (si se declaran con un new no sirve puesto que las llamadas se hacen a través de la clase base).&lt;/li&gt;&lt;li&gt;No se puede cambiar la lista interna que maneja la colección de bindings.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;En fin, que la única manera de manejar lo que haya dentro del BindingContext es iterando dentro de sus items en algún momento después del constructor y después rezar para que nadie añada nada a la lista más tarde.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4773349175418023585-2254575100250261804?l=iremote.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iremote.blogspot.com/feeds/2254575100250261804/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4773349175418023585&amp;postID=2254575100250261804' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4773349175418023585/posts/default/2254575100250261804'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4773349175418023585/posts/default/2254575100250261804'/><link rel='alternate' type='text/html' href='http://iremote.blogspot.com/2007/03/pesadillas-con-el-bindingcontext.html' title='Pesadillas con el BindingContext'/><author><name>jmservera</name><uri>http://www.blogger.com/profile/17142856972629218862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4773349175418023585.post-1767301643473646851</id><published>2007-03-05T17:29:00.000+01:00</published><updated>2007-03-05T17:39:00.660+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Orcas'/><category scheme='http://www.blogger.com/atom/ns#' term='VS.Net'/><title type='text'>FxCop en Orcas: Code Metrics!</title><content type='html'>En el nuevo FxCop de Orcas han incluido una nueva característica que me parece especialmente interesante: las &lt;a href="http://blogs.msdn.com/fxcop/archive/2007/02/28/announcing-visual-studio-code-metrics.aspx"&gt;métricas de código&lt;/a&gt;. Quizás no es tan sofisticada como &lt;a href="http://www.ndepend.com/"&gt;NDepend&lt;/a&gt;, pero da una idea clara de cuán complejo es nuestro código y dónde es más probable que necesitemos hacer &lt;a href="http://www.refactoring.com/"&gt;refactor&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4773349175418023585-1767301643473646851?l=iremote.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iremote.blogspot.com/feeds/1767301643473646851/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4773349175418023585&amp;postID=1767301643473646851' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4773349175418023585/posts/default/1767301643473646851'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4773349175418023585/posts/default/1767301643473646851'/><link rel='alternate' type='text/html' href='http://iremote.blogspot.com/2007/03/fxcop-en-orcas-code-metrics.html' title='FxCop en Orcas: Code Metrics!'/><author><name>jmservera</name><uri>http://www.blogger.com/profile/17142856972629218862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4773349175418023585.post-5876177111773546693</id><published>2007-03-05T11:11:00.000+01:00</published><updated>2007-03-05T11:28:37.186+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Orcas'/><category scheme='http://www.blogger.com/atom/ns#' term='VS.Net'/><title type='text'>Orcas CTP Marzo 2007</title><content type='html'>Ya se ha publicado una nueva versión CTP de Orcas. Podremos encontrar dos versiones:&lt;br /&gt;1. &lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=281fcb3d-5e79-4126-b4c0-8db6332de26e&amp;displaylang=en"&gt;Visual Studio Team Suite&lt;/a&gt;&lt;br /&gt;2. &lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=B533619A-0008-4DD6-9ED1-47D482683C78&amp;amp;displaylang=en"&gt;Visual Studio Team Suite con el nuevo TFS&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Esta nueva versión incluye la implementación de &lt;a href="http://msdn2.microsoft.com/en-us/netframework/aa904594.aspx"&gt;LINQ&lt;/a&gt; en C# 3.0 y VB 9.0, editores visuales para WPF, mejoras en el interface WMI, nuevas características en el Team Build y mayor escalabilidad del TFS.&lt;br /&gt;Entre las mejoras del Team Build cabe destacar la incorporación de la &lt;a href="http://www.martinfowler.com/articles/continuousIntegration.html"&gt;integración contínua&lt;/a&gt; como parte integrada del sistema.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4773349175418023585-5876177111773546693?l=iremote.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iremote.blogspot.com/feeds/5876177111773546693/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4773349175418023585&amp;postID=5876177111773546693' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4773349175418023585/posts/default/5876177111773546693'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4773349175418023585/posts/default/5876177111773546693'/><link rel='alternate' type='text/html' href='http://iremote.blogspot.com/2007/03/orcas-ctp-marzo-2007.html' title='Orcas CTP Marzo 2007'/><author><name>jmservera</name><uri>http://www.blogger.com/profile/17142856972629218862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4773349175418023585.post-4922103234282458521</id><published>2007-03-02T10:01:00.000+01:00</published><updated>2007-03-02T10:17:18.310+01:00</updated><title type='text'>Botones Redondos y WPF</title><content type='html'>Hace unos años expliqué en &lt;a href="http://www.microsoft.com/spanish/msdn/comunidad/mtj.net/voices/art158.asp"&gt;un artículo&lt;/a&gt; cómo crear botones redondos en WinForms. Para ello había que escribir un montón de código y crear un control específico heredando de la clase Button.&lt;br /&gt;Hoy en día con &lt;a href="http://msdn2.microsoft.com/en-us/library/ms750441.aspx"&gt;WPF&lt;/a&gt; todo es mucho más fácil, sobretodo gracias a &lt;a href="http://www.microsoft.com/products/expression/en/expression-blend/default.mspx"&gt;Expression&lt;/a&gt;. Con escribir un poco de &lt;a href="http://msdn2.microsoft.com/en-us/library/ms752059.aspx"&gt;XAML&lt;/a&gt; ya lo tenemos todo hecho, incluso con Hit Test adaptado a la forma del control: &lt;a href="http://www.baleareson.net/forums/42/ShowThread.aspx#42"&gt;http://www.baleareson.net/forums/42/ShowThread.aspx#42&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4773349175418023585-4922103234282458521?l=iremote.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iremote.blogspot.com/feeds/4922103234282458521/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4773349175418023585&amp;postID=4922103234282458521' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4773349175418023585/posts/default/4922103234282458521'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4773349175418023585/posts/default/4922103234282458521'/><link rel='alternate' type='text/html' href='http://iremote.blogspot.com/2007/03/botones-redondos-y-wpf.html' title='Botones Redondos y WPF'/><author><name>jmservera</name><uri>http://www.blogger.com/profile/17142856972629218862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4773349175418023585.post-4279335691997824061</id><published>2007-02-28T09:39:00.000+01:00</published><updated>2007-02-28T11:07:22.530+01:00</updated><title type='text'>Transmitiendo ExtendedProperties con Remoting</title><content type='html'>Uno de los valores que habitualmente se devuelven desde una llamada a un método remoto es el &lt;a href="http://msdn2.microsoft.com/es-es/library/system.data.dataset(VS.80).aspx"&gt;DataSet&lt;/a&gt;. Si es nuestro caso y además usamos la propiedad &lt;a href="http://msdn2.microsoft.com/es-es/library/system.data.dataset.extendedproperties(VS.80).aspx"&gt;ExtendedProperties&lt;/a&gt; para almacenar otros datos que acompañan al &lt;a href="http://msdn2.microsoft.com/es-es/library/system.data.dataset(VS.80).aspx"&gt;DataSet&lt;/a&gt; nos daremos cuenta que sólo las propiedades introducidas como string se transmiten a través de la capa de remoting.&lt;br /&gt;Una posible solución es cambiar el formato de serialización del dataset a binario cambiando la propiedad &lt;a href="http://msdn2.microsoft.com/es-es/library/system.data.dataset.remotingformat(VS.80).aspx"&gt;RemotingFormat&lt;/a&gt;, pero eso no siempre es posible ya que al usar un canal http y &lt;a href="http://msdn2.microsoft.com/es-es/library/system.runtime.serialization.formatters.soap.soapformatter(VS.80).aspx"&gt;SOAP&lt;/a&gt; el DataSet volverá ignorará esa propiedad.&lt;br /&gt;Para poder transmitir nuestros valores existe una solución rápida y que no afecta a cómo se programan las reglas de negocio: añadir una capa de serialización al canal de remoting.&lt;br /&gt;&lt;br /&gt;Para ello necesitaremos un ServerChannelSink para serializar las propiedades y un ClientChannelSink para deserializarlas.&lt;br /&gt;&lt;br /&gt;Creamos la clase:&lt;pre&gt;public class ExtendedPropertiesServerSink :&lt;br /&gt; BaseChannelObjectWithProperties, IServerChannelSink&lt;br /&gt;{&lt;br /&gt;    IServerChannelSink _next;&lt;br /&gt;&lt;br /&gt;    public ExtendedPropertiesServerSink(IServerChannelSink next)&lt;br /&gt;    {&lt;br /&gt;        _next = next;&lt;br /&gt;    }&lt;/pre&gt;&lt;br /&gt;En la implementación del método ProcessMessage del interface tenemos el truco... Si la respuesta del método contiene un DataSet o DataTable entonces serializamos las extended properties.&lt;pre&gt;public ServerProcessing ProcessMessage(IServerChannelSinkStack sinkStack,&lt;br /&gt;    System.Runtime.Remoting.Messaging.IMessage requestMsg,&lt;br /&gt;    ITransportHeaders requestHeaders, System.IO.Stream requestStream,&lt;br /&gt;    out System.Runtime.Remoting.Messaging.IMessage responseMsg,&lt;br /&gt;    out ITransportHeaders responseHeaders,&lt;br /&gt;    out System.IO.Stream responseStream)&lt;br /&gt;{&lt;br /&gt;    if (_next != null)&lt;br /&gt;    {&lt;br /&gt;        ServerProcessing spres = _next.ProcessMessage(sinkStack,&lt;br /&gt;            requestMsg, requestHeaders, requestStream, out responseMsg,&lt;br /&gt;            out responseHeaders, out responseStream);&lt;br /&gt;&lt;br /&gt;        ReturnMessage message = responseMsg as ReturnMessage;&lt;br /&gt;        if (message != null)&lt;br /&gt;        {&lt;br /&gt;            DataSet ds = message.ReturnValue as DataSet;&lt;br /&gt;            if (ds != null)&lt;br /&gt;            {&lt;br /&gt;                if (ds.RemotingFormat == SerializationFormat.Xml)&lt;br /&gt;                {&lt;br /&gt;                    // serializa las propiedades extendidas del dataset&lt;br /&gt;                    serializeExtendedProperties(ds.ExtendedProperties);&lt;br /&gt;                    // para cada tabla también hace lo mismo&lt;br /&gt;                    foreach (DataTable t in ds.Tables)&lt;br /&gt;                    {&lt;br /&gt;                        serializeExtendedProperties(t.ExtendedProperties);&lt;br /&gt;                    }&lt;br /&gt;                }&lt;br /&gt;            }&lt;br /&gt;            else&lt;br /&gt;            {&lt;br /&gt;                DataTable t = message.ReturnValue as DataTable;&lt;br /&gt;                if (t != null)&lt;br /&gt;                {&lt;br /&gt;                    if (t.RemotingFormat == SerializationFormat.Xml)&lt;br /&gt;                        serializeExtendedProperties(t.ExtendedProperties);&lt;br /&gt;                }&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        return spres;&lt;br /&gt;    }&lt;br /&gt;    else&lt;br /&gt;    {&lt;br /&gt;        responseMsg = null;&lt;br /&gt;        responseHeaders = null;&lt;br /&gt;        responseStream = null;&lt;br /&gt;        return new ServerProcessing();&lt;br /&gt;    }&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;El método para serializar necesita que la clase sea &lt;a href="http://www.elguille.info/colabora/puntoNET/soylan_XmlSerializer.htm"&gt;serializable en xml&lt;/a&gt; (se puede controlar mediante atributos o implementando el interface &lt;a href="http://msdn2.microsoft.com/es-es/library/system.xml.serialization.ixmlserializable(VS.80).aspx"&gt;IXmlSerializable&lt;/a&gt;):&lt;pre&gt;private static void&lt;br /&gt;serializeExtendedProperties(PropertyCollection propertyCollection)&lt;br /&gt;{&lt;br /&gt;    foreach (object key in propertyCollection.Keys)&lt;br /&gt;    {&lt;br /&gt;        MiClase value = propertyCollection[key] as MiClase;&lt;br /&gt;        if (value != null)&lt;br /&gt;        {&lt;br /&gt;            XmlSerializer ser = new XmlSerializer(value.GetType());&lt;br /&gt;            using (StringWriter w = new StringWriter())&lt;br /&gt;            {&lt;br /&gt;                ser.Serialize(w, value);&lt;br /&gt;                propertyCollection[key] =&lt;br /&gt;                    w.ToString();&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;Una vez serializadas las propiedades habrá que crear un deserializador en un ClientChannelSink y enlazarlos ambos con sendos ChannelSinkProvider para poderlos añadir a la configuración de remoting. En la parte servidor hay que colocar la entrada tras la del formatter SOAP:&lt;pre&gt;&amp;lt;channel ref="http" port="5001"&lt;br /&gt;displayName="http with props encoding"&amp;gt;&lt;br /&gt; &amp;lt;serverProviders&amp;gt;&lt;br /&gt;  &amp;lt;!-- support soap encoding --&amp;gt;&lt;br /&gt;  &amp;lt;formatter ref="soap" typeFilterLevel="Full" /&amp;gt;&lt;br /&gt;  &amp;lt;!-- serialization layer --&amp;gt;&lt;br /&gt;  &amp;lt;provider type="RemotingTest.ExtendedPropsServerSinkProvider,&lt;br /&gt;   RemotingTest"/&amp;gt;&lt;br /&gt; &amp;lt;/serverProviders&amp;gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4773349175418023585-4279335691997824061?l=iremote.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iremote.blogspot.com/feeds/4279335691997824061/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4773349175418023585&amp;postID=4279335691997824061' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4773349175418023585/posts/default/4279335691997824061'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4773349175418023585/posts/default/4279335691997824061'/><link rel='alternate' type='text/html' href='http://iremote.blogspot.com/2007/02/transmitiendo-extendedproperties-con.html' title='Transmitiendo ExtendedProperties con Remoting'/><author><name>jmservera</name><uri>http://www.blogger.com/profile/17142856972629218862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4773349175418023585.post-1958356379755529188</id><published>2007-02-21T09:50:00.000+01:00</published><updated>2007-02-21T11:37:24.261+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WinForms'/><title type='text'>Acelerando WinForms</title><content type='html'>Recientemente tuvimos que revisar una aplicación winforms que se había vuelto muy lenta, cada vez que se instanciaba una nueva ventana o usercontrol tardaba varios segundos en abrirse.&lt;br /&gt;Tras revisar el código vimos que algunos controles se inicializaban en los métodos &lt;a href="http://msdn2.microsoft.com/en-us/library/system.windows.forms.usercontrol.onload.aspx"&gt;OnLoad&lt;/a&gt; y &lt;a href="http://msdn2.microsoft.com/en-us/library/system.windows.forms.control.oncreatecontrol.aspx"&gt;OnCreateControl&lt;/a&gt;. Es un error muy común, ya que hasta que el control no se ha creado no podemos saber si todas sus propiedades tienen el valor correcto y a veces hay propiedades que dependen de otras.&lt;br /&gt;Como sabemos no podemos controlar el orden de creación de los controles en un formulario y no podemos asegurar que un control siempre se creará antes que otro o que una propiedad se asignará antes que otra.&lt;br /&gt;Por nuestra experiencia sabíamos que eso podía ser un problema así que decidimos cambiar algunos controles e implementar en ellos el interface &lt;a href="http://msdn2.microsoft.com/en-gb/library/system.componentmodel.isupportinitialize.aspx"&gt;ISupportInitialize&lt;/a&gt;.&lt;br /&gt;Este interface es soportado directamente por el entorno de diseño y nos permite ejecutar código en el método &lt;a href="http://msdn2.microsoft.com/en-gb/library/system.componentmodel.isupportinitialize.endinit.aspx"&gt;EndInit&lt;/a&gt; con la garantía de que todos los controles en el formulario ya han sido creados.&lt;br /&gt;El truco está en sustituir el código que había en el OnLoad y moverlo al método EndInit, de esta manera el código se ejecuta dentro del constructor con una ganancia de casi el 50% en velocidad.&lt;br /&gt;&lt;br /&gt;Al final de los cambios llegamos a las siguientes conclusiones:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Siempre que sea posible realizar la inicialización en el constructor.&lt;/li&gt;&lt;li&gt;Evitar iteraciones sobre los controles durante los métodos OnLoad y OnCreateControl. Son mucho más rápidas si se realizan dentro del constructor, incluso usando reflection.&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4773349175418023585-1958356379755529188?l=iremote.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iremote.blogspot.com/feeds/1958356379755529188/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4773349175418023585&amp;postID=1958356379755529188' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4773349175418023585/posts/default/1958356379755529188'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4773349175418023585/posts/default/1958356379755529188'/><link rel='alternate' type='text/html' href='http://iremote.blogspot.com/2007/02/acelerando-winforms.html' title='Acelerando WinForms'/><author><name>jmservera</name><uri>http://www.blogger.com/profile/17142856972629218862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4773349175418023585.post-611408707692531229</id><published>2007-02-21T09:41:00.000+01:00</published><updated>2007-02-21T09:48:04.425+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Baleares on .Net'/><category scheme='http://www.blogger.com/atom/ns#' term='Eventos'/><category scheme='http://www.blogger.com/atom/ns#' term='NUG'/><title type='text'>Primer evento en Baleares on .Net</title><content type='html'>El NUG &lt;a href="http://www.baleareson.net/"&gt;Baleares on .Net&lt;/a&gt; empieza a dar sus primeros pasos.&lt;br /&gt;El viernes 30 de Marzo se realizará la presentación oficial del grupo y una &lt;a href="http://www.baleareson.net/forums/thread/41.aspx"&gt;charla&lt;/a&gt; sobre las novedades que traerá C# 3.0.&lt;br /&gt;Será en las oficinas de &lt;a href="http://www.balearsinnovacio.com/blog/"&gt;Innova&lt;/a&gt;, más información en la web.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4773349175418023585-611408707692531229?l=iremote.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iremote.blogspot.com/feeds/611408707692531229/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4773349175418023585&amp;postID=611408707692531229' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4773349175418023585/posts/default/611408707692531229'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4773349175418023585/posts/default/611408707692531229'/><link rel='alternate' type='text/html' href='http://iremote.blogspot.com/2007/02/primer-evento-en-baleares-on-net.html' title='Primer evento en Baleares on .Net'/><author><name>jmservera</name><uri>http://www.blogger.com/profile/17142856972629218862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4773349175418023585.post-4130588873113653333</id><published>2007-02-20T21:08:00.000+01:00</published><updated>2007-02-20T21:32:50.274+01:00</updated><title type='text'>Presentación</title><content type='html'>¡Hola!&lt;br /&gt;&lt;p&gt;Soy Juanma, desarrollador desde hace demasiados años. Hace algún tiempo empecé a colaborar con la comunidad escribiendo &lt;a href="http://www.microsoft.com/spanish/msdn/comunidad/mtj.net/voices/art158.asp"&gt;algunos artículos &lt;/a&gt;sobre programación en C#, pero el verdadero detonante de empezar esta bitácora ha sido el nacimiento del grupo de usuarios (NUG) &lt;a href="http://www.baleareson.net"&gt;Baleares On .Net&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.baleareson.net"&gt;&lt;img style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 320px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://www.baleareson.net/Themes/default/images/common/BalearesOnnet.png" border="0" /&gt;&lt;/a&gt;Aquí encontrareis artículos, ideas y noticias relacionadas con el NUG y con el mundo .Net en general.&lt;/p&gt;&lt;p&gt;¡Bienvenidos!&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4773349175418023585-4130588873113653333?l=iremote.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iremote.blogspot.com/feeds/4130588873113653333/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4773349175418023585&amp;postID=4130588873113653333' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4773349175418023585/posts/default/4130588873113653333'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4773349175418023585/posts/default/4130588873113653333'/><link rel='alternate' type='text/html' href='http://iremote.blogspot.com/2007/02/presentacin.html' title='Presentación'/><author><name>jmservera</name><uri>http://www.blogger.com/profile/17142856972629218862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
