Mario's profileMario Rodriguez MierPhotosBlogListsMore ![]() | Help |
|
|
Ejemplo de extensión de LinQ para manejo de listas de Sharepoint (Sharepoint List Rapid Implementation )
Con este ejemplo no pretendo hacer una implementación eficiente en cuanto a performance y comunicación de red si no que mas bien pretendo mostrar las facilidades para extender LinQ. Posteriormente daré algunas pautas para que puedan ser realizadas modificaciones al codigofuente para optimizar la implementación. Aquellos que hayan leído y trabajando con LINQ sabrán que una de las mayores ventajas es poder escribir en lenguaje p-seudo SQL sentencias que permitan manipular datos independientemente de la fuente de donde estos persistan. Esto permite una mayor claridad en el código, legibilidad, mantenibilidad y por sobre todo nos permite centrarnos en la resolución de la problemática de negocios que deseamos resolver y no en detalles no funcionales como lo es el acceso a datos. Con esta implementación deseamos que los desarrolladores que pretenden integrar sus aplicaciones con sistemas de manejo de contenido (Conent Managemt Systems), en este caso en particular sharepoint, lo puedan hacer de una manera facil e intuitiva como se muestra a continuación :
,"palabra clave" ,"dominio" );
Como pueden observar la simplicidad a la hora de escribir código referente a consultas que podamos hacer sobre las listas de sharepoint es bastante significativa si lo comparamos con la manera habitual que hasta el momento usábamos. Aquellos que lo hayan hecho sabrán bien de lo que estoy hablando, ya que habrán tenido que escribir bastantes líneas de código para poder hacer lo que nosotros hemos hecho en una sola sentencia.
Para lograr este objetivo simplemente se debe realizar un “mapeo” utilizando atributos de objetos a las listas de sharepoint como se muestra en el siguiente ejemplo:
Como se puede apreciar en el ejemplo mediante “atributos” (prefiero llamarlos anotaciones) podemos especificar la lista sharepoint a la cual queremos hacer referencia:
que campo de la lista será “mapeado” en propiedades o campos de la clase:
y también podemos especificar cuál será la propiedad o campo que representa el identificador de registro en la lista de sharepoint:
Una vez realizado este “mapeo” en cual puede ser generado por una herramienta al estilo sqlmetal.exe que vienen con LINQ para realizar el “mapeo” de bases de datos solamente nos resta definir una clase donde exponemos todas las listas que estaremos usando en ese sitio, como se muestra en el siguiente ejemplo:
De esta manera tenemos todo lo necesario para poder escribir la consulta LINQ que propusimos al comienzo de este artículo. Próximamente cuando este mas acabado y sea digno de mostrar estaré poniendo en este blog el código fuente de la implementación. Si lo deseas tener antes, por favor escríbeme a mi dirección de correo solicitándolo que con mucho gusto de lo hare llegar. Escribe a mario.rodriguez@microsoft.com. Espero que te haya gustado y sobre todo que te haya servido de utilidad. Concurso Emprendedores.NET 2006 de la Universidad Federico Santa María.Gracias al fuerte convencimiento en Microsoft de apoyar el desarrollo de la economía local y como parte de mi trabajo, he tenido la oportunidad de financiar proyectos para alumnos emprendedores de la Universidad Federico Santa María en Chile. Para esto, en conjunto con el centro de emprendedores de la universidad (3ie) decidimos realizar un concurso para alumnos donde se financiaron 4 proyectos con el objetivo de ser incubados.
Esta experiencia fue muy grata y productiva a la vez, pues al ver la calidad de los trabajos presentados, la seriedad de los mismos y el impacto que podían tener en la industria local haciendo un buen uso de la tecnología, quedé impactado. Se presentaron 29 trabajos y participaron cerca de 94 alumnos de la universidad, algunos de estos alumnos fueron capacitados gratuitamente en el uso de herramientas de desarrollo de Microsoft para que pudieran hacer y defender con bases sólidas sus trabajos desde el punto de vista tecnológico.
Los proyectos ganadores fueron (en orden alfabético):
Como podrán apreciar, para el jurado no fue tarea fácil, pues el resto de los trabajos no distaban mucho de los antes mencionados. La calidad, lo novedoso de los trabajos y el impacto en la economía local fueron los parámetros más relevantes a la hora de tomar una decisión.
Quiero agradecer a los miembros del jurado quienes tuvieron en sus manos la responsabilidad de seleccionar a los equipos ganadores. Ellos son:
También quiero agradecer la colaboración de Claudia Villalobos del 3iE, Wilson Pais y José Antonio Barrigas, ambos de Microsoft Chile por todo el apoyo y aporte a este concurso. Workshop IDEAS 2006, Universidad Nacional de la Plata, ArgentinaDel 24 al 28 de Abril de 2006 se realizó una nueva edición del workshop IDEAS (Iberoamericano de Ingeniería de Requisitos y Ambientes de Software) en la Universidad Nacional de la Plata, Argentina. En este workshop participaron investigadores de varias universidades de Iberoamérica (Argentina, Cuba, España, Venezuela, Brasil, México, Colombia, entre otros).
En este evento tuve la oportunidad de impartir una charla en conjunto con el PhD. Miguel Katrib, profesor titular de la Universidad de La Habana, sobre las “Innovaciones en los lenguajes C# 2.0 y el futuro C#3.0 y la integración de consultas. El Proyecto LINQ” (bájate la presentación haciendo click aquí). Entre los temas que detallamos se encuentran:
Extensión Method: static void Where (this IEnumerable ítems , … ); Expresiones Lambda: f => Autor.Nombre.Contains(“Alf”); Inicializadores de Objetos: new Film { Titulo = “Jaw”, Genero = TGenero.Terror}; Tipos Anónimos : new { f.Titulo, f.Director}; Expresiones de Consulta : from … where … select; Arboles de Expresiones : Expression<T>;
Por otra parte, destacamos la importancia de las modificaciones introducidas en C# 2.0 como son: Genericidad, las modificaciones a los Iteradores e instrucciones del tipo yield return.
Entre las cosas más novedosas a las cuales hicimos referencia se encuentra la trasparencia de poder hacer consultas integradas en el lenguaje a diferentes fuentes de datos, como son: Colecciones en Memoria, Archivos XMLs y Bases de Datos y, lo más importante, poder realizar consultas que mezclen diversas fuentes de datos.
Prontamente estaré escribiendo un artículo que detalla todas las innovaciones realizadas en C#2.0 y C#3.0 el cual documentaré con bastantes ejemplos para que puedan sacar sus propias conclusiones.
Todas estas innovaciones apuntan a permitir en un futuro mediato poder obtener código de muy alta calidad y simplicidad permitiendo a los sistemas ser mucho más desacoplados, mantenibles, y aumentar considerablemente la productividad por hora de desarrollador. Quiero agradecer la hospitalidad y los buenos momentos que pasamos a: Claudia Pons, Silvia Gordillo y Gustavo Rossi.
Por el momento los dejo y me despido con esta sentencia y una pregunta:
var despedidas = from s in saludos where s.Idioma =”Español” select s; foreach ( var s in despedidas) { Console.WriteLine(s.Saludo); } El resultado es: Adios Hasta Pronto Nos Vemos Que te vaya bien ……
Pregunta: Cuales son las posibles fuentes de datos que estoy usando? A: Colecciones en Memoria B: Base de Datos C: Archivo XML
Nota:Puedes seleccionar más de una. Microsoft Research Academic Summit en Guadalajara, Jalisco, México.El pasado 17 de Mayo de 2006, se realizó en Guadalajara el 4 encuentro de investigadores de Microsoft Research con investigadores de las universidades más importantes de Latinoamérica. Fue un evento muy emotivo y de muy alta calidad donde se expusieron trabajos realizados por investigadores de MSR y de importantes universidades de la región. Es de destacar la conferencia impartida por Álvaro Soto, de la Pontificia Universidad Católica de Chile, sobre robótica, proyecto que esta desarrollando con alumnos de su universidad y que es apoyado por Microsoft Research. Por otra parte y no menos importante este evento me permitió compartir ideas, compartir momentos con amigos que hacía meses que no nos veíamos, además de tener la oportunidad de conocer a docentes de otras regiones con los cuales espero poder estrechar lazos de cooperación.
Entre los participantes de Cono Sur se encontraban:
Alejandro Fernández, Universidad Nacional de la Plata, Argentina Sergio Ochoa, Universidad de Chile, Chile Jose A Pino, Universidad de Chile, Chile Yadran Eterovik, Pontificia Universidad Católica de Chile, Chile. Álvaro Soto, Pontificia Universidad Católica de Chile, Chile Uriel Cukierman, Universidad Tecnológica Nacional, Argentina Nicolas Kicillof, Universidad de Buenos Aires, Argentina.
Entre los participantes de Microsoft se encontraban: Leandro Doeyo, David Delgado,Jaime Puente, John Spencer, Rico Malvar, Jim Larus, Kentaro Toyama, Manuel Reyes-Gomez, John Nordlinger, Steven Drucker, Tom Healy, Jose Blakeley, Pedro Celis
Es de destacar la organización del evento a cargo de Ricardo Medina, Microsoft Mexico, a mi entender fue un exitazo total. |
|
|