MCTS .NET 3.5 WPF : Examen 70-502 aprobado!!!

Esta tarde he aprobado el examen 70-502 que corresponde al MCTS de .NET Framework 3.5: Windows Presentation Foundation.

El examen consta como el libro de preparación explica, de seis partes:

  • Creación de una aplicación WPF
  • Creación de interfaces de usuario
  • Agregar y administrar contenido
  • Enlace a origenes de datos
  • Personalización de la apariencia
  • Configuración e implementación de aplicaciones de WPF

Con esto he obtenido la ceritficación de MCTS. Las próxima será la de ASP.NET que haré el examen en los proximos días.

Problemas y soluciones: Entity Framework, vistas y claves

Uno de los grandes problemas que me he encontrado a la hora de trabajar con Entity Framework (EF) es la de mapear una vista.

¿Dónde está el problema?

El problema está que una entidad de EF debe tener una clave primaria y las vistas no tienen claves primarias.

image

En una vista como la anterior realmente no tenemos una clave definida en la base de datos ya que los datos filtrados por Entidad generaría una gráfica como la siguiente:

image

Por defecto EF infiere que Entidad es una clave, lo infiere a partir de aquellos campos que SQL Server dice que no pueden ser nulos. En principio no da ningún problema, pero tenemos dos casos en los que ya encontramos conflictos.

  1. Obtenemos más de un resultado con Entidad idéntica. Al rellenar los objetos EF, presupone que al tener la misma clave primaria son el mismo objeto por lo que siempre tendríamos el primer objeto creado.
  2. Si filtramos por Entidad exclusivamente, EF presupone que solo vendrá un resultado por lo tanto se produce una excepción.

Hasta aquí bien, la solución podría ser quitar esa clave, EF no nos deja:

“Toda entidad tiene que tener una clave primaria”

¿Solución?

Para ello debemos de crear una clave artificial, el rowcount de nuestra vista puede ser una opción, ya que todas las claves deben ser distintas. Pero como aun así nuestro Entity Framework no lo detecta como clave debemos emergernos en el EDMX y modificar el XML a mano.

Para ello cabe destacar que el fichero XML tiene un elemento llamado <edmx:Runtime> que es el que a nosotros nos interesa y que éste consta de tres partes:

  1. SSDL: StorageModels: El modelo importado de la base de datos
  2. CSDL: ConceptualModels: El modelo generado a partir del importado y el que representará cada una de las entidades que luego usaremos por código
  3. C-S: Mappings: Es la que une ambos modelos

Nosotros primero debemos modificar el SSDL, el siguiente es el :

<EntityType Name="vXXXX">
  <Key
    <PropertyRef Name="Entidad" /> 
  </Key
  <Property Name="IDPK" Type="bigint" /> 
  <Property Name="Entidad" Type="int" Nullable="false" /> 
  <Property Name="FechaPrevista" Type="datetime" /> 
  <Property Name="Sobres" Type="int" />
</EntityType>

Este sería el modelo importado tal cual lo importó el diseñador. Como veis hemos creado el campo IDPK con el rowcount para establecerlo como clave. Para poder hacerlo se debe de hacer lo siguiente:

 

<EntityType Name="vXXXX"
  <Key
    <PropertyRef Name="IDPK" /> 
  </Key
  <Property Name="IDPK" Type="bigint" Nullable="false" /> 
  <Property Name="Entidad" Type="int" /> 
  <Property Name="FechaPrevista" Type="datetime" />
  <Property Name="Sobres" Type="int" />
</EntityType>

Entonces en el modelo de la base de datos ya tenemos IDPK como clave. Ahora solo nos queda cambiarlo en el diseñador. Y para ello debemos hacer click derecho en el campo y establecerlo como clave:

image 

Y así ya podremos trabajar normalmente con nuestra entidad.

Problemas posteriores

Problemas tendremos después cuando actualicemos el modelo desde la base de datos, porque el SSDL se modificará y tendremos que hacer a mano los cambios que ahora hemos hecho. En cambio en el diseñador no tendremos que hacer nada.

Firefox, la memoria y Windows 7

imageDesde que instalé el Windows 7 me decidí a usar Firefox por un par de complementos que me venían bastante bien (Tamper Data y Firebug). Es sabido de todos que Firefox tiene desde hace tiempo problemas de memoria, como podemos comprobar al buscar en Google.

Desde la versión 1 de Firefox, el caballo de batalla de los chicos de Mozilla ha sido mejorar la ineficiente gestión de memoria, y versión tras versión lo han ido consiguiendo.

Pero ahora llega el Windows 7 y uno de sus pilares se cae por si solo, “más rápido” y junto con él, “El mejor navegador hasta el momento”. La gestión de memoria vuelve a ser un problema.

Tras ejecutar el navegador y cargarse la página de inicio (Google para Firefox), el Firefox reserva y usa aproximadamente 42 MB de RAM. Para continuar con la prueba abrimos Facebook, la memoria se llega a duplicar en el tiempo de carga (más de 90 MB) y se estabiliza en 75 MB. Abrimos una tercera pestaña, GMail, alcanza las 175 MB durante la carga y se estabiliza en 145 MB. Una cuarta pestaña, Google Reader, se estabiliza en 157 MB.

Bien, para continuar cerraremos las 4 pestañas, dejándole una pestaña en blanco. Firefox se mantiene en 145 MB y tras 1 minuto aproximadamente se libera memoria hasta las 116 MB.

¡Con todas las pestañas cerradas!

Para continuar con nuestro experimento abriremos las mismas cuatro pestañas y a continuación las cerraré para ver la memoria en los dos estados.

Llega  las 200 MB durante la carga y se mantiene en 172 MB (20 MB más que las mismas pestañas). Tras cerrarlas se mantiene en 163 MB y tras un tiempo se reduce a 132 MB.

Vamos a repetir esto mismo cuatro veces y pondremos los 3 valores.

 

Cargado

Cerrado

Liberado

1

190 MB

153 MB

130 MB

2

192 MB

162 MB

159 MB

3

206 MB

167 MB

166 MB

4

217 MB

187 MB

161 MB

image

¿Os parece normal que con 4 pestañas use más de 200 MB de memoria?

Abrimos el debate. 🙂

PD: Podemos quejarnos de muchas cosas de IE8, pero dos cosas nadie las puede negar, ocupa tan solo 16 MB tras la carga inicial y la separación en procesos de las pestañas permite una mejor liberación de memoria ya que no queda ningún residuo de las pestañas.

Expression Web 3 herramientas de depuración y codificación de vídeo Silverlight

 

La próxima versión 3 de Microsoft ® Expresión ® Web le ofrece nuevas herramientas para la producción sitios Web de alta calidad basados en estándares más rápidamente y más fácilmente: el soporte incorporado de los estándares de la Web, capacidad de diseño sofisticado CSS y herramientas visuales de diagnóstico.

Con soporte de bastantes lenguajes de scripting y de lenguajes del lado del servidor, Expression Web ofrece la flexibilidad necesaria para utilizar la combinación de las tecnologías esenciales. Expression Web soporta PHP, HTML / XHTML, XML / XSLT, CSS, JavaScript, ASP.NET, ASP.NET AJAX, Silverlight, Flash, Windows Media, y Photoshop, así como la integración con Microsoft Visual Studio y Expression Studio.

Échale un vistazo a algunas de las próximas funciones de Expression Web 3:

SuperPreview ofrece diagnósticos visuales de cross-browser

Una cosa que sabemos de los desarrolladores Web es que la depuración de sus sitios precisos para la visualización en múltiples navegadores es tiempo malgastado. Muchos desarrolladores han dedicado una máquina o máquina virtual para pruebas del navegador, pero con SuperPreview Expression Web 3 puede depurar sus páginas en varios navegadores (Internet Explorer 6 – 8 y Firefox) en la misma máquina que se utiliza para el desarrollo.

image
Puede descargar la beta de Marzo’09 de Expression Web SuperPreview para IE aquí.

Snapshot Preview ahorra tiempo de depuración

Snapshot Preview proporciona una vista previa de alta fidelidad de las páginas locales de HTML, PHP o ASPX que se actualizan en vivo mientras escribe el código, que le ahorra el tiempo y el esfuerzo de la carga de la página en un navegador para ver los cambios en el código. Usted puede elegir la vista previa de la página en cualquier navegador instalado en una amplia gama de resoluciones.

image
Codificar vídeo Silverlight para Web streaming

Codificar e insertar rápidamente vídeo Silverlight en su sitio Web con una amplia gama de codificadores y características de transcodificación con la copia incluida de Expresión Codificador 3. También puede elegir entre una serie de skins para el reproductor de vídeo que mejor se adapte al diseño de su sitio. Codificador de alta calidad compatible con VC-1 y H.264 Silverlight vídeo para Web streaming.

La codificación y la inserción de vídeo Silverlight es tan sencillo como elegir Insertar> Multimedia> Codificar / Insertar vídeo Silverlight o arrastrar la herramienta de vídeo de la caja de herramientas en la vista Diseño o Código.

image 
A continuación, puede elegir el archivo de origen y, a continuación, el perfil de codificación que desee en función del ancho de banda y el dispositivo que lo vaya a reproducir.

Para obtener más información

Obtenga más información acerca de Expression Web 2 aquí.

Descargar el Expression Web de prueba aquí.

 

Traducido por Eugenio Estrada

Post original:

http://team.silverlight.net/announcements/expression-web-3-tools-simplify-debugging-and-silverlight-video-encoding/