Friend Assemblies, accediendo a un assembly desde otro…

Imagina que estás desarrollando un proyecto basado en pruebas y necesitas acceder a elementos internos de otro ensamblado, ¿cómo lo haces?

Una posibilidad es declarar todo aquello a lo que necesitas acceder de caracter público y así ya tienes acceso desde tu ensamblado de pruebas; sin embargo, hay un problema ya que no solo puedes acceder tú sino que estás dejándolo visible a cualquier otro ensamblado.

La otra es emplear el atributo InternalsVisibleTo definido en el namespace System.Runtime.CompilerServices. Cuando compilamos uno de nuestros ensamblados es posiblie definir qué otros ensamblados son considerados amigos dándole permiso para acceder a todos los miembros internos que se encuentren definidos de la misma forma que si se encontrara dentro del mismo namespace.

Su funcionamiento es sencillo, únicamente tendremos que añadir en la cabecera de nuestra clase el siguiente código:

[assembly: InternalsVisibleTo("Otro.Ensamblado.Tests")]

y podremos trabajar desde el ensamblado “Otro.Ensamblado.Tests” con los métodos y propiedades declaradas como internas sin tener que cambiarles su visibilidad a públicas.

¿Cómo rellenar el formulario W8 para cobrar en el Marketplace de WP7?

Hay un gran número de desarrolladores que se están volviendo un poco locos a la hora de conseguir validar correctamente el formulario W8 para poder obtener los beneficios fiscales a la hora de recibir el pago por sus aplicaciones en el Marketplace.

Si hace unos días Javi nos daba unas pautas de cómo podemos rellenar dicho formulario de forma correcta, Microsoft ha abierto un nuevo proceso que nos puede facilitar aún más el proceso: la validación del formulario vía e-mail antes de enviarlo.

Si queréis hacerlo, aquí tenéis los pasos:

  1. Escanear el documento y enviarlo a la dirección de correo mplcomm@microsoft.com.
  2. Tu formulario será validado en un tiempo estimado de siete días laborales
  3. Los formularios sólo serán validados una única vez
  4. Es necesario enviar una copia escrita por correo postal a la siguiente dirección para que los pagos puedan efectuarse correctamente.

    Microsoft – Windows Marketplace for Mobile
    Attn: Finance Department
    29011 Commerce Center Drive
    Valencia, CA 91355
    USA

Suerte con vuestras aplicaciones! :)

Nuevas aplicaciones en el Marketplace…

Durante Navidades, estuve realizando unas pruebas rápidas de cómo funcionaba el control MutiScaleImage de Silverlight dentro de la plataforma Windows Phone 7. Ya había jugado con la tecnología DeepZoom que hay por detrás con el pivot de la PartyQuijote y quería comprobar el funcionamiento en el teléfono.

Una de las utilidades que encontré fue la de visualizar un mapa de información de la red de metro y de ahí surgieron las dos aplicaciones sencillas que ahora mismo están disponibles para su descargada desde el Marketplace: “Madrid Metro Map” y “Barcelona Metro Map“.

El resultado visualmente es muy agradable pero falta mucha mejoría por detrás para que sean de verdad unas aplicaciones prácticas. Ya he recibido recomendaciones de que cree un sistema de recomendación de rutas o incluya información de los horarios de los trenes. Lo que no me gustó es que no sea posible que las imágenes se carguen desde el dispositivo, lo que obliga a que para poder consultar el mapa tengas que emplear una conexión a Internet para que descargue los tiles. Esperemos que en alguna actualización esto sea modificado…

Navegando entre páginas en Windows Phone 7…

Una de las preguntas más repetidas en los foros de desarrollo de Windows Phone 7 es la forma de navegar entre páginas por nuestras aplicaciones. Vamos a ver lo sencillo que es en el siguiente ejemplo:

Imaginemos que tenemos dos páginas en nuestra aplicación, una que fuera la MainPage.xaml y otra SecondPage.xaml. Si queremos ir de la primera a la segunda, podemos hacer uso de un HyperlinkButton y de su evento click introduciendo en su manejador el siguiente código.

private void hyperlinkButton1_Click(object sender, RoutedEventArgs e)
        {
            NavigationService.Navigate(new Uri("/SecondPage.xaml", UriKind.Relative));
        }

¿Y si queremos volver hacia atrás? ¿Es posible hacerlo? Sí, podemos hacer uso del método GoBack incluido en la clase NavigationService y establecer un vínculo de vuelta a la primera página.

private void hyperlinkButton2_Click(object sender, RoutedEventArgs e)
        {
            NavigationService.GoBack();
        }

La propiedad NavigationService da acceso al servicio de navegación del framework de Silverlight. Además de lo aquí expuesto, existen otras utilidades como el paso de parámetros por URL que comentaré en otra entrada. Podéis echarle un ojo en la página de MSDN.

Bases de datos para Windows Phone 7…

Uno de las principales cosas que se echan en falta a la hora de desarrollar nuestras aplicaciones para Windows Phone 7, es la falta de una base de datos integrada que nos permita almacenar nuestra información de forma local sin necesidad de depender constantemente del acceso a Internet del teléfono.

Probablemente en algún momento saquen algún motor integrado en la plataforma, mientras tanto están disponibles los siguientes proyectos que os pueden ayudar.

  • Sterling: es una base de datos con soporte LINQ to Objects que sirve tanto para tus aplicaciones en Silverlight de navegador como las de Windows Phone 7. Entre las ventajas que anuncian son su flexibilidad, su portabilidad, su poco peso y su forma no intrusiva de almacenamiento de la información. Aún se encuentra en beta, por lo que “Use at your own risk” como ellos mismos señalan. Si quieres empezar con Windows Phone 7 te puede ser útil esta guía de incio
  • Windows Phone 7 DataBase: otro proyecto de Codeplex que ofrece soporte de tablas con un número cualquiera de columna. Incluye soporte para el cifrado de la información con clave y lazy loading. Su desarrollo parece un poco menos activo que el de Sterling.
  • SQLite para Windows Phone 7: este proyecto de Dan Ardelean se trata de una migración de csharp-sqlite para que funcione sobre Isolated Storage. En el enlace podéis encontrar la aplicación de prueba que desarrolló y el código que os puede resultar útil si queréis hacer uso de ella.

Esperemos que no tarden mucho en incluir dentro de la plataforma algo mejor que trabajar con el IsolatedStorage directamente y nos quitemos la necesidad de usar librerías externas.

Estadísticas de tus aplicaciones para Windows Phone 7…

Una de las características que los desarrolladores más echan en falta del Marketplace de Windows Phone 7 es la de disponer de algún tipo de estadísticas sobre qué está pasando con tu aplicación. Datos como el número de instalaciones, las veces que se ejecuta tu aplicación y similares son necesarios para saber si estás haciendo bien el trabajo o no.

Conocida esta carencia en la primera versión del Marketplace lanzada junto con el teléfono, Microsoft se ha asociado con PreEmptive Solutions para cubrir esta necesidad básica mientras, supongo, desarrollen su propio sistema integrado directamente en tu cuenta del AppHub. Gracias a este acuerdo es posible obtener el Runtime Intelligence for Windows Phone de forma gratuita para usar en nuestras aplicaciones hasta finales de Marzo del año que viene con el cuál podremos conocer la siguiente información:

  • Número de ejecuciones de la aplicación
  • Número de usuarios únicos
  • Tiempo de uso de tus aplicaciones
  • Estadísticas generales sobre el sistema y el comportamiento de tu aplicación.

Para descargárselo, simplemente hay que registrarse en la dirección web de la compañía y recibirás toda la información necesaria en tu correo electrónico. Para comenzar a usarlo, te recomiendo el siguiente Quickstart en vídeo:

Como extra, también podrás utilizar las capacidades de Dotfuscator para proteger el código de tus aplicaciones como comentaré en otra entrada.

Windows Phone 7 Coding Camp en Madrid…

Este fin de semana se celebró en Madrid la primera Coding Camp a lo grande donde unas 150 personas de toda España se han reunido para dar rienda suelta a su creatividad durante 48 horas para crear juegos y aplicaciones para Windows Phone 7.

Una de las pruebas más fehaciente de lo fácil que es desarrollar para esta plataforma es que para la mayor parte de los asistentes, esta era su primera vez que se encontraban con XNA. Sin embargo, 48 horas después, eran capaces de tener un juego ejecutándose en un dispositivo, con una cierta lógica que lo hacía jugable e incluso algunos convirtiéndose en productos casi terminados para subirlos al Marketplace de Windows Phone 7.

También se comprobó que lo mejor es aliarse con un diseñador para dotar a tu juego de un nivel diferenciador del resto. Los 30 diseñadores supieron cubrir las necesidades de los 120 desarolladores realizando las imágenes y texturas necesarias para sus juegos.

Ahora solo falta esperar a que comercialicen los juegos y que tenga un teléfono para jugar con ellos. Si tú estás interesado en empezar a desarrollar para Windows Phone 7 échale un ojo a estos recursos.

Ampliando los controles de Windows Phone 7…

En las herramientas de desarrollo para Windows Phone 7 viene una serie de controles oficiales que pueden ser utilizados libremente en las aplicaciones que desarrollemos. Generalmente con los controles por defecto tenemos cubierta nuestras necesidades a la hora de crear nuestra aplicación; sin embargo, hay situaciones en las que es necesario un control que no viene incluido por defecto.

Antes esta situación tenemos dos opciones posibles: desarrollar nuestro propio control que satisfaga las necesidades que tenemos en nuestra aplicación o buscar si alguien ha desarrollado un control parecido para evitar reinventar la rueda. Si optas por la segunda opción pueden resultar interesante las dos opciones siguientes:

Durante la última edición de TecheEd Europe, estuvieron repartiendo códigos para obtener la versión final de forma gratuita una vez que la comercialicen. Si alguien está interesado en el toolkit de Telerik tengo disponibles cuatro códigos para canjear por la versión final. Los cuatro primeros que dejen su comentario se lo llevan :)