RIA Services tendrá su hueco en el CodeCamp de Tarragona

El 17 y 18 de octubre se va a celebrar en Tarragona el CodeCamp, que desde mi punto de vista, a ver ser un de los mayores eventos realizados este año y además, gratis!!

Gracias a varios grupos de usuarios que se han encargado de organizarlo, el evento contará con un montón de charlas interesantes; VStudio 2010, Silverlight, Mono, SharePoint, SQL Server, BI, desarrollo sobre dispositivos móviles etc… Podéis ver la agenda completa de sesiones y ponentes aquí.

En mi caso estaré dando un poco de guerra hablando de RIA Services. Intentaré ver durante la charla algunas de las principales características de RIA Services y poder ver cómo esta tecnología puede simplificar el desarrollo de aplicaciones RIA.

Banner2

Espero veros allí!

ADO.Net Data Services Offline (Astoria Offline)

Llevo ya un tiempo intentando desgranar algunas de las características que aportará RIA Services, tecnología que será de gran utilidad cuando vea la luz definitivamente.

Uno de los escenarios dónde esta tecnología puede venir muy bien, es para la creación de aplicaciones Silverlight parcialmente conectadas. Aplicaciones que pueden funcionar tanto en modo conectado como en modo desconectado. En modo desconectado, este tipo de aplicaciones debe ser capaz de funcionar son conexión con el servidor y de sincronizar la información cuando la conexión se restablece.

En este tipo de escenarios, es dónde Astoria Offline encaja.

La idea de esta tecnología, todavía en versión Alpha, es precisamente cubrir los escenarios de aplicaciones parcialmente conectadas, permitiendo añadir toda la lógica necesario para poder sincronizar datos entre una aplicación cliente y un servicio de ADO.NET Data Service.

Y aunque sólo es una suposición….si RIA Services se integra con ADO.NET Data Services y ADO.NET Data Services tendrá la funcionalidad Offline, por lógica en un futuro deberíamos poder hacer aplicaciones RIA haciendo uso de RIA Services y de las capacidades offline que nos proporcionará ADO.NET Data Services.

Por si estáis interesados en probarla, deciros que la versión disponible actualmente necesita Visual Studio 2008 SP1 y no es compatible con la última CTP de ADO.NET Data Services v1.5.

En próximos post prometo mostraros algún ejemplo de uso de esta nueva tecnología.

Silverlight 3 Out of browser

Una de las características más interesantes de Silverlight 3, desde el punto de vista del desarrollo de aplicaciones RIA, es la posibilidad de poder ejecutar una aplicación Silverlight fuera del navegador.

Para poder utilizar la aplicación no es necesario abrir el navegador e indicar la Url dónde se encuentra. La aplicación la podemos tener instalada en nuestro equipo y acceder a ella como si accediésemos a una aplicación WinForm tradicional.

Eso sí, la aplicación no deja de ser una aplicación Silverlight y sigue ejecutándose dentro de la sandbox, no teniendo acceso a todos los recursos de sistema.

Si queremos que nuestra aplicación pueda comportarse de esta manera, sólo tenemos que hacer unos pequeños ajustes en la configuración del proyecto.

En la pestaña de Silverlight de las propiedades del proyecto, tendremos que activar el check de permitir que la aplicación se pueda ejecutar fuera del navegador.

image

Una vez activado esta opción podremos configurar diversos parámetros que nos permiten personalizar cómo se instala; el nombre de la aplicación, el nombre del acceso directo, la descripción, los diferentes iconos que se usarán al instalarse…

image

Una vez hechos los cambios en las propiedades se creará un nuevo fichero en el proyecto llamado OutOfBrowserSettings.xml, que contiene la configuración establecida.

image 

<OutOfBrowserSettings ShortName="AppEjemplo" EnableGPUAcceleration="False" ShowInstallMenuItem="True">
<OutOfBrowserSettings.Blurb>Esta es una aplicacion de ejemplo.....</OutOfBrowserSettings.Blurb>
<OutOfBrowserSettings.WindowSettings>
<WindowSettings Title="Aplicacion de Ejemplo" />
</OutOfBrowserSettings.WindowSettings>
<OutOfBrowserSettings.Icons />
</OutOfBrowserSettings>
 
Ya está, no es necesario hacer nada más.
 
Si ejecutamos nuestra aplicación, desde en el menú contextual de la aplicación encontraremos una nueva opción, que nos permitirá instalar la aplicación fuera del navegador.
 
Fijaros, que en la opción pone “AppEjemplo” porque en la configuración nosotros lo hemos indicado así.
image
 
Si decidimos instalar la aplicación, nos aparecerá una ventana como la que pongo a continuación:

image

Y ya está instalada. La aplicación queda instalada en C:Users[Nombre de Usuario]AppDataLocalLowMicrosoftSilverlightOutOfBrowser.

Si una vez instalada pinchamos sobre el acceso directo del menú de inicio o del escritorio tendremos la aplicación funcionando, fuera del navegador.

Y ya por último, decir que por código también podemos dar la orden de que la aplicación se instale, y por ejemplo, usar un botón de la aplicación en lugar del menú contextual.

private void AppInstal_Click(object sender, RoutedEventArgs e)
{
Application.Current.Install();
}

RIA Services y ADO.NET Data Service

Llevamos viendo desde hace ya un tiempo algunas de las características de RIA Services, una tecnología que me parece bastante interesante y aprovechable.

En esta ocasión toca ver unas de las novedades de la última versión de julio, que es cómo se puede integrar con RIA Services con ADO.NET Data Service.

Como ya vimos en un post anterior la arquitectura de una aplicación RIA Services podría ser la siguiente:

RIA3_2393909E

Se pueden ver ver dos componentes que aporta RIA Services, uno en la parte cliente ( DomainContext ) y otro en la parte servidora ( DomainService ), que se comunican a través de la red; red local, internet…

En lugar de tener un sistema propio de comunicación entre ambos componentes, una alternativa lógica puede ser usar una ya existente, como ADO.NET Data Service, una tecnología que nos permite definir servicios de datos de tipo RESTFull sobre un cierto modelo de datos, basándose en mecanismos y tecnologías a las que se está habituado, como el uso de URLs, XML o JSON.

En esta primera versión, partiendo de una aplicación hecha con RIA Services, vamos a poder exponer el componente servidor ( DomainService ) a través de ADO.NET Data Services y consumirlo desde el cliente con prácticamente ningún cambio.

En este ejemplo partiremos de una aplicación de ejemplo que usa la base de datos adventureworks y que muestra en un grid de Silverlight la tabla de productos. La aplicación RIA la haríamos siguiendo los pasos que hemos visto en post anteriores.

Una vez que tenemos la aplicación funcionando, tendremos que añadir un nuevo item al proyecto web, un item de tipo “Domain ADO.NET Data Service”.

image

Una vez creado el servicio de ADO.NET Data Services le tenemos que indicar cuál va a ser el origen de datos sobre el que va a trabajar el servicio. En este caso, el origen de datos tiene que ser nuestro servicio de RIA Services, el componente DomainService.

public class EmployeeDataService : DataService<ProductService>, IServiceProvider
{
// This method is called only once to initialize service-wide policies.
public static void InitializeService(IDataServiceConfiguration config)
{
// TODO: set rules to indicate which entity sets and service operations are visible, updatable, etc.
// Examples:
config.SetEntitySetAccessRule("*", EntitySetRights.All);
config.SetServiceOperationAccessRule("*", ServiceOperationRights.All);
}
 
Fijaros, para los que conocéis ADO.NET Data Services, que el funcionamiento es exactamente igual al que había hasta ahora, con la única diferencia de que hay que indica el componente DomainService de RIA Services, en lugar de un modelo de datos de EF o LINQ to SQL.

Una vez hecho esto, tendremos que hacer un paso más en el DomainService, para que desde el cliente pueda ser consumido.

Añadimos la referencia:

using System.Data.Services.Providers.DomainService;

Y junto al atributo [EnableClientAccess] añadimos este otro:

 
[DomainIdentifier("Atom", CodeProcessor = typeof(AtomCodeProcessor))]

Con estos cambios, ya tenemos nuestro servicio preparado para ser consumido. Si arrancamos el servicio ya podemos hacerle peticiones REST.
 
En el proyecto cliente, añadimos las referencias a las librerías System.Windows.Ria.Atom.dll y System.Data.Services.Client.Protocol.dll que se encuentran en: %ProgramFiles%Microsoft SDKsRIA Servicesv1.0LibrariesSilverlight.

Una vez hecho, el código para consumir el servicio quedaría de la siguiente manera:

using System.Windows.Browser;
using System.Data.Services.Client.Protocol;
using System.Windows.Ria.Data;

…………….

ProductDomainContext productContext = new ProductDomainContext(
new AtomDomainClient(
new Uri(HtmlPage.Document.DocumentUri, "ProductService.svc")));

ProductGrid.ItemsSource = productContext.Products;
productContext.Load(productContext.GetProductQuery());
 
Fijaros, que la diferencia entre consumirlo directamente o a través de ADO.NET Data Services es usar un constructor diferente para el objeto productContext. El resto de funcionalidad es exactamente igual.
 
De todas maneras, comentar, según comentan en la documentación, que la integración entre RIA Services y ADO.NET Data Services está en una primera fase y que se preveen opciones y alternativas más avanzadas

RIA Services; cogiendo fuerza para continuar!

Ya se nos está pasando el síndrome post-vacaciones y poco a poco habrá que coger fuerzas para retomar lo que habíamos dejado a medias antes del verano, como la revisión de RIA Services, una tecnología que me parece bastante interesante.

Pero antes de continuar, mejor hacer un resumen de lo visto hasta el momento, para así poder retomarlo con más fuerza!

Prometo más!

Addin para Visual Studio: Solution Factory

En codeplex se encuentra este interesante Addin que permite exportar soluciones de múltiples proyectos como plantillas.

Para los que no estéis familiarizados con las plantillas, sabed que Visual Studio ya incluye una opción que permite exportar proyectos como plantillas, pero no permite exportar soluciones multi-proyectos, sólo un proyecto o un item concreto. Podéis encontrar información detallada en este enlace sobre esta opción. Este pantallazo corresponde con el asistente de Visual Studio:

image

De todas maneras, la idea de este addin tampoco es llenar este vacio, al menos de momento.

image

El objetivo con el que se presenta es crear plantillas de soluciones que contengan varios proyectos que puedan ser usados para ofrecer buenas prácticas de desarrollo.

Por ejemplo, para todos aquellos que hagáis formación o charlas seguro que os va ser muy útil.

En este tipo de actos es muy típico partir de un proyecto de ejemplo con parte de la funcionalidad implementada y se va modificando a lo largo de formación o de la charla.

Una vez terminado el evento, los cambios realizados no nos interesan, ya que en un evento posterior, queremos volver a empezar desde el principio.

En este escenario, podríamos crear una plantilla con la solución en su estado inicial y de esta manera siempre que empecemos la formación crearemos una nueva solución a partir de la plantilla.

image

 

 

Espero que os sea de utilidad!

Doloto o cómo optimizar la descarga del código javascript

Es raro ver una aplicación que directa o indirectamente no use código JavaScript, sobre todo desde la aparición de ASP.NET Ajax y todo esto de la Web 2.0.

image

Este hecho provoca, que cuando hacemos la primera petición a nuestra página, ésta tenga que descargarse todo el código JavaScript que tenga, vaya o no vaya a utilizarlo, lo que provoca una pérdida de rendimiento en nuestra aplicación, ya que en la mayoría de los casos no se va a usar todo el código descargado, como podéis ver en esta gráfica:

2494106663_181ee615a7_o

Doloto es una herramienta de Microsoft Research para optimizar la descarga del código JavaScript, reduciendo el código JavaScript que se descarga.

Según los datos que dan, reducen se puede llegar a reducir el código en un 40% y hacer la aplicación un 30-40% más rápida.

La información completa la podéis encontrar aquí.

[Artalde] ADO.NET Entity Framework Presente y Futuro

El próximo 16 de septiembre, miércoles, tendrá lugar la siguiente charla del grupo de usuarios Artalde, esta vez sobre Entity Framework.

El lugar y hora, el de siempre; en la Universidad de Deusto, de 19:00 a 21:00 horas.

Esta vez será el gran Unai Zorrilla el encargado de contarnos todas las maravillas de esta tecnología, en la cual tiene una amplia experiencia.

 

Si vais a acudir no os olvidéis de registraros aquí. 

Agenda:

19:00 – 19:15 Registro.
19:15 – 21:00 ADO. NET Entity Framework Presente y Futuro

Introducción a Entity Framework

  • Modelos conceptuales
  • Desajuste de impedancias
  • Domain Driven Design

Entity Framework v.1

  • Creación de modelos conceptuales con EDM
  • Modelos conceptuales avanzados
  • Los servicios de Objetos y Linq To Entities

Entity Framework v.4

  • Nuevos modelos de generación de código
  • POCO

· Selft Tracking Entities

  • Novedades en el modelador de entidades
  • Model First
  • Object First

Addin para desactivar las depuracion javascript en Visual Studio

Ya no es una novedad que una de las nuevas características que aparecieron con Visual Studio 2008 fue la posibilidad de depurar el código javascript de nuestras aplicaciones ASP.NET.

La característica es muy interesante y en más de una situación es tremendamente útil…pero no es menos cierto que si nuestra aplicación tiene mucho código javascript y no necesitamos depurarlo, esta opción puede mermar nuestra productividad en el proceso de desarrollo.

Aunque no vayamos a necesitarlo, si nuestra página tiene código javascript, Visual Studio realizar las acciones necesarias para que se pueda depurar, proceso que se realiza cada vez que se carga una página de nuestra aplicación.

Por cierto, ten en cuenta que si usas componentes de terceros es posible que éstos hagan uso de código javascript y éste también se prepara para ser depurado. En modo depuración puedes ver los ficheros js preparados para depuración dentro de la sección “Scripts Documents”, dentro del Solution Explorer.

Por este motivo, es conveniente desactivar la depuración javascript siempre que no vayamos a necesitarlo.

Aunque esta opción se puede desactivar desde las opciones de Internet, es mucho más ágil y productivo hacerlo directamente desde el entorno de desarrollo, cosa que sin este addin que aquí os comento no se podría hacer.

Gracias a mi compañero Rafa he descubierto en codeplex un addin para Visual Studio que nos va a permitir de forma cómoda y sencilla desactivar la depuración javascript siempre que no la necesitemos.

Podéis descargaros el addin desde aquí

image