Microsoft e Intel anuncian Silverlight para Moblin

Microsoft e Intel acaban de anunciar el desarrollo de una implementación especifica de Silverlight para el S.O. basado en Linux de Intel, Moblin. Dicho sistema operativo tiene un repositorio de aplicaciones similar al del iPhone, donde sería distribuída dicho paquete.

Ha llamado especialmente la atención este anuncio ya que ya existe una implementación de Silverlight para Linux, Moonlight, tras el amparo de Novell. Pero Microsoft e Intel han justificado una nueva implementación en que mientras que Novell, con Moonlight, su target son S.O. de escritorio. Microsoft seguirá desarrollando implementaciones especificas, como puede ser la de Moblin, la de Nokia, etc. Ya que está sería con la ayuda de Intel para conseguir una mejor experiencia en equipos basados en Atom.

Para más información:

Programa de desarrollo de Intel Atom: http://appdeveloper.intel.com/en-us/
Moblin: http://moblin.org/
Moonlight: http://www.mono-project.com/Moonlight
Noticia: http://www.theregister.co.uk/2009/09/24/silverlight_to_linux/

RIA Services, parámetros con colecciones

Para quien no conozca RIA Services, son un conjunto de servicios que mejoran mucho el desarrollo de aplicaciones con Silverlight. Desde el propio equipo la definen así:

Microsoft .NET RIA Services simplifies the traditional n-tier application pattern by bringing together the ASP.NET and Silverlight platforms. RIA Services provides a pattern to write application logic that runs on the mid-tier and controls access to data for queries, changes and custom operations.

image

Esta gráfica de Nikhil Kothari explica muy bien donde se encuentra los RIA Services.

Las principales ventajas de RIA Services contra otras tecnologías de Servicios presentadas por Microsoft, son su integración con ASP.NET (por temas de autenticación, roles, etc.) como su ligera serialización usando Json.

El principal problema es que está muy centrado en las entidades tanto de la base de datos (Linq to SQL, Entity Framework, etc.) como las que nosotros podamos crear a mano. Centrándose así en las operaciones Add, Update, Delete, Get, etc. de las propias entidades.

El problema nos lo encontramos cuando queremos enviar del cliente al servidor una colección de entidades del servicio (entendamos como entidades del servicio aquellas que se exponen con un método Get, Update, Delete Add, etc.).

Las limitaciones de RIA Services se extienden hasta el punto de que un método solo puede devolver una colección de entidades, una entidad o un tipo serializable “built-in” (como los tipos básicos, el guid y poco más). Y los parámetros del método solo soporta los tipos básicos serializables “built-in” y una entidad.

¡No colecciones!

Para solucionar eso, primero debemos crear un Custom Operation y donde queríamos poner una colección he puesto un objeto serializado en Json. Y así lo serializo antes de llamar al método y justo en el manejador del método en el servicio.

La extension method que he usado para serializar la he publicado en mi proyecto SilverBox, que liberé la semana pasada en CodePlex:

http://silverbox.codeplex.com

Debéis obtener el último commit subido al Source Control y compilar la librería. Luego solo debéis referenciar la librería SilverBox.dll y en el archivo de código añadir la directiva “using SilverBox.Extensions”.

Y los tipos string y object tendrá un método SerializeToJson y Deserialize.