<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0">
  <channel>
    <title>byteabyte.net</title>
    <link>http://www.byteabyte.net/</link>
    <description />
    <language>en-us</language>
    <copyright>Alejandro Mezcua</copyright>
    <lastBuildDate>Thu, 24 Apr 2008 10:19:23 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 2.0.7226.0</generator>
    <managingEditor>alejandro.mezcua@byteabyte.net</managingEditor>
    <webMaster>alejandro.mezcua@byteabyte.net</webMaster>
    <item>
      <trackback:ping>http://www.byteabyte.net/Trackback.aspx?guid=0f3687c0-7b3b-4f88-a13b-6c6448e7bd5e</trackback:ping>
      <pingback:server>http://www.byteabyte.net/pingback.aspx</pingback:server>
      <pingback:target>http://www.byteabyte.net/PermaLink,guid,0f3687c0-7b3b-4f88-a13b-6c6448e7bd5e.aspx</pingback:target>
      <dc:creator>Alejandro Mezcua</dc:creator>
      <wfw:comment>http://www.byteabyte.net/CommentView,guid,0f3687c0-7b3b-4f88-a13b-6c6448e7bd5e.aspx</wfw:comment>
      <wfw:commentRss>http://www.byteabyte.net/SyndicationService.asmx/GetEntryCommentsRss?guid=0f3687c0-7b3b-4f88-a13b-6c6448e7bd5e</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Sync, sync, sync...
</p>
        <p>
El panorama de los sistemas de sincronización ofrecidos por Microsoft ultimamente
crece muy rápidamente lo que nos deja a los programadores con la duda de qué
sistema escoger y si hemos hecho bien al escoger uno u otro. Desde siempre ha existido
en Windows el servicio de replicación de ficheros, usado normalmente por los
adminitradores de la red para replicar archivos relacionados con los perfiles de usuario
y demás. Aunque es un servicio de replicación genérico, no es común
verlo en otros escenarios.
</p>
        <p>
En el caso de replicación de datos de una base de datos, SQL Server ofrece desde
hace mucho tiempo sus propios mecanismos de replicación. Merge, que funciona
en modo de publicador-suscriptor permite que un servidor publique datos y que otros
se suscriban a los mismos para recibir copias de la información. Este mecanismo
está disponible también para replicar datos a SQL Server Compact Edition
(SQLCE) muy usado en dispositivos móviles. Funciona muy bien pero todo el control
está en manos del administrador del servidor de base de datos lo que crea en
algunos casos problemas con los desarrolladores. Por otro lado existe RDA (Remote
Data Access), útil para replicar datos igualmente entre SQL Server y SQLCE. Es
un sistema más ligero, que no requiere configuración especial del servidor
de base de datos ya que a éste sólo se le pasan consultas, pero ofrece menos
posibilidades que el anterior en cuanto a seguimiento de los datos y resolución
de conflictos. Estos dos sistemas además tienen la pega de que sólo funcionan
con SQL Server y no con ningún otro tipo de bases de datos.
</p>
        <p>
Recientemente han aparecido otros dos nuevos mecanismos de replicación, orientados
a los desarrolladores pricipalmente.
</p>
        <p>
Sync Services for ADO.NET permite replicar datos entre dos sistemas para los que existan
proveedores ADO.NET permitiendo por ejemplo la replicación de datos entre SQLCE
y Oracle o cualquier otro escenario similar. La idea inicial de este entorno es la
de sustituir RDA mejorándolo en muchos aspectos. Este entorno <a href="http://www.microsoft.com/Downloads/details.aspx?familyid=75FEF59F-1B5E-49BC-A21A-9EF4F34DE6FC&amp;displaylang=en" target="_blank">está
ya disponible también para dispositivos móviles</a>.
</p>
        <p>
A continuación, y siguiendo la misma filosofía, aparece <a href="http://msdn2.microsoft.com/en-us/sync/default.aspx" target="_blank">Sync
Framework</a>. Este es un entorno más general, que engloba al anterior, y cuyo
objetivo es el de <strong>permitir la sincronización de cualquier fuente de datos</strong>,
sean bases de datos u otra cosa. De hecho en su primera versión pública
se incluye a "Sync Services for ADO.NET", a "Sync Services for File
Systems" y a "Sync Services for FeedSync", permitiendo la sicronización
respectivamente de dos fuentes cualquiera de bases de datos para las que tengamos
un proveedor ADO.NET, la sincronización de ficheros entre dos puntos, o la sincronización
de "feeds" RSS o ATOM entre dos puntos. Como se puede imaginar lo que se
proporciona es un mecanismo mediante el cual, si disponemos de los <strong>proveedores
adecuados</strong>, se podrá <em>sincronizar cualquier cosa sincronizable</em>.
Microsoft proporcionará inicialmente unos proveedores pero se le deja al programador
la libertad de programarse sus propios proveedores para sincronizar cualquier tipo
de información.
</p>
        <p>
Finalmente se acaba de anunciar el lanzamiento de <a href="https://www.mesh.com/" target="_blank">Live
Mesh</a>, siendo uno de sus objetivos la sincronización de datos. Según
la información publicada, incialmente es capaz de sincronizar archivos de forma
muy similar a como lo hace <a href="http://office.microsoft.com/es-es/groove/HA101656333082.aspx" target="_blank">Groove</a>,
conectando dos o más puntos a través de Internet de forma transparente.
Pero según se comenta, toda la plataforma estará disponible para que los
desarrolladores puedan crear aplicaciones que sean capaces de sincronizar cualquier
tipo de datos de forma igualmente transparente con lo que podría usarse en principio
como sustituto de los métodos mencionados anteriormente. Si esto es así,
este mecanismo tiene una gran ventaja con respecto a los anteriores. En los anteriores
es necesaria una conexión explícila entre los puntos que sincronizan que
sea direccionable, es decir, necesito saber desde el origen la dirección IP de
destino. En el caso de Mesh, la localización de los diferentes dispositivos es
transparente y se podrían sincronizar datos <strong>entre equipos que estén
localizados tras NATs y firewalls</strong> sin problema lo que proporciona muchas
ventajas a la hora de sincronizar datos sobre todo para dispositivos móviles.
</p>
        <p>
En fin, cada vez hay más y más opciones. Esperemos a las versiones finales
a ver cómo se consolidan las diferentes ofertas de sincronización.
</p>
        <img width="0" height="0" src="http://www.byteabyte.net/aggbug.ashx?id=0f3687c0-7b3b-4f88-a13b-6c6448e7bd5e" />
      </body>
      <title>Sync Services for ADO.NET vs. Sync Framework vs. ... &amp;iquest;Live Mesh?</title>
      <guid isPermaLink="false">http://www.byteabyte.net/PermaLink,guid,0f3687c0-7b3b-4f88-a13b-6c6448e7bd5e.aspx</guid>
      <link>http://www.byteabyte.net/2008/04/24/SyncServicesForADONETVsSyncFrameworkVsIquestLiveMesh.aspx</link>
      <pubDate>Thu, 24 Apr 2008 10:19:23 GMT</pubDate>
      <description>&lt;p&gt;
Sync, sync, sync...
&lt;/p&gt;
&lt;p&gt;
El panorama de los sistemas de sincronizaci&amp;#243;n ofrecidos por Microsoft ultimamente
crece muy r&amp;#225;pidamente lo que nos deja a los programadores con la duda de qu&amp;#233;
sistema escoger y si hemos hecho bien al escoger uno u otro. Desde siempre ha existido
en Windows el servicio de replicaci&amp;#243;n de ficheros, usado normalmente por los
adminitradores de la red para replicar archivos relacionados con los perfiles de usuario
y dem&amp;#225;s. Aunque es un servicio de replicaci&amp;#243;n gen&amp;#233;rico, no es com&amp;#250;n
verlo en otros escenarios.
&lt;/p&gt;
&lt;p&gt;
En el caso de replicaci&amp;#243;n de datos de una base de datos, SQL Server ofrece desde
hace mucho tiempo sus propios mecanismos de replicaci&amp;#243;n. Merge, que funciona
en modo de publicador-suscriptor permite que un servidor publique datos y que otros
se suscriban a los mismos para recibir copias de la informaci&amp;#243;n. Este mecanismo
est&amp;#225; disponible tambi&amp;#233;n para replicar datos a SQL Server Compact Edition
(SQLCE) muy usado en dispositivos m&amp;#243;viles. Funciona muy bien pero todo el control
est&amp;#225; en manos del administrador del servidor de base de datos lo que crea en
algunos casos problemas con los desarrolladores. Por otro lado existe RDA (Remote
Data Access), &amp;#250;til para replicar datos igualmente entre SQL Server y SQLCE. Es
un sistema m&amp;#225;s ligero, que no requiere configuraci&amp;#243;n especial del servidor
de base de datos ya que a &amp;#233;ste s&amp;#243;lo se le pasan consultas, pero ofrece menos
posibilidades que el anterior en cuanto a seguimiento de los datos y resoluci&amp;#243;n
de conflictos. Estos dos sistemas adem&amp;#225;s tienen la pega de que s&amp;#243;lo funcionan
con SQL Server y no con ning&amp;#250;n otro tipo de bases de datos.
&lt;/p&gt;
&lt;p&gt;
Recientemente han aparecido otros dos nuevos mecanismos de replicaci&amp;#243;n, orientados
a los desarrolladores pricipalmente.
&lt;/p&gt;
&lt;p&gt;
Sync Services for ADO.NET permite replicar datos entre dos sistemas para los que existan
proveedores ADO.NET permitiendo por ejemplo la replicaci&amp;#243;n de datos entre SQLCE
y Oracle o cualquier otro escenario similar. La idea inicial de este entorno es la
de sustituir RDA mejor&amp;#225;ndolo en muchos aspectos. Este entorno &lt;a href="http://www.microsoft.com/Downloads/details.aspx?familyid=75FEF59F-1B5E-49BC-A21A-9EF4F34DE6FC&amp;amp;displaylang=en" target="_blank"&gt;est&amp;#225;
ya disponible tambi&amp;#233;n para dispositivos m&amp;#243;viles&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
A continuaci&amp;#243;n, y siguiendo la misma filosof&amp;#237;a, aparece &lt;a href="http://msdn2.microsoft.com/en-us/sync/default.aspx" target="_blank"&gt;Sync
Framework&lt;/a&gt;. Este es un entorno m&amp;#225;s general, que engloba al anterior, y cuyo
objetivo es el de &lt;strong&gt;permitir la sincronizaci&amp;#243;n de cualquier fuente de datos&lt;/strong&gt;,
sean bases de datos u otra cosa. De hecho en su primera versi&amp;#243;n p&amp;#250;blica
se incluye a &amp;quot;Sync Services for ADO.NET&amp;quot;, a &amp;quot;Sync Services for File
Systems&amp;quot; y a &amp;quot;Sync Services for FeedSync&amp;quot;, permitiendo la sicronizaci&amp;#243;n
respectivamente de dos fuentes cualquiera de bases de datos para las que tengamos
un proveedor ADO.NET, la sincronizaci&amp;#243;n de ficheros entre dos puntos, o la sincronizaci&amp;#243;n
de &amp;quot;feeds&amp;quot; RSS o ATOM entre dos puntos. Como se puede imaginar lo que se
proporciona es un mecanismo mediante el cual, si disponemos de los &lt;strong&gt;proveedores
adecuados&lt;/strong&gt;, se podr&amp;#225; &lt;em&gt;sincronizar cualquier cosa sincronizable&lt;/em&gt;.
Microsoft proporcionar&amp;#225; inicialmente unos proveedores pero se le deja al programador
la libertad de programarse sus propios proveedores para sincronizar cualquier tipo
de informaci&amp;#243;n.
&lt;/p&gt;
&lt;p&gt;
Finalmente se acaba de anunciar el lanzamiento de &lt;a href="https://www.mesh.com/" target="_blank"&gt;Live
Mesh&lt;/a&gt;, siendo uno de sus objetivos la sincronizaci&amp;#243;n de datos. Seg&amp;#250;n
la informaci&amp;#243;n publicada, incialmente es capaz de sincronizar archivos de forma
muy similar a como lo hace &lt;a href="http://office.microsoft.com/es-es/groove/HA101656333082.aspx" target="_blank"&gt;Groove&lt;/a&gt;,
conectando dos o m&amp;#225;s puntos a trav&amp;#233;s de Internet de forma transparente.
Pero seg&amp;#250;n se comenta, toda la plataforma estar&amp;#225; disponible para que los
desarrolladores puedan crear aplicaciones que sean capaces de sincronizar cualquier
tipo de datos de forma igualmente transparente con lo que podr&amp;#237;a usarse en principio
como sustituto de los m&amp;#233;todos mencionados anteriormente. Si esto es as&amp;#237;,
este mecanismo tiene una gran ventaja con respecto a los anteriores. En los anteriores
es necesaria una conexi&amp;#243;n expl&amp;#237;cila entre los puntos que sincronizan que
sea direccionable, es decir, necesito saber desde el origen la direcci&amp;#243;n IP de
destino. En el caso de Mesh, la localizaci&amp;#243;n de los diferentes dispositivos es
transparente y se podr&amp;#237;an sincronizar datos &lt;strong&gt;entre equipos que est&amp;#233;n
localizados tras NATs y firewalls&lt;/strong&gt; sin problema lo que proporciona muchas
ventajas a la hora de sincronizar datos sobre todo para dispositivos m&amp;#243;viles.
&lt;/p&gt;
&lt;p&gt;
En fin, cada vez hay m&amp;#225;s y m&amp;#225;s opciones. Esperemos a las versiones finales
a ver c&amp;#243;mo se consolidan las diferentes ofertas de sincronizaci&amp;#243;n.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.byteabyte.net/aggbug.ashx?id=0f3687c0-7b3b-4f88-a13b-6c6448e7bd5e" /&gt;</description>
      <comments>http://www.byteabyte.net/CommentView,guid,0f3687c0-7b3b-4f88-a13b-6c6448e7bd5e.aspx</comments>
    </item>
    <item>
      <trackback:ping>http://www.byteabyte.net/Trackback.aspx?guid=0540de4c-65bd-45b5-afaf-e26558272d0a</trackback:ping>
      <pingback:server>http://www.byteabyte.net/pingback.aspx</pingback:server>
      <pingback:target>http://www.byteabyte.net/PermaLink,guid,0540de4c-65bd-45b5-afaf-e26558272d0a.aspx</pingback:target>
      <dc:creator>Alejandro Mezcua</dc:creator>
      <wfw:comment>http://www.byteabyte.net/CommentView,guid,0540de4c-65bd-45b5-afaf-e26558272d0a.aspx</wfw:comment>
      <wfw:commentRss>http://www.byteabyte.net/SyndicationService.asmx/GetEntryCommentsRss?guid=0540de4c-65bd-45b5-afaf-e26558272d0a</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Al igual que <a href="http://www.byteabyte.net/2008/02/28/WCFYNETCompactFramework35EjemploDeQuotLugaresVisitadosquotDelEventoTechDays.aspx" target="_blank">el
ejemplo anterior</a>, ya están disponibles tanto <a href="http://www.byteabyte.net/content/binary/wcfexchangeppt.zip" target="_blank">la
presentación (en formato de Office 2007)</a> como <a href="http://www.byteabyte.net/content/binary/wcfexchangesample.zip" target="_blank">la
aplicación de ejemplo "eLoc" (proyectos de Visual Studio 2008)</a> de
la sesión impartida en el evento de Microsoft TechDays del martes pasado (26
de Febrero).
</p>
        <p>
Este ejemplo muestra el uso del transporte <a href="http://www.byteabyte.net/2007/08/21/CaracteriacutesticasDeWCFIncluidasEnNETCompactFramework35.aspx" target="_blank">WCF
basado en Microsft Exchange 2007 tanto en un entorno de PC con .NET Framework 3.5
como en un entorno de Windows Mobile</a>, con .NET Compact Framework 3.5.
</p>
        <p>
Para aquellos que quieran probar los ejemplos, van a necesitar lo siguiente:
</p>
        <ul>
          <li>
            <font face="Segoe UI">Un servidor Exchange 2007 (si es SP1 mejor)</font>
          </li>
          <li>
            <font face="Segoe UI">Dos buzones creados, uno de ellos con acceso por ActiveSync</font>
          </li>
          <li>
            <font face="Segoe UI">Un terminal Windows Mobile (o emulador) con uno de los buzones
anteriores configurado para su sincronización mediante ActiveSync</font>
          </li>
          <li>
            <font face="Segoe UI">Un PC en el que configurar la aplicación Windows Forms
con acceso al servidor Exchange.</font>
          </li>
          <li>
            <font face="Segoe UI">Un certificado para SSL de comunicación con el servidor
Exchange</font>
          </li>
          <li>
            <font face="Segoe UI">Configurar tanto el PC como el terminal Windows Mobile para
que acepten el certificado raiz del certificado SSL. Si es un certificado comprado
a Verisign o alguna entidad similar no será necesario hacer nada. Si es un certificado
propio, el certificado raíz deberá estar configurado en el store de "Trusted
Roots" del PC y del dispositivo Windows Mobile.</font>
          </li>
          <li>
            <font face="Segoe UI">Un dispositivo GPS/GSM si se quiere probar la funcionalidad
en vivo. Si no, este dispositivo no es necesario y se puede probar WCF para Exchange
simulando el mensaje de respuesta.</font>
          </li>
        </ul>
        <p>
 
</p>
        <p>
El escenario presentado por el ejemplo es el de poder localizar a un terminal GPS
remoto (con capacidad de GSM) mediante un mensaje SMS (útil por ejemplo en el
caso de un equipo de personas que trabajen en un servicio de emergencias). La solicitud
de localización se puede enviar tanto desde la aplicación de la 'central'
como desde el terminal Windows Mobile. El terminal GPS, una vez recibido el SMS, devuelve
otro SMS al dispositivo Windows Mobile, quien, a su vez, envía un mensaje WCF
mediante Exchange a la aplicación de la 'central', que mostrará la localización
del terminal GPS en un mapa de Virtual Earth.
</p>
        <p>
Existen diversos terminales de GPS/GSM en el mercado de forma que en el código
no se ha incluido ningun mensaje específico para ninguno de ellos. Si el lector
cuenta con uno de esos terminales tendrá que establecer el texto del SMS a enviar
en la clase Localizador y configurar el código del MessageInterceptor en el formulario
principal de la aplicación Windows Mobile para capturar los mensajes SMS recibidos.
</p>
        <p>
Como no es común que se disponga de estos terminales, se puede probar la funcionalidad
en la aplicación de Windows Mobile sin necesidad de tener uno de ellos ya que
ésta dispone de un botón que pemite enviar una respuesta simulada.
</p>
        <p>
Una vez configurado esto, la solución Visual Studio 2008 cuenta con tres proyectos:
</p>
        <ul>
          <li>
Un proyecto Web que dispone de dos páginas, una con un mensaje de espera y otra
que muestra en un mapa la localización de un GPS encontrado. Esta aplicación
Web se usará integrada en el cliente de la 'central'.</li>
          <li>
Un proyecto .NET Compact Framework 3.5 que envía y recibe mensajes WCF mediante
la conexión de ActiveSync.</li>
          <li>
Un proyecto .NET Framework 3.5 que envía y recibe mensajes WCF mediante los servicios
Web de Exchange 2007.</li>
        </ul>
        <p>
 
</p>
        <p>
Para terminar de configurar el código, el lector deberá modificar los parámetros
de cuentas de correo, usuarios y contraseñas y números de teléfono
(si se va a usar el GPS real) en el código para adecuarlos a su entorno. Los
parámetros son cadenas de texto encontradas en las clases 'MainForm' de cada
uno de los proyectos.
</p>
        <p>
Gracias a todos los asistentes su participación y espero que los ejemplos les
resultasen interesantes.
</p>
        <img width="0" height="0" src="http://www.byteabyte.net/aggbug.ashx?id=0540de4c-65bd-45b5-afaf-e26558272d0a" />
      </body>
      <title>WCF y transporte basado en Exchange 2007. Ejemplo para PC y .NET Compact Framework 3.5 del evento TechDays</title>
      <guid isPermaLink="false">http://www.byteabyte.net/PermaLink,guid,0540de4c-65bd-45b5-afaf-e26558272d0a.aspx</guid>
      <link>http://www.byteabyte.net/2008/02/28/WCFYTransporteBasadoEnExchange2007EjemploParaPCYNETCompactFramework35DelEventoTechDays.aspx</link>
      <pubDate>Thu, 28 Feb 2008 17:57:13 GMT</pubDate>
      <description>&lt;p&gt;
Al igual que &lt;a href="http://www.byteabyte.net/2008/02/28/WCFYNETCompactFramework35EjemploDeQuotLugaresVisitadosquotDelEventoTechDays.aspx" target="_blank"&gt;el
ejemplo anterior&lt;/a&gt;, ya est&amp;#225;n disponibles tanto &lt;a href="http://www.byteabyte.net/content/binary/wcfexchangeppt.zip" target="_blank"&gt;la
presentaci&amp;#243;n (en formato de Office 2007)&lt;/a&gt; como &lt;a href="http://www.byteabyte.net/content/binary/wcfexchangesample.zip" target="_blank"&gt;la
aplicaci&amp;#243;n de ejemplo &amp;quot;eLoc&amp;quot; (proyectos de Visual Studio 2008)&lt;/a&gt; de
la sesi&amp;#243;n impartida en el evento de Microsoft TechDays del martes pasado (26
de Febrero).
&lt;/p&gt;
&lt;p&gt;
Este ejemplo muestra el uso del transporte &lt;a href="http://www.byteabyte.net/2007/08/21/CaracteriacutesticasDeWCFIncluidasEnNETCompactFramework35.aspx" target="_blank"&gt;WCF
basado en Microsft Exchange 2007 tanto en un entorno de PC con .NET Framework 3.5
como en un entorno de Windows Mobile&lt;/a&gt;, con .NET Compact Framework 3.5.
&lt;/p&gt;
&lt;p&gt;
Para aquellos que quieran probar los ejemplos, van a necesitar lo siguiente:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;font face="Segoe UI"&gt;Un servidor Exchange 2007 (si es SP1 mejor)&lt;/font&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;font face="Segoe UI"&gt;Dos buzones creados, uno de ellos con acceso por ActiveSync&lt;/font&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;font face="Segoe UI"&gt;Un terminal Windows Mobile (o emulador) con uno de los buzones
anteriores configurado para su sincronizaci&amp;#243;n mediante ActiveSync&lt;/font&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;font face="Segoe UI"&gt;Un PC en el que configurar la aplicaci&amp;#243;n Windows Forms
con acceso al servidor Exchange.&lt;/font&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;font face="Segoe UI"&gt;Un certificado para SSL de comunicaci&amp;#243;n con el servidor
Exchange&lt;/font&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;font face="Segoe UI"&gt;Configurar tanto el PC como el terminal Windows Mobile para
que acepten el certificado raiz del certificado SSL. Si es un certificado comprado
a Verisign o alguna entidad similar no ser&amp;#225; necesario hacer nada. Si es un certificado
propio, el certificado ra&amp;#237;z deber&amp;#225; estar configurado en el store de &amp;quot;Trusted
Roots&amp;quot; del PC y del dispositivo Windows Mobile.&lt;/font&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;font face="Segoe UI"&gt;Un dispositivo GPS/GSM si se quiere probar la funcionalidad
en vivo. Si no, este dispositivo no es necesario y se puede probar WCF para Exchange
simulando el mensaje de respuesta.&lt;/font&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&amp;#160;
&lt;/p&gt;
&lt;p&gt;
El escenario presentado por el ejemplo es el de poder localizar a un terminal GPS
remoto (con capacidad de GSM) mediante un mensaje SMS (&amp;#250;til por ejemplo en el
caso de un equipo de personas que trabajen en un servicio de emergencias). La solicitud
de localizaci&amp;#243;n se puede enviar tanto desde la aplicaci&amp;#243;n de la 'central'
como desde el terminal Windows Mobile. El terminal GPS, una vez recibido el SMS, devuelve
otro SMS al dispositivo Windows Mobile, quien, a su vez, env&amp;#237;a un mensaje WCF
mediante Exchange a la aplicaci&amp;#243;n de la 'central', que mostrar&amp;#225; la localizaci&amp;#243;n
del terminal GPS en un mapa de Virtual Earth.
&lt;/p&gt;
&lt;p&gt;
Existen diversos terminales de GPS/GSM en el mercado de forma que en el c&amp;#243;digo
no se ha incluido ningun mensaje espec&amp;#237;fico para ninguno de ellos. Si el lector
cuenta con uno de esos terminales tendr&amp;#225; que establecer el texto del SMS a enviar
en la clase Localizador y configurar el c&amp;#243;digo del MessageInterceptor en el formulario
principal de la aplicaci&amp;#243;n Windows Mobile para capturar los mensajes SMS recibidos.
&lt;/p&gt;
&lt;p&gt;
Como no es com&amp;#250;n que se disponga de estos terminales, se puede probar la funcionalidad
en la aplicaci&amp;#243;n de Windows Mobile sin necesidad de tener uno de ellos ya que
&amp;#233;sta dispone de un bot&amp;#243;n que pemite enviar una respuesta simulada.
&lt;/p&gt;
&lt;p&gt;
Una vez configurado esto, la soluci&amp;#243;n Visual Studio 2008 cuenta con tres proyectos:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Un proyecto Web que dispone de dos p&amp;#225;ginas, una con un mensaje de espera y otra
que muestra en un mapa la localizaci&amp;#243;n de un GPS encontrado. Esta aplicaci&amp;#243;n
Web se usar&amp;#225; integrada en el cliente de la 'central'.&lt;/li&gt;
&lt;li&gt;
Un proyecto .NET Compact Framework 3.5 que env&amp;#237;a y recibe mensajes WCF mediante
la conexi&amp;#243;n de ActiveSync.&lt;/li&gt;
&lt;li&gt;
Un proyecto .NET Framework 3.5 que env&amp;#237;a y recibe mensajes WCF mediante los servicios
Web de Exchange 2007.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&amp;#160;
&lt;/p&gt;
&lt;p&gt;
Para terminar de configurar el c&amp;#243;digo, el lector deber&amp;#225; modificar los par&amp;#225;metros
de cuentas de correo, usuarios y contrase&amp;#241;as y n&amp;#250;meros de tel&amp;#233;fono
(si se va a usar el GPS real) en el c&amp;#243;digo para adecuarlos a su entorno. Los
par&amp;#225;metros son cadenas de texto encontradas en las clases 'MainForm' de cada
uno de los proyectos.
&lt;/p&gt;
&lt;p&gt;
Gracias a todos los asistentes su participaci&amp;#243;n y espero que los ejemplos les
resultasen interesantes.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.byteabyte.net/aggbug.ashx?id=0540de4c-65bd-45b5-afaf-e26558272d0a" /&gt;</description>
      <comments>http://www.byteabyte.net/CommentView,guid,0540de4c-65bd-45b5-afaf-e26558272d0a.aspx</comments>
      <category>.NET Compact Framework</category>
      <category>Eventos</category>
    </item>
    <item>
      <trackback:ping>http://www.byteabyte.net/Trackback.aspx?guid=4ddb4956-e802-44c8-8c47-85827fa0da92</trackback:ping>
      <pingback:server>http://www.byteabyte.net/pingback.aspx</pingback:server>
      <pingback:target>http://www.byteabyte.net/PermaLink,guid,4ddb4956-e802-44c8-8c47-85827fa0da92.aspx</pingback:target>
      <dc:creator>Alejandro Mezcua</dc:creator>
      <wfw:comment>http://www.byteabyte.net/CommentView,guid,4ddb4956-e802-44c8-8c47-85827fa0da92.aspx</wfw:comment>
      <wfw:commentRss>http://www.byteabyte.net/SyndicationService.asmx/GetEntryCommentsRss?guid=4ddb4956-e802-44c8-8c47-85827fa0da92</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Ya están disponibles <a href="http://www.byteabyte.net/content/binary/lugaresvisitadosppt.zip" target="_blank">la
presentación (en formato de Office 2007)</a> y la <a href="http://www.byteabyte.net/content/binary/lugaresvisitadossample.zip" target="_blank">aplicación
de ejemplo "LugaresVisitados" (proyectos de Visual Studio 2008)</a> de la
sesión práctica impartida en el evento de Microsoft TechDays del martes
pasado (26 de Febrero).
</p>
        <p>
La solución de Visual Studio de ejemplo consta de dos proyectos, una aplicación
.NET Compact Framework 3.5 y una aplicación servidor basada en ASP.NET (con .NET
Framework 3.5)
</p>
        <p>
La aplicación cliente permite tomar una foto con la cámara de fotos de un
terminal Windows Mobile, añadirle unas notas y, si hay un GPS conectado, asociarle
a la foto unas coordenadas. Una vez tomada la foto y definidas las notas la aplicación,
ésta puede ser subida al servidor Web donde quedará almacenada. Para quellos
que se instalen el ejemplo, lo primero que han de hacer es modificar el archivo de
configuración "config.txt" (en formato XML) para establecer un nombre
de un puerto de serie correcto para el GPS y una URL válida de conexión
al servicio Web.
</p>
        <p>
La aplicación servidora es una aplicación ASP .NET que permite visualizar
las fotos, taanto en una lista como individualmente y, para aquellas fotos que tengan
asociadas coordenadas GPS, visualizarlas además en un mapa de Virtual Earth.
En esta aplicación hay dos servicios Web WCF definidos. El primero permite subir
las fotos al servidor (FotoUploader.svc) y el segundo permite obtener la lista de
fotos que tienen coordenadas GPS asociadas (FotosCoordenadas.svc). Este último
servicio existe para poder ser invocado desde JavaScript, desde la página que
tiene el mapa de Virtual Earth obteniendo los datos en formato JSON.
</p>
        <p>
Es conveniente revisar la presentación para ver qué parámetros de configuración
de los servicios WCF se han establecido en el archivo Web.Config de la aplicación
Web para configurar el sistema tal como funciona.
</p>
        <p>
Por otro lado, para poder crear aplicaciones cliente en .NET Compact Framework para
este tipo de servicios WCF, hay que recordar que es necesario instalarse los <a href="http://www.byteabyte.net/2007/09/13/PowerToysParaNETCompactFramework35.aspx" target="_blank">Power
Toys para .NET Compact Framework 3.5</a>, que incluyen, entre otras cosas, la utilidad
"netcfsvcutil.exe" que es la que permite la generación del proxy que
realiza la llamada al servicio Web.
</p>
        <p>
Quiro agradecer a todos los asistentes su participación y espero que los ejemplos
les resultasen interesantes.
</p>
        <img width="0" height="0" src="http://www.byteabyte.net/aggbug.ashx?id=4ddb4956-e802-44c8-8c47-85827fa0da92" />
      </body>
      <title>WCF y .NET Compact Framework 3.5, ejemplo de &amp;quot;LugaresVisitados&amp;quot; del evento TechDays</title>
      <guid isPermaLink="false">http://www.byteabyte.net/PermaLink,guid,4ddb4956-e802-44c8-8c47-85827fa0da92.aspx</guid>
      <link>http://www.byteabyte.net/2008/02/28/WCFYNETCompactFramework35EjemploDeQuotLugaresVisitadosquotDelEventoTechDays.aspx</link>
      <pubDate>Thu, 28 Feb 2008 16:28:57 GMT</pubDate>
      <description>&lt;p&gt;
Ya est&amp;#225;n disponibles &lt;a href="http://www.byteabyte.net/content/binary/lugaresvisitadosppt.zip" target="_blank"&gt;la
presentaci&amp;#243;n (en formato de Office 2007)&lt;/a&gt; y la &lt;a href="http://www.byteabyte.net/content/binary/lugaresvisitadossample.zip" target="_blank"&gt;aplicaci&amp;#243;n
de ejemplo &amp;quot;LugaresVisitados&amp;quot; (proyectos de Visual Studio 2008)&lt;/a&gt; de la
sesi&amp;#243;n pr&amp;#225;ctica impartida en el evento de Microsoft TechDays del martes
pasado (26 de Febrero).
&lt;/p&gt;
&lt;p&gt;
La soluci&amp;#243;n de Visual Studio de ejemplo consta de dos proyectos, una aplicaci&amp;#243;n
.NET Compact Framework 3.5 y una aplicaci&amp;#243;n servidor basada en ASP.NET (con .NET
Framework 3.5)
&lt;/p&gt;
&lt;p&gt;
La aplicaci&amp;#243;n cliente permite tomar una foto con la c&amp;#225;mara de fotos de un
terminal Windows Mobile, a&amp;#241;adirle unas notas y, si hay un GPS conectado, asociarle
a la foto unas coordenadas. Una vez tomada la foto y definidas las notas la aplicaci&amp;#243;n,
&amp;#233;sta puede ser subida al servidor Web donde quedar&amp;#225; almacenada. Para quellos
que se instalen el ejemplo, lo primero que han de hacer es modificar el archivo de
configuraci&amp;#243;n &amp;quot;config.txt&amp;quot; (en formato XML) para establecer un nombre
de un puerto de serie correcto para el GPS y una URL v&amp;#225;lida de conexi&amp;#243;n
al servicio Web.
&lt;/p&gt;
&lt;p&gt;
La aplicaci&amp;#243;n servidora es una aplicaci&amp;#243;n ASP .NET que permite visualizar
las fotos, taanto en una lista como individualmente y, para aquellas fotos que tengan
asociadas coordenadas GPS, visualizarlas adem&amp;#225;s en un mapa de Virtual Earth.
En esta aplicaci&amp;#243;n hay dos servicios Web WCF definidos. El primero permite subir
las fotos al servidor (FotoUploader.svc) y el segundo permite obtener la lista de
fotos que tienen coordenadas GPS asociadas (FotosCoordenadas.svc). Este &amp;#250;ltimo
servicio existe para poder ser invocado desde JavaScript, desde la p&amp;#225;gina que
tiene el mapa de Virtual Earth obteniendo los datos en formato JSON.
&lt;/p&gt;
&lt;p&gt;
Es conveniente revisar la presentaci&amp;#243;n para ver qu&amp;#233; par&amp;#225;metros de configuraci&amp;#243;n
de los servicios WCF se han establecido en el archivo Web.Config de la aplicaci&amp;#243;n
Web para configurar el sistema tal como funciona.
&lt;/p&gt;
&lt;p&gt;
Por otro lado, para poder crear aplicaciones cliente en .NET Compact Framework para
este tipo de servicios WCF, hay que recordar que es necesario instalarse los &lt;a href="http://www.byteabyte.net/2007/09/13/PowerToysParaNETCompactFramework35.aspx" target="_blank"&gt;Power
Toys para .NET Compact Framework 3.5&lt;/a&gt;, que incluyen, entre otras cosas, la utilidad
&amp;quot;netcfsvcutil.exe&amp;quot; que es la que permite la generaci&amp;#243;n del proxy que
realiza la llamada al servicio Web.
&lt;/p&gt;
&lt;p&gt;
Quiro agradecer a todos los asistentes su participaci&amp;#243;n y espero que los ejemplos
les resultasen interesantes.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.byteabyte.net/aggbug.ashx?id=4ddb4956-e802-44c8-8c47-85827fa0da92" /&gt;</description>
      <comments>http://www.byteabyte.net/CommentView,guid,4ddb4956-e802-44c8-8c47-85827fa0da92.aspx</comments>
      <category>.NET Compact Framework</category>
      <category>Eventos</category>
    </item>
    <item>
      <trackback:ping>http://www.byteabyte.net/Trackback.aspx?guid=7a1645f9-1246-4167-ba27-0934aa042375</trackback:ping>
      <pingback:server>http://www.byteabyte.net/pingback.aspx</pingback:server>
      <pingback:target>http://www.byteabyte.net/PermaLink,guid,7a1645f9-1246-4167-ba27-0934aa042375.aspx</pingback:target>
      <dc:creator>Alejandro Mezcua</dc:creator>
      <wfw:comment>http://www.byteabyte.net/CommentView,guid,7a1645f9-1246-4167-ba27-0934aa042375.aspx</wfw:comment>
      <wfw:commentRss>http://www.byteabyte.net/SyndicationService.asmx/GetEntryCommentsRss?guid=7a1645f9-1246-4167-ba27-0934aa042375</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
He replicado un artículo que apareció originalmente en la revista PC World
de Julio-Agosto de 2007 con el título original de "Desarrollando 'On the
road' con Windows Mobile 6".
</p>
        <p>
En este artículo se comentan las novedades incluidas en la plataforma y en los
SDKs de Windows Mobile 6 y se desarrolla una pequeña aplicación paso a paso
de la que el código está disponible para su descarga.
</p>
        <p>
          <a href="http://www.byteabyte.net/verarticulo.aspx?art=novedadesWM6.xml" target="_blank">Podéis
acceder al artículo completo aquí</a>.
</p>
        <img width="0" height="0" src="http://www.byteabyte.net/aggbug.ashx?id=7a1645f9-1246-4167-ba27-0934aa042375" />
      </body>
      <title>Art&amp;iacute;culo: Novedades para desarrolladores en Windows Mobile 6</title>
      <guid isPermaLink="false">http://www.byteabyte.net/PermaLink,guid,7a1645f9-1246-4167-ba27-0934aa042375.aspx</guid>
      <link>http://www.byteabyte.net/2008/02/14/ArtiacuteculoNovedadesParaDesarrolladoresEnWindowsMobile6.aspx</link>
      <pubDate>Thu, 14 Feb 2008 09:52:22 GMT</pubDate>
      <description>&lt;p&gt;
He replicado un art&amp;#237;culo que apareci&amp;#243; originalmente en la revista PC World
de Julio-Agosto de 2007 con el t&amp;#237;tulo original de &amp;quot;Desarrollando 'On the
road' con Windows Mobile 6&amp;quot;.
&lt;/p&gt;
&lt;p&gt;
En este art&amp;#237;culo se comentan las novedades incluidas en la plataforma y en los
SDKs de Windows Mobile 6 y se desarrolla una peque&amp;#241;a aplicaci&amp;#243;n paso a paso
de la que el c&amp;#243;digo est&amp;#225; disponible para su descarga.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.byteabyte.net/verarticulo.aspx?art=novedadesWM6.xml" target="_blank"&gt;Pod&amp;#233;is
acceder al art&amp;#237;culo completo aqu&amp;#237;&lt;/a&gt;.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.byteabyte.net/aggbug.ashx?id=7a1645f9-1246-4167-ba27-0934aa042375" /&gt;</description>
      <comments>http://www.byteabyte.net/CommentView,guid,7a1645f9-1246-4167-ba27-0934aa042375.aspx</comments>
      <category>Artículos</category>
    </item>
    <item>
      <trackback:ping>http://www.byteabyte.net/Trackback.aspx?guid=cf1b20d9-5edc-4fd2-920a-a7ff40aae370</trackback:ping>
      <pingback:server>http://www.byteabyte.net/pingback.aspx</pingback:server>
      <pingback:target>http://www.byteabyte.net/PermaLink,guid,cf1b20d9-5edc-4fd2-920a-a7ff40aae370.aspx</pingback:target>
      <dc:creator>Alejandro Mezcua</dc:creator>
      <wfw:comment>http://www.byteabyte.net/CommentView,guid,cf1b20d9-5edc-4fd2-920a-a7ff40aae370.aspx</wfw:comment>
      <wfw:commentRss>http://www.byteabyte.net/SyndicationService.asmx/GetEntryCommentsRss?guid=cf1b20d9-5edc-4fd2-920a-a7ff40aae370</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Se acaba de anunciar un nuevo modelo de teléfono de Sony-Ericsson, el <a href="http://www.sonyericsson.com/cws/corporate/press/pressreleases/pressreleasedetails/globalx1-20080210" target="_blank">XPERIA
X1</a>, que vendrá con Windows Mobile. Al parecer el terminal está fabricado
por HTC (cómo no) y será el primero de una nueva línea de móviles
de Sony Ericsson con este nuevo sistema operativo para ellos. El terminal parece bastante
completo, e incorpora un nuevo UI que, si funciona como aparece en el vídeo promocional,
quiere competir directamente con el UI del iPhone.
</p>
        <p>
El movimiento resulta bastante interesante ya que Sony Ericsson es uno de los fabricantes
que más apoya (apoyaba?) Symbian en su línea UIQ. Por lo que parece, de
entre todos los fabricantes grandes de móviles, ya sólo falta Nokia por
unirse al carro de Windows Mobile; aunque ha licenciado parte de sus tecnologías,
eso sí.
</p>
        <p>
Por experiencia os puedo decir que, desde el punto de vista del programador, nos ahorrarían
muchos dolores de cabeza si lo hicieran.
</p>
        <img width="0" height="0" src="http://www.byteabyte.net/aggbug.ashx?id=cf1b20d9-5edc-4fd2-920a-a7ff40aae370" />
      </body>
      <title>Sony Ericsson se apunta al carro de Windows Mobile</title>
      <guid isPermaLink="false">http://www.byteabyte.net/PermaLink,guid,cf1b20d9-5edc-4fd2-920a-a7ff40aae370.aspx</guid>
      <link>http://www.byteabyte.net/2008/02/11/SonyEricssonSeApuntaAlCarroDeWindowsMobile.aspx</link>
      <pubDate>Mon, 11 Feb 2008 07:01:37 GMT</pubDate>
      <description>&lt;p&gt;
Se acaba de anunciar un nuevo modelo de tel&amp;#233;fono de Sony-Ericsson, el &lt;a href="http://www.sonyericsson.com/cws/corporate/press/pressreleases/pressreleasedetails/globalx1-20080210" target="_blank"&gt;XPERIA
X1&lt;/a&gt;, que vendr&amp;#225; con Windows Mobile. Al parecer el terminal est&amp;#225; fabricado
por HTC (c&amp;#243;mo no) y ser&amp;#225; el primero de una nueva l&amp;#237;nea de m&amp;#243;viles
de Sony Ericsson con este nuevo sistema operativo para ellos. El terminal parece bastante
completo, e incorpora un nuevo UI que, si funciona como aparece en el v&amp;#237;deo promocional,
quiere competir directamente con el UI del iPhone.
&lt;/p&gt;
&lt;p&gt;
El movimiento resulta bastante interesante ya que Sony Ericsson es uno de los fabricantes
que m&amp;#225;s apoya (apoyaba?) Symbian en su l&amp;#237;nea UIQ. Por lo que parece, de
entre todos los fabricantes grandes de m&amp;#243;viles, ya s&amp;#243;lo falta Nokia por
unirse al carro de Windows Mobile; aunque ha licenciado parte de sus tecnolog&amp;#237;as,
eso s&amp;#237;.
&lt;/p&gt;
&lt;p&gt;
Por experiencia os puedo decir que, desde el punto de vista del programador, nos ahorrar&amp;#237;an
muchos dolores de cabeza si lo hicieran.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.byteabyte.net/aggbug.ashx?id=cf1b20d9-5edc-4fd2-920a-a7ff40aae370" /&gt;</description>
      <comments>http://www.byteabyte.net/CommentView,guid,cf1b20d9-5edc-4fd2-920a-a7ff40aae370.aspx</comments>
      <category>Windows Mobile</category>
    </item>
    <item>
      <trackback:ping>http://www.byteabyte.net/Trackback.aspx?guid=2ae86c73-ab70-4383-bf6c-01fa006b5d07</trackback:ping>
      <pingback:server>http://www.byteabyte.net/pingback.aspx</pingback:server>
      <pingback:target>http://www.byteabyte.net/PermaLink,guid,2ae86c73-ab70-4383-bf6c-01fa006b5d07.aspx</pingback:target>
      <dc:creator>Alejandro Mezcua</dc:creator>
      <wfw:comment>http://www.byteabyte.net/CommentView,guid,2ae86c73-ab70-4383-bf6c-01fa006b5d07.aspx</wfw:comment>
      <wfw:commentRss>http://www.byteabyte.net/SyndicationService.asmx/GetEntryCommentsRss?guid=2ae86c73-ab70-4383-bf6c-01fa006b5d07</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a href="http://www.pointui.com/" target="_blank">Aquí tenéis una interesante
aplicación gratuita</a> (de momento) para los usuarios de Windows Mobile 5/6.
Se trata de una utilidad que reemplaza en cierto modo al Home Screen de un Pocket
PC, aunque no lo deshabilita. Visualmente es muy agradable con animaciones y transiciones
muy interesantes (que me <a href="http://community.opennetcf.com/competition/folders/sept07/default.aspx" target="_blank">recuerdan
mucho a FlowFX</a>, la entrada presentada en el primer concurso de desarrollo de OpenNETCF
Community). Desde el punto de vista del uso, está pensada para ser utilizada
principalmente con el dedo, aunque funciona bien con las teclas de desplazamiento.
Veremos cómo evoluciona ya que aún es un proyecto reciente, pero no tiene
mala pinta.
</p>
        <img width="0" height="0" src="http://www.byteabyte.net/aggbug.ashx?id=2ae86c73-ab70-4383-bf6c-01fa006b5d07" />
      </body>
      <title>PointUI. Interesante reemplazo del Home Screen de Windows Mobile</title>
      <guid isPermaLink="false">http://www.byteabyte.net/PermaLink,guid,2ae86c73-ab70-4383-bf6c-01fa006b5d07.aspx</guid>
      <link>http://www.byteabyte.net/2008/01/02/PointUIInteresanteReemplazoDelHomeScreenDeWindowsMobile.aspx</link>
      <pubDate>Wed, 02 Jan 2008 20:37:19 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a href="http://www.pointui.com/" target="_blank"&gt;Aqu&amp;#237; ten&amp;#233;is una interesante
aplicaci&amp;#243;n gratuita&lt;/a&gt; (de momento) para los usuarios de Windows Mobile 5/6.
Se trata de una utilidad que reemplaza en cierto modo al Home Screen de un Pocket
PC, aunque no lo deshabilita. Visualmente es muy agradable con animaciones y transiciones
muy interesantes (que me &lt;a href="http://community.opennetcf.com/competition/folders/sept07/default.aspx" target="_blank"&gt;recuerdan
mucho a FlowFX&lt;/a&gt;, la entrada presentada en el primer concurso de desarrollo de OpenNETCF
Community). Desde el punto de vista del uso, est&amp;#225; pensada para ser utilizada
principalmente con el dedo, aunque funciona bien con las teclas de desplazamiento.
Veremos c&amp;#243;mo evoluciona ya que a&amp;#250;n es un proyecto reciente, pero no tiene
mala pinta.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.byteabyte.net/aggbug.ashx?id=2ae86c73-ab70-4383-bf6c-01fa006b5d07" /&gt;</description>
      <comments>http://www.byteabyte.net/CommentView,guid,2ae86c73-ab70-4383-bf6c-01fa006b5d07.aspx</comments>
      <category>Aplicaciones</category>
      <category>Windows Mobile</category>
    </item>
    <item>
      <trackback:ping>http://www.byteabyte.net/Trackback.aspx?guid=c905e111-7fbc-4489-bff8-71561d20a0a8</trackback:ping>
      <pingback:server>http://www.byteabyte.net/pingback.aspx</pingback:server>
      <pingback:target>http://www.byteabyte.net/PermaLink,guid,c905e111-7fbc-4489-bff8-71561d20a0a8.aspx</pingback:target>
      <dc:creator>Alejandro Mezcua</dc:creator>
      <wfw:comment>http://www.byteabyte.net/CommentView,guid,c905e111-7fbc-4489-bff8-71561d20a0a8.aspx</wfw:comment>
      <wfw:commentRss>http://www.byteabyte.net/SyndicationService.asmx/GetEntryCommentsRss?guid=c905e111-7fbc-4489-bff8-71561d20a0a8</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Hasta ahora no había realizado más que pequeñas pruebas de LINQ, pero
recientemente he cambiado de proveedor de hosting (al <a href="http://www.discountasp.com/index.aspx?refcode=ALMBYTE" target="_blank">de
momento magnífico discountASP</a>) que ya proporciona soporte para .NET 3.5 y
me he decidido a usarlo un poco más.
</p>
        <p>
En concreto he creado <a href="http://www.byteabyte.net/CategoryView,category,links.aspx" target="_blank">una
nueva página de links</a>, donde he puesto de momento los links que tengo alojados
en del.icio.us y mis elementos compartidos de Google Reader, que es el lector RSS
que utilizo.
</p>
        <p>
Tanto del.icio.us como Google Reader proporcionan acceso a los elementos públicos
mediante una URL que ofrece un documento RSS en el primer caso (<a title="http://del.icio.us/rss/amezcua" href="http://del.icio.us/rss/amezcua" target="_blank">http://del.icio.us/rss/amezcua</a>)
y un documento ATOM en el segundo (<a title="http://www.google.com/reader/public/atom/user/06770480527490995101/state/com.google/broadcast" href="http://www.google.com/reader/public/atom/user/06770480527490995101/state/com.google/broadcast" target="_blank">http://www.google.com/reader/public/atom/user/06770480527490995101/state/com.google/broadcast</a>).
</p>
        <p>
Teniendo esto en cuenta, el funcionamiento de la página es realmente sencillo.
Sin entrar en detalles los pasos realizados son:
</p>
        <p>
1º Al cargar la página se obtiene un documento XML a partir de la URL para
cada uno de los documentos anteriores. Esto es tan sencillo como:
</p>
        <pre class="csharpcode">XDocument xmlDoc = XDocument.Load(urlServicio);</pre>
        <style type="text/css">
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>
        <p>
2º Una vez se dispone del documento se obtiene, mediante una consulta LINQ, una
colección de elementos extrayendo los datos deseados del XML original. Por ejemplo,
para el caso de del.icio.us se quiere obtener una colección de objetos con dos
campos, 'title' y 'url':
</p>
        <pre class="csharpcode">var itemList = from item <span class="kwrd">in</span> xmlDoc.Descendants(<span class="str">"{http://purl.org/rss/1.0/}item"</span>)
select <span class="kwrd">new</span> { title = (<span class="kwrd">string</span>)item.Element(<span class="str">"{http://purl.org/rss/1.0/}title"</span>),
url = (<span class="kwrd">string</span>)item.Element(<span class="str">"{http://purl.org/rss/1.0/}link"</span>)
};</pre>
        <p>
          <style type="text/css">
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>
        </p>
        <p>
3º Cuando se tiene la colección creada (itemList) se puede utilizar DataBinding
para vincular esta lista de elementos a cualquier control. En mi caso lo he vinculado
a un control DataList. En el control DataList simplemente se especifica que se quieren
mostrar los campos 'title' y 'url' definidos antes:
</p>
        <pre class="csharpcode">dlDelIcioUsItems.DataSource = itemList;
dlDelIcioUsItems.DataBind();</pre>
        <p>
Como se puede ver hay, sin contar el control de errores, 4 líneas de código
para cargar un documento XML remoto y mostrarlo en una página Web, bastante impresionante,
teniendo en cuenta que para hacer algo similar hasta ahora lo que hacía era disponer
de una clase que defina la estructura del documento, cargar el XML remoto en un XmlReader,
deserializar el documento a la clase y finalmente obtener la colección de items
interna de esa clase.
</p>
        <p>
Una de las cosas que hay que destacar es el uso de los namespaces de XML. Como se
ve en la consulta LINQ, para acceder a cada uno de los elementos del documento hay
que especificar el namespace XML en el que se encuentra
</p>
        <pre class="csharpcode">{http://purl.org/rss/1.0/}</pre>
        <style type="text/css">
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>
        <p>
lo que define completamente al elemento XML concreto. Esta sintaxis, tal como está
en el ejemplo, no me acaba de gustar, así que se puede mejorar de la siguiente
forma:
</p>
        <pre class="csharpcode">XNamespace deliciousNS = <span class="str">"http://purl.org/rss/1.0/"</span>;
var itemList = from item <span class="kwrd">in</span> xmlDoc.Descendants(deliciousNS
+ <span class="str">"item"</span>) select <span class="kwrd">new</span> {
title = (<span class="kwrd">string</span>)item.Element(deliciousNS + <span class="str">"title"</span>),
url = (<span class="kwrd">string</span>)item.Element(deliciousNS + <span class="str">"link"</span>)
};</pre>
        <p>
          <style type="text/css">
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>
        </p>
        <p>
En este caso se define un objeto XNamespace con el namespace adecuado y se utiliza
en todos aquellos sitios donde se necesite especificar el nombre completo del elemento.
Como el tipo XNamespace sobrecarga el operador '+' se puede usar simplemente añadiendo
entre comillas el nombre del elemento XML. Esto no se encuentra en la mayoría
de los ejemplos publicados por ahí sobre LINQ to XML, donde se utilizan documentos
XML sin definición de namespaces, cosa que no es muy habitual en el mundo real
¿no?
</p>
        <img width="0" height="0" src="http://www.byteabyte.net/aggbug.ashx?id=c905e111-7fbc-4489-bff8-71561d20a0a8" />
      </body>
      <title>Me encanta LINQ to XML</title>
      <guid isPermaLink="false">http://www.byteabyte.net/PermaLink,guid,c905e111-7fbc-4489-bff8-71561d20a0a8.aspx</guid>
      <link>http://www.byteabyte.net/2007/12/31/MeEncantaLINQToXML.aspx</link>
      <pubDate>Mon, 31 Dec 2007 09:11:42 GMT</pubDate>
      <description>&lt;p&gt;
Hasta ahora no hab&amp;#237;a realizado m&amp;#225;s que peque&amp;#241;as pruebas de LINQ, pero
recientemente he cambiado de proveedor de hosting (al &lt;a href="http://www.discountasp.com/index.aspx?refcode=ALMBYTE" target="_blank"&gt;de
momento magn&amp;#237;fico discountASP&lt;/a&gt;) que ya proporciona soporte para .NET 3.5 y
me he decidido a usarlo un poco m&amp;#225;s.
&lt;/p&gt;
&lt;p&gt;
En concreto he creado &lt;a href="http://www.byteabyte.net/CategoryView,category,links.aspx" target="_blank"&gt;una
nueva p&amp;#225;gina de links&lt;/a&gt;, donde he puesto de momento los links que tengo alojados
en del.icio.us y mis elementos compartidos de Google Reader, que es el lector RSS
que utilizo.
&lt;/p&gt;
&lt;p&gt;
Tanto del.icio.us como Google Reader proporcionan acceso a los elementos p&amp;#250;blicos
mediante una URL que ofrece un documento RSS en el primer caso (&lt;a title="http://del.icio.us/rss/amezcua" href="http://del.icio.us/rss/amezcua" target="_blank"&gt;http://del.icio.us/rss/amezcua&lt;/a&gt;)
y un documento ATOM en el segundo (&lt;a title="http://www.google.com/reader/public/atom/user/06770480527490995101/state/com.google/broadcast" href="http://www.google.com/reader/public/atom/user/06770480527490995101/state/com.google/broadcast" target="_blank"&gt;http://www.google.com/reader/public/atom/user/06770480527490995101/state/com.google/broadcast&lt;/a&gt;).
&lt;/p&gt;
&lt;p&gt;
Teniendo esto en cuenta, el funcionamiento de la p&amp;#225;gina es realmente sencillo.
Sin entrar en detalles los pasos realizados son:
&lt;/p&gt;
&lt;p&gt;
1&amp;#186; Al cargar la p&amp;#225;gina se obtiene un documento XML a partir de la URL para
cada uno de los documentos anteriores. Esto es tan sencillo como:
&lt;/p&gt;
&lt;pre class="csharpcode"&gt;XDocument xmlDoc = XDocument.Load(urlServicio);&lt;/pre&gt;
&lt;style type="text/css"&gt;
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;
&lt;p&gt;
2&amp;#186; Una vez se dispone del documento se obtiene, mediante una consulta LINQ, una
colecci&amp;#243;n de elementos extrayendo los datos deseados del XML original. Por ejemplo,
para el caso de del.icio.us se quiere obtener una colecci&amp;#243;n de objetos con dos
campos, 'title' y 'url':
&lt;/p&gt;
&lt;pre class="csharpcode"&gt;var itemList = from item &lt;span class="kwrd"&gt;in&lt;/span&gt; xmlDoc.Descendants(&lt;span class="str"&gt;&amp;quot;{http://purl.org/rss/1.0/}item&amp;quot;&lt;/span&gt;)
select &lt;span class="kwrd"&gt;new&lt;/span&gt; { title = (&lt;span class="kwrd"&gt;string&lt;/span&gt;)item.Element(&lt;span class="str"&gt;&amp;quot;{http://purl.org/rss/1.0/}title&amp;quot;&lt;/span&gt;),
url = (&lt;span class="kwrd"&gt;string&lt;/span&gt;)item.Element(&lt;span class="str"&gt;&amp;quot;{http://purl.org/rss/1.0/}link&amp;quot;&lt;/span&gt;)
};&lt;/pre&gt;
&lt;p&gt;
&lt;style type="text/css"&gt;
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;
&lt;/p&gt;
&lt;p&gt;
3&amp;#186; Cuando se tiene la colecci&amp;#243;n creada (itemList) se puede utilizar DataBinding
para vincular esta lista de elementos a cualquier control. En mi caso lo he vinculado
a un control DataList. En el control DataList simplemente se especifica que se quieren
mostrar los campos 'title' y 'url' definidos antes:
&lt;/p&gt;
&lt;pre class="csharpcode"&gt;dlDelIcioUsItems.DataSource = itemList;
dlDelIcioUsItems.DataBind();&lt;/pre&gt;
&lt;p&gt;
Como se puede ver hay, sin contar el control de errores, 4 l&amp;#237;neas de c&amp;#243;digo
para cargar un documento XML remoto y mostrarlo en una p&amp;#225;gina Web, bastante impresionante,
teniendo en cuenta que para hacer algo similar hasta ahora lo que hac&amp;#237;a era disponer
de una clase que defina la estructura del documento, cargar el XML remoto en un XmlReader,
deserializar el documento a la clase y finalmente obtener la colecci&amp;#243;n de items
interna de esa clase.
&lt;/p&gt;
&lt;p&gt;
Una de las cosas que hay que destacar es el uso de los namespaces de XML. Como se
ve en la consulta LINQ, para acceder a cada uno de los elementos del documento hay
que especificar el namespace XML en el que se encuentra
&lt;/p&gt;
&lt;pre class="csharpcode"&gt;{http://purl.org/rss/1.0/}&lt;/pre&gt;
&lt;style type="text/css"&gt;
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;
&lt;p&gt;
lo que define completamente al elemento XML concreto. Esta sintaxis, tal como est&amp;#225;
en el ejemplo, no me acaba de gustar, as&amp;#237; que se puede mejorar de la siguiente
forma:
&lt;/p&gt;
&lt;pre class="csharpcode"&gt;XNamespace deliciousNS = &lt;span class="str"&gt;&amp;quot;http://purl.org/rss/1.0/&amp;quot;&lt;/span&gt;;
var itemList = from item &lt;span class="kwrd"&gt;in&lt;/span&gt; xmlDoc.Descendants(deliciousNS
+ &lt;span class="str"&gt;&amp;quot;item&amp;quot;&lt;/span&gt;) select &lt;span class="kwrd"&gt;new&lt;/span&gt; {
title = (&lt;span class="kwrd"&gt;string&lt;/span&gt;)item.Element(deliciousNS + &lt;span class="str"&gt;&amp;quot;title&amp;quot;&lt;/span&gt;),
url = (&lt;span class="kwrd"&gt;string&lt;/span&gt;)item.Element(deliciousNS + &lt;span class="str"&gt;&amp;quot;link&amp;quot;&lt;/span&gt;)
};&lt;/pre&gt;
&lt;p&gt;
&lt;style type="text/css"&gt;
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;
&lt;/p&gt;
&lt;p&gt;
En este caso se define un objeto XNamespace con el namespace adecuado y se utiliza
en todos aquellos sitios donde se necesite especificar el nombre completo del elemento.
Como el tipo XNamespace sobrecarga el operador '+' se puede usar simplemente a&amp;#241;adiendo
entre comillas el nombre del elemento XML. Esto no se encuentra en la mayor&amp;#237;a
de los ejemplos publicados por ah&amp;#237; sobre LINQ to XML, donde se utilizan documentos
XML sin definici&amp;#243;n de namespaces, cosa que no es muy habitual en el mundo real
&amp;#191;no?
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.byteabyte.net/aggbug.ashx?id=c905e111-7fbc-4489-bff8-71561d20a0a8" /&gt;</description>
      <comments>http://www.byteabyte.net/CommentView,guid,c905e111-7fbc-4489-bff8-71561d20a0a8.aspx</comments>
      <category>.NET</category>
      <category>WebSite</category>
    </item>
    <item>
      <trackback:ping>http://www.byteabyte.net/Trackback.aspx?guid=9957c712-eedb-46f9-a23e-a33de7f193c5</trackback:ping>
      <pingback:server>http://www.byteabyte.net/pingback.aspx</pingback:server>
      <pingback:target>http://www.byteabyte.net/PermaLink,guid,9957c712-eedb-46f9-a23e-a33de7f193c5.aspx</pingback:target>
      <dc:creator>Alejandro Mezcua</dc:creator>
      <wfw:comment>http://www.byteabyte.net/CommentView,guid,9957c712-eedb-46f9-a23e-a33de7f193c5.aspx</wfw:comment>
      <wfw:commentRss>http://www.byteabyte.net/SyndicationService.asmx/GetEntryCommentsRss?guid=9957c712-eedb-46f9-a23e-a33de7f193c5</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Desde hace tiempo existe una herramienta en .NET Framework llamada CLR Profiler que
permite examinar el heap de memoria del recolector de basura de .NET de una forma
gráfica con el objetivo de ayudar en la búsqueda de problemas relacionados
con el uso de memoria en las aplicaciones.
</p>
        <p>
          <a href="http://geeks.ms/blogs/unai/" target="_blank">Unai</a> y yo enseñamos
el uso de la herramienta en el último Code Camp en Huelva, entre otas cosas.
</p>
        <p>
Esta utilidad se ha portado a .NET Compact Framework con la llegada de la nueva versión
y está disponible como un <a href="http://geeks.ms/blogs/amezcua/archive/2007/09/13/power-toys-para-net-compact-framework-3-5.aspx" target="_blank">Power
Toy junto con otras herramientas</a>.
</p>
        <p>
Steven Pratschner acaba de publicar <a href="http://blogs.msdn.com/stevenpr/archive/2007/10/17/the-clrprofiler-for-the-net-compact-framework-part-1-getting-started.aspx" target="_blank">el
primero de una serie de artículos</a> dedicados a explicar con detalle el funcionamiento
de la herramienta utilizando una aplicación de ejemplo como guía.
</p>
        <p>
Si sospechas que tienes algún problema de consumo de memoria en tu aplicación
.NET te recomiendo que leas estos artículos que te ayudarán a intentar localizar
dónde está la causa.
</p>
        <img width="0" height="0" src="http://www.byteabyte.net/aggbug.ashx?id=9957c712-eedb-46f9-a23e-a33de7f193c5" />
      </body>
      <title>Introducci&amp;oacute;n al CLR Profiler de .NET Compact Framework</title>
      <guid isPermaLink="false">http://www.byteabyte.net/PermaLink,guid,9957c712-eedb-46f9-a23e-a33de7f193c5.aspx</guid>
      <link>http://www.byteabyte.net/2007/10/18/IntroduccioacutenAlCLRProfilerDeNETCompactFramework.aspx</link>
      <pubDate>Thu, 18 Oct 2007 12:41:01 GMT</pubDate>
      <description>&lt;p&gt;
Desde hace tiempo existe una herramienta en .NET Framework llamada CLR Profiler que
permite examinar el heap de memoria del recolector de basura de .NET de una forma
gr&amp;#225;fica con el objetivo de ayudar en la b&amp;#250;squeda de problemas relacionados
con el uso de memoria en las aplicaciones.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://geeks.ms/blogs/unai/" target="_blank"&gt;Unai&lt;/a&gt; y yo ense&amp;#241;amos
el uso de la herramienta en el &amp;#250;ltimo Code Camp en Huelva, entre otas cosas.
&lt;/p&gt;
&lt;p&gt;
Esta utilidad se ha portado a .NET Compact Framework con la llegada de la nueva versi&amp;#243;n
y est&amp;#225; disponible como un &lt;a href="http://geeks.ms/blogs/amezcua/archive/2007/09/13/power-toys-para-net-compact-framework-3-5.aspx" target="_blank"&gt;Power
Toy junto con otras herramientas&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
Steven Pratschner acaba de publicar &lt;a href="http://blogs.msdn.com/stevenpr/archive/2007/10/17/the-clrprofiler-for-the-net-compact-framework-part-1-getting-started.aspx" target="_blank"&gt;el
primero de una serie de art&amp;#237;culos&lt;/a&gt; dedicados a explicar con detalle el funcionamiento
de la herramienta utilizando una aplicaci&amp;#243;n de ejemplo como gu&amp;#237;a.
&lt;/p&gt;
&lt;p&gt;
Si sospechas que tienes alg&amp;#250;n problema de consumo de memoria en tu aplicaci&amp;#243;n
.NET te recomiendo que leas estos art&amp;#237;culos que te ayudar&amp;#225;n a intentar localizar
d&amp;#243;nde est&amp;#225; la causa.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.byteabyte.net/aggbug.ashx?id=9957c712-eedb-46f9-a23e-a33de7f193c5" /&gt;</description>
      <comments>http://www.byteabyte.net/CommentView,guid,9957c712-eedb-46f9-a23e-a33de7f193c5.aspx</comments>
      <category>.NET Compact Framework</category>
    </item>
    <item>
      <trackback:ping>http://www.byteabyte.net/Trackback.aspx?guid=e989540a-2891-4d16-867c-3b90083c6a79</trackback:ping>
      <pingback:server>http://www.byteabyte.net/pingback.aspx</pingback:server>
      <pingback:target>http://www.byteabyte.net/PermaLink,guid,e989540a-2891-4d16-867c-3b90083c6a79.aspx</pingback:target>
      <dc:creator>Alejandro Mezcua</dc:creator>
      <wfw:comment>http://www.byteabyte.net/CommentView,guid,e989540a-2891-4d16-867c-3b90083c6a79.aspx</wfw:comment>
      <wfw:commentRss>http://www.byteabyte.net/SyndicationService.asmx/GetEntryCommentsRss?guid=e989540a-2891-4d16-867c-3b90083c6a79</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Con las primeras betas de .NET Compact Framework 3.5 se incluían una serie de
utilidades que han desaparecido de la distribución encontrada en Visual Studio
2008. Estas aplicaciones <a title="Descarga de los Power Toys para .NET Compact Framework 3.5 (Septiembre de 2007) en MSDN" href="http://www.microsoft.com/downloads/details.aspx?FamilyId=C8174C14-A27D-4148-BF01-86C2E0953EAB&amp;displaylang=en" target="_blank">se
distribuyen ahora en un paquete de instalación independiente</a> y su versión
definitiva saldrá cuando se libere Visual Studio 2008 (actualmente están
en versión beta también). Estas herramientas son:
</p>
        <ul>
          <li>
            <strong>Remote Performance Monitor, GC Heap Viewer y CLR Profiler. </strong>Permiten
capturar métricas de rendimiento de aplicaciones para su análisis posterior
así como capturas del estado de memoria de una aplicación .NET en un momento
dado. Son muy útiles para verificar el uso de recursos por parte de las aplicaciones
y depurar así su rendimiento, así como para capturar posibles problemas
de leaks de memoria y similares. 
</li>
          <li>
            <strong>Application Configuration Tool (NetCFcfg.exe). </strong>Esta utilidad permite
especificar la versión de .NET Compact Framework con la que se quiere que se
ejecute una determinada aplicación .NET en caso de que se tengan varias versiones
instaladas en el dispositivo. Por ejemplo se puede haber desarrollado una aplicación
con .NET CF 2.0 pero se ha actualizado el sistema y se quiere forzar a que esa aplicación
concreta se ejecute con la versión 3.5, aunque la 2.0 sigue instalada también.
Esta herramienta se ejecuta directamente en el dispositivo. 
</li>
          <li>
            <strong>NETCF Service Metadata Tool.</strong> Con esta utilidad se pueden generar
clases proxy para su uso con Windows Communication Foundation para .NET Compact Framework.
Es el equivalente de svcutil.exe en el PC. 
</li>
          <li>
            <strong>Remote logging configuration tool</strong>. Esta herramienta permite configurar
la creación de archivos de log que incluyan información la carga, errores,
uso de interop, utilización de la red y ejecución de finalizadores de aplicaciones
.NET. Estos logs son muy útiles para la detección de posibles problemas
cuando una aplicación está en fase de pruebas. 
</li>
          <li>
            <strong>NETCF Network log viewer</strong>. Utilidad para la visualización de
los logs de uso de red obtenidos con la herramienta anterior. 
</li>
        </ul>
        <blockquote>
          <p>
(obtenido del <a href="http://blogs.msdn.com/netcfteam/archive/2007/09/12/power-toys-for-net-compact-framework-3-5-ctp-released.aspx" target="_blank">blog
del equipo de desarrollo de .NET CF</a>)
</p>
        </blockquote>
        <img width="0" height="0" src="http://www.byteabyte.net/aggbug.ashx?id=e989540a-2891-4d16-867c-3b90083c6a79" />
      </body>
      <title>Power Toys para .NET Compact Framework 3.5</title>
      <guid isPermaLink="false">http://www.byteabyte.net/PermaLink,guid,e989540a-2891-4d16-867c-3b90083c6a79.aspx</guid>
      <link>http://www.byteabyte.net/2007/09/13/PowerToysParaNETCompactFramework35.aspx</link>
      <pubDate>Thu, 13 Sep 2007 12:39:43 GMT</pubDate>
      <description>&lt;p&gt;
Con las primeras betas de .NET Compact Framework 3.5 se inclu&amp;#237;an una serie de
utilidades que han desaparecido de la distribuci&amp;#243;n encontrada en Visual Studio
2008. Estas aplicaciones &lt;a title="Descarga de los Power Toys para .NET Compact Framework 3.5 (Septiembre de 2007) en MSDN" href="http://www.microsoft.com/downloads/details.aspx?FamilyId=C8174C14-A27D-4148-BF01-86C2E0953EAB&amp;amp;displaylang=en" target="_blank"&gt;se
distribuyen ahora en un paquete de instalaci&amp;#243;n independiente&lt;/a&gt; y su versi&amp;#243;n
definitiva saldr&amp;#225; cuando se libere Visual Studio 2008 (actualmente est&amp;#225;n
en versi&amp;#243;n beta tambi&amp;#233;n). Estas herramientas son:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Remote Performance Monitor, GC Heap Viewer y CLR Profiler. &lt;/strong&gt;Permiten
capturar m&amp;#233;tricas de rendimiento de aplicaciones para su an&amp;#225;lisis posterior
as&amp;#237; como capturas del estado de memoria de una aplicaci&amp;#243;n .NET en un momento
dado. Son muy &amp;#250;tiles para verificar el uso de recursos por parte de las aplicaciones
y depurar as&amp;#237; su rendimiento, as&amp;#237; como para capturar posibles problemas
de leaks de memoria y similares. 
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Application Configuration Tool (NetCFcfg.exe). &lt;/strong&gt;Esta utilidad permite
especificar la versi&amp;#243;n de .NET Compact Framework con la que se quiere que se
ejecute una determinada aplicaci&amp;#243;n .NET en caso de que se tengan varias versiones
instaladas en el dispositivo. Por ejemplo se puede haber desarrollado una aplicaci&amp;#243;n
con .NET CF 2.0 pero se ha actualizado el sistema y se quiere forzar a que esa aplicaci&amp;#243;n
concreta se ejecute con la versi&amp;#243;n 3.5, aunque la 2.0 sigue instalada tambi&amp;#233;n.
Esta herramienta se ejecuta directamente en el dispositivo. 
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;NETCF Service Metadata Tool.&lt;/strong&gt; Con esta utilidad se pueden generar
clases proxy para su uso con Windows Communication Foundation para .NET Compact Framework.
Es el equivalente de svcutil.exe en el PC. 
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Remote logging configuration tool&lt;/strong&gt;. Esta herramienta permite configurar
la creaci&amp;#243;n de archivos de log que incluyan informaci&amp;#243;n la carga, errores,
uso de interop, utilizaci&amp;#243;n de la red y ejecuci&amp;#243;n de finalizadores de aplicaciones
.NET. Estos logs son muy &amp;#250;tiles para la detecci&amp;#243;n de posibles problemas
cuando una aplicaci&amp;#243;n est&amp;#225; en fase de pruebas. 
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;NETCF Network log viewer&lt;/strong&gt;. Utilidad para la visualizaci&amp;#243;n de
los logs de uso de red obtenidos con la herramienta anterior. 
&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt; 
&lt;p&gt;
(obtenido del &lt;a href="http://blogs.msdn.com/netcfteam/archive/2007/09/12/power-toys-for-net-compact-framework-3-5-ctp-released.aspx" target="_blank"&gt;blog
del equipo de desarrollo de .NET CF&lt;/a&gt;)
&lt;/p&gt;
&lt;/blockquote&gt;&lt;img width="0" height="0" src="http://www.byteabyte.net/aggbug.ashx?id=e989540a-2891-4d16-867c-3b90083c6a79" /&gt;</description>
      <comments>http://www.byteabyte.net/CommentView,guid,e989540a-2891-4d16-867c-3b90083c6a79.aspx</comments>
      <category>.NET Compact Framework</category>
    </item>
    <item>
      <trackback:ping>http://www.byteabyte.net/Trackback.aspx?guid=ed65a914-0e3e-481f-9156-3ad54bc29d3d</trackback:ping>
      <pingback:server>http://www.byteabyte.net/pingback.aspx</pingback:server>
      <pingback:target>http://www.byteabyte.net/PermaLink,guid,ed65a914-0e3e-481f-9156-3ad54bc29d3d.aspx</pingback:target>
      <dc:creator>Alejandro Mezcua</dc:creator>
      <wfw:comment>http://www.byteabyte.net/CommentView,guid,ed65a914-0e3e-481f-9156-3ad54bc29d3d.aspx</wfw:comment>
      <wfw:commentRss>http://www.byteabyte.net/SyndicationService.asmx/GetEntryCommentsRss?guid=ed65a914-0e3e-481f-9156-3ad54bc29d3d</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Los chicos de OpenNETCF <a title="Community OpenNETCF" href="http://community.opennetcf.com/" target="_blank">acaban
de abrir un nuevo sitio web</a> orientado a la comunidad de desarrolladores para dispositivos
basados en Windows CE / Windows Mobile / .NET Compact Framework. Son de los mayores
expertos que hay en este tema con lo que el contenido que encontraréis será de calidad.
</p>
        <p>
Inicialmente el sitio empieza con 3 puntos concretos:
</p>
        <ol>
          <li>
            <font face="Segoe UI">
              <a href="http://community.opennetcf.com/articles/" target="_blank">Artículos
técnicos</a>. Artículos interesantes sobre desarrollo. Si queréis contribuir, se les
pueden mandar artículos para su publicación.</font>
          </li>
          <li>
            <font face="Segoe UI">
              <a href="http://community.opennetcf.com/content/CodingCompetition.aspx" target="_blank">Concursos
de desarrollo</a>. Organizan concursos de desarrollo cada mes con premios interesantes
para los ganadores. Este mes se trata de presentar aplicaciones o componentes con
interfaces de usuario atractivas. Los premios son una copia de Visual Studio y un
dispositivo Windows Mobile a elegir de entre varios.</font>
          </li>
          <li>
            <font face="Segoe UI">
              <a href="http://svn.opennetcf.com/" target="_blank">Un servidor
basado en Subversion donde alojar proyectos Open Source</a>. Ellos han colgado de
momento varios de sus proyectos Open Source pero ponen el servidor a disposición de
la comunidad para alojar otros proyectos relacionados con el desarrollo orientado
a dispositivos.</font>
          </li>
        </ol>
        <p>
 
</p>
        <p>
La idea promete, así que estaremos atentos a ver cómo evoluciona.
</p>
        <img width="0" height="0" src="http://www.byteabyte.net/aggbug.ashx?id=ed65a914-0e3e-481f-9156-3ad54bc29d3d" />
      </body>
      <title>Nueva comunidad orientada al desarrollo para dispositivos</title>
      <guid isPermaLink="false">http://www.byteabyte.net/PermaLink,guid,ed65a914-0e3e-481f-9156-3ad54bc29d3d.aspx</guid>
      <link>http://www.byteabyte.net/2007/09/05/NuevaComunidadOrientadaAlDesarrolloParaDispositivos.aspx</link>
      <pubDate>Wed, 05 Sep 2007 07:54:16 GMT</pubDate>
      <description>&lt;p&gt;
Los chicos de OpenNETCF &lt;a title="Community OpenNETCF" href="http://community.opennetcf.com/" target="_blank"&gt;acaban
de abrir un nuevo sitio web&lt;/a&gt; orientado a la comunidad de desarrolladores para dispositivos
basados en Windows CE / Windows Mobile / .NET Compact Framework. Son de los mayores
expertos que hay en este tema con lo que el contenido que encontraréis será de calidad.
&lt;/p&gt;
&lt;p&gt;
Inicialmente el sitio empieza con 3 puntos concretos:
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;font face="Segoe UI"&gt;&lt;a href="http://community.opennetcf.com/articles/" target="_blank"&gt;Artículos
técnicos&lt;/a&gt;. Artículos interesantes sobre desarrollo. Si queréis contribuir, se les
pueden mandar artículos para su publicación.&lt;/font&gt; 
&lt;li&gt;
&lt;font face="Segoe UI"&gt;&lt;a href="http://community.opennetcf.com/content/CodingCompetition.aspx" target="_blank"&gt;Concursos
de desarrollo&lt;/a&gt;. Organizan concursos de desarrollo cada mes con premios interesantes
para los ganadores. Este mes se trata de presentar aplicaciones o componentes con
interfaces de usuario atractivas. Los premios son una copia de Visual Studio y un
dispositivo Windows Mobile a elegir de entre varios.&lt;/font&gt; 
&lt;li&gt;
&lt;font face="Segoe UI"&gt;&lt;a href="http://svn.opennetcf.com/" target="_blank"&gt;Un servidor
basado en Subversion donde alojar proyectos Open Source&lt;/a&gt;. Ellos han colgado de
momento varios de sus proyectos Open Source pero ponen el servidor a disposición de
la comunidad para alojar otros proyectos relacionados con el desarrollo orientado
a dispositivos.&lt;/font&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
La idea promete, así que estaremos atentos a ver cómo evoluciona.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.byteabyte.net/aggbug.ashx?id=ed65a914-0e3e-481f-9156-3ad54bc29d3d" /&gt;</description>
      <comments>http://www.byteabyte.net/CommentView,guid,ed65a914-0e3e-481f-9156-3ad54bc29d3d.aspx</comments>
      <category>.NET Compact Framework</category>
      <category>Windows Mobile</category>
    </item>
    <item>
      <trackback:ping>http://www.byteabyte.net/Trackback.aspx?guid=478bd0a2-ff57-47bb-8bc5-eaeda132b754</trackback:ping>
      <pingback:server>http://www.byteabyte.net/pingback.aspx</pingback:server>
      <pingback:target>http://www.byteabyte.net/PermaLink,guid,478bd0a2-ff57-47bb-8bc5-eaeda132b754.aspx</pingback:target>
      <dc:creator>Alejandro Mezcua</dc:creator>
      <wfw:comment>http://www.byteabyte.net/CommentView,guid,478bd0a2-ff57-47bb-8bc5-eaeda132b754.aspx</wfw:comment>
      <wfw:commentRss>http://www.byteabyte.net/SyndicationService.asmx/GetEntryCommentsRss?guid=478bd0a2-ff57-47bb-8bc5-eaeda132b754</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a title="Blog de Andrew Arnott" href="http://blogs.msdn.com/andrewarnottms/default.aspx" target="_blank">Andrew
Arnott</a>, uno de los programadores de .NET Compact Framework, ha <a title="The WCF subset supported by NetCF" href="http://blogs.msdn.com/andrewarnottms/archive/2007/08/21/the-wcf-subset-supported-by-netcf.aspx" target="_blank">publicado
una lista de las características de WCF (Windows Communication Foundation) que se
van a incluir en la nueva versión de .NET Compact Framework (3.5)</a>, esperada junto
con Visual Studio 2008. Como siempre (y lógicamente) .NET Compact Framework incorporará
un subconjunto de las características de su hermano mayor. Pero en este caso, .NET
Compact Framework incluye una funcionalidad diseñada en exclusiva para él que, según
aparece en esa lista, podrá ser utilizada desde WCF en el PC y es la <a title="Ejemplos de WCF para .NET Compact Framework" href="http://www.byteabyte.net/2007/03/27/EjemplosDeWCFParaNETCompactFramework.aspx" target="_blank">posibilidad
de realizar mensajería entre aplicaciones utilizando Microsoft Exchange como transporte
(ExchangeWebServiceMailBinding).</a> Este transporte de WCF ofrece ciertas características
bastante interesantes sobre todo en el caso de aplicaciones que se conectan esporádicamente
a la red, ya que Exchange almacena los mensajes recibidos hasta que pueden ser descargados
por el cliente cuando éste tenga conexión. He visto ejemplos de cómo funciona en dispositivos
móviles pero no lo he visto funcionando en el PC, así que habrá que probarlo...
</p>
        <img width="0" height="0" src="http://www.byteabyte.net/aggbug.ashx?id=478bd0a2-ff57-47bb-8bc5-eaeda132b754" />
      </body>
      <title>Caracter&amp;iacute;sticas de WCF incluidas en .NET Compact Framework 3.5</title>
      <guid isPermaLink="false">http://www.byteabyte.net/PermaLink,guid,478bd0a2-ff57-47bb-8bc5-eaeda132b754.aspx</guid>
      <link>http://www.byteabyte.net/2007/08/21/CaracteriacutesticasDeWCFIncluidasEnNETCompactFramework35.aspx</link>
      <pubDate>Tue, 21 Aug 2007 14:27:54 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a title="Blog de Andrew Arnott" href="http://blogs.msdn.com/andrewarnottms/default.aspx" target="_blank"&gt;Andrew
Arnott&lt;/a&gt;, uno de los programadores de .NET Compact Framework,&amp;nbsp;ha &lt;a title="The WCF subset supported by NetCF" href="http://blogs.msdn.com/andrewarnottms/archive/2007/08/21/the-wcf-subset-supported-by-netcf.aspx" target="_blank"&gt;publicado
una lista de las características de WCF (Windows Communication Foundation) que se
van a incluir en la nueva versión de .NET Compact Framework (3.5)&lt;/a&gt;, esperada junto
con Visual Studio 2008. Como siempre (y lógicamente) .NET Compact Framework incorporará
un subconjunto de las características de su hermano mayor. Pero en este caso, .NET
Compact Framework incluye una funcionalidad diseñada en exclusiva para él que, según
aparece en esa lista, podrá ser utilizada desde WCF en el PC y es la &lt;a title="Ejemplos de WCF para .NET Compact Framework" href="http://www.byteabyte.net/2007/03/27/EjemplosDeWCFParaNETCompactFramework.aspx" target="_blank"&gt;posibilidad
de realizar mensajería entre aplicaciones utilizando Microsoft Exchange como transporte
(ExchangeWebServiceMailBinding).&lt;/a&gt; Este transporte de WCF ofrece ciertas características
bastante interesantes sobre todo en el caso de aplicaciones que se conectan esporádicamente
a la red, ya que Exchange almacena los mensajes recibidos hasta que pueden ser descargados
por el cliente cuando éste tenga conexión. He visto ejemplos de cómo funciona en dispositivos
móviles pero no lo he visto funcionando en el PC, así que habrá que probarlo...
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.byteabyte.net/aggbug.ashx?id=478bd0a2-ff57-47bb-8bc5-eaeda132b754" /&gt;</description>
      <comments>http://www.byteabyte.net/CommentView,guid,478bd0a2-ff57-47bb-8bc5-eaeda132b754.aspx</comments>
      <category>.NET Compact Framework</category>
    </item>
  </channel>
</rss>