[Eventos] Plain Concepts Architecture Day

El dia 29 de Octubre tendré el placer junto a mis compañeros de Plain Concepts  de participar en un nuevo Architecture Day,  muy dedicado a puntos fundamentales hoy en día como son los siguientes:

 

  • Estado del arte en tecnologías y estilos arquitectónicos en tecnologías Microsoft.
  • El stack de desarrollo de aplicaciones web.
  • Arquitecturas en la nube.
  • Gestión de la identidad.

 

Como siempre, en este tipo de eventos, intentaremos que sea lo más ágil posible, así como involucrar a todos los asistentes para establecer un debate y así poder resolver todas las dudas o poner de manifiesto diferentes pensamientos.

 

Aquí tenéis el enlace del evento dónde podéis ver más información y registraros en el mismo..

 

http://www.plainconcepts.com/ArchitectureDay/

 

Saludos

unai

[WebCast]–Siéntete seguro con tu KATANA!!!

Hace ya tiempo del último WebCast en el que tuve el placer de intervenir, novedades de EF 6 con Diego Vega, en el que participamos mas de 100 personas, lo cual no está nada, pero que nada mal. En esta ocasión me juntaré con mi compañero Ibon para hablar de seguridad con Katana. Seguro que ya sois muchos los que sabéis y habéis oído hablar acerca de Owin y Katana y que os podéis preguntar como trabajar los mecanismos de autenticación y autorización con este nuevo framework, pues bien, este es el sitio indicado,  no os lo perdáis….

 

NOTA: el web cast no tratará sobre introducción a Katana, para ello, podéis ver/leer el blog del amigo Jose Maria Aguilar, el cual contiene una excelente serie sobre el tema, serie que va por la cuarta entrega ya.

 

Registrohttps://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032567495&Culture=es-ES&community=0

Siéntete seguro con tu Katana!

Id. de evento:
1032567495

Idiomas:
Español.

Productos:
Microsoft ASP.NET y Windows Azure.

Público:
Generalista desarrollador.

Seguramente muchos ya habréis oído algo sobre Katana, quizás algunos hasta habéis hecho vuestras primeras líneas de este proyecto de Microsoft  para flexibilizar nuestras aplicaciones ASP.NET. Pues bien, a lo largo de este Web Cast veremos cómo autenticar y autorizar nuestras aplicaciones ASP.NET MVC y nuestros HTTP API construídas sobre Katana, tanto de forma personalizada como utilizando Windows Azure Active Directory, WADD, para entornos empresariales.


PONENTES:

Unai Zorrilla lleva de cerca de 12 años desarrollando software como consultor independiente y en diferentes empresas privadas, realizando las tareas de arquitectura de software bajo plataforma .NET y tocando distintas ramas tecnológicas.

Ha sido reconocido con el galardón de MVP, colabora activamente con la comunidad en evento de formación, talleres de arquitectura y giras de producto

http://geeks.ms/blogs/unai/

Ibon Landa lleva más de 12 años dedicado al desarrollo de software dónde ha tenido la oportunidad de trabajar en diferentes entornos y tecnologías. Participa de forma activa en la comunidad, escribiendo su blog, manteniendo un portal sobre Cloud Computing y colaborando grupos de usuarios en eventos de formación, talleres y giras de producto. Ha sido reconocido con el galardón de Microsoft MVP en la categoría de Windows Azure.

http://geeks.ms/blogs/ilanda

@ibonilm

 

Saludos

unai

Migraciones e inicializadores en EF 6

Bueno, creo que esta entrada es de esas que a alguno les quitará alguna hora de encima de volverse loco…. Con EF 6 el equipo de trabajo ha hecho un pequeño cambio de comportamiento en los inicializadores dependiendo de si Migrations está activa o no.  Concretamente, inicializadores como DropCreateDatabaseAlways y DropCreateDatabaseIfModelChanges no funcionan como esperamos si la base de datos no existe, de hecho, si intentamos ejecutar nuestro código con uno de estos inicializadores el sistema nos dará una bonita excepción con un mensaje parecido al siguiente:

Additional information: Migrations is enabled for context ‘XXXXX’ but the database does not exist or contains no mapped tables. Use Migrations to create the database and its tables, for example by running the ‘Update-Database’ command from the Package Manager Console.

El error es claro, pero.. ¿Porqué?. Personalmente a mi este comportamiento no me gusta nada, de hecho hay escenarios dónde quiero tener estos inicializadores con sus Seed, como por ejemplo para mis tests integrados contra la BD. Usar MigrateToLatestVersionDatabase tampoco es una solución por dos motivos, esta no borra la base de datos anterior, y yo es algo que puedo necesitar y además tampoco tiene un seed a usar, se supone que para eso tenemos nuestra configuración de migraciones, pero, no es lo que quiero.

 

Para todos aquellos que como yo, queráis tener un inicializador que borre y cree la base de datos en la ultima migración conocida podéis utilizar el siguiente código, que espero pronto lo suba a mi proyecto de contrib.

 

 

EDITADO: Parece que para EF 6.1 volveremos a tener el comportamiento correcto

 

 

Un saludo

 

Unai


Algunas notas sobre las configuraciones por código en EF 6

Bien, por suerte, ya estoy empezando a ver bastante código con EF 6 y también, como es lógico, estoy viendo como se usan, bien o mal, ciertas piezas que son nuevas en esta versión. Una de las cosas que me llama la atención tiene que ver con DbConfiguration, el nuevo componente que nos permitirá establecer la configuración para todos los contextos de trabajo, y esto es importante hacerlo notar, porque mucha gente entiende esta configuración para una unidad de trabajo en concreto y no como una configuración global.

 

Entity Framework 6 hace una búsqueda en todos los ensamblados del App Domain en busca de una clase que implemente DbConfiguration y entiende que solamente una de estas clases debería existir, avisándonos en caso contrario con una bonita excepción… Por eso, en mi opinión, no es buena práctica que como creadores de una unidad de trabajo establezcamos cual será el DbConfiguration, deberíamos dejar este trabajo para un último término, en nuestro frontal Web, Web API etc… El riesgo que corremos sino seguimos esta práctica es la de caer en la existencia de múltiples objetos de configuración, además, esto que acabamos de proponer tiene más sentido aún sinos damos cuenta de que DbConfiguration es el mecanismo para proporcionar servicios a la infraestructura de EF 6 y por lo tanto si queremos juntarlo con nuestro contenedor de DI deberemos hacerlo lo más cerca de nuestro composition root.

 

Para los escenarios en los que hay múltiples ensamblados con múltiples tipos, la búsqueda de nuestra configuración, lógicamente, puede llevar más tiempo del deseado. Para evitar esto, EF 6 nos permite establecer en nuestra sección del archivo de configuración que elemento en concreto queremos usar:

<entityFramework codeConfigurationType="MyNamespace.MyDbConfiguration, MyAssembly">
</entityFramework>

Otro de los escenarios posibles con el trabajo de DbConfiguration, aunque no es demasiado habitual, consiste en aquel en el que no somos dueños de esta clase de configuración pero queremos establecer nuevas implementaciones de servicios o incluso cambiar algunas de las implementaciones establecidas. Para ello, DbConfiguration nos ofrece un evento, Loaded, en el que nos podemos subscribir y tener acceso a este objeto de configuración como podemos ver a continuación gracias a la clase DbConfigurationEventArgs.

 

Bueno, hasta aquí esta pequeña entrada, espero tener tiempo para escribir de forma más profunda….

 

saludos

Unai

Entity Framework 6 en MsCoders Madrid

Mañana tendré la oportunidad de juntarme otra vez con los amigos de MsCoders Madrid para hablar un poco de Entity Framework, tal y como dicen el extracto de la charla – mesa redonda, la idea es :

“En esta mesa redonda abordaremos el tema de los ORMs y hablaremos acerca de Entity Framework. Comparte con nosotros tu experiencia, dudas, problemas, trucos… que hayas tenido en proyectos reales y recibe consejo de una de los programadores del equipo de EF que cuenta con unos cuantos pull requests a sus espaldas. Te invitamos a formar parte de esta reunión técnica.”

Espero veros por alli mañana 3 de Octubre en :

 

  • Centro de Innovación Vaguada
  • Avda. Monforte de Lemos, 38
  • Teléfono: 913782508
  • Autobús: Líneas 49, 83, 128, 132, 137
  • Metro: Línea 9, Barrio del Pilar

Por cierto, para los asistentes, gracias a www.campusmvp.com daremos un cupón para el libro de EF y el curso de Entity Framework que os animo desde aquí a hacer

 

 

 

Un saludo

Unai