ORCAS La nueva generación de Visual Studio Octavio Hernández Plain Concepts Developer Advisor...

Post on 03-Feb-2015

6 views 0 download

Transcript of ORCAS La nueva generación de Visual Studio Octavio Hernández Plain Concepts Developer Advisor...

““ORCAS”ORCAS”

La nueva generación de Visual StudioLa nueva generación de Visual Studio

Octavio HernándezOctavio HernándezPlain ConceptsPlain Concepts

Developer AdvisorDeveloper Advisoroctavio@plainconcepts.comoctavio@plainconcepts.com

David SalgadoDavid SalgadoMicrosoft Microsoft División de desarrollo y PlataformaDivisión de desarrollo y Plataformadavidsb@microsoft.comdavidsb@microsoft.com

¿Qué hay de nuevo en “Orcas”?¿Qué hay de nuevo en “Orcas”?

¿Qué hay de nuevo en “Orcas”?¿Qué hay de nuevo en “Orcas”?

LINQLINQ

“Your software, our passion”

WPFWPF

AJAXAJAX

WPFWPF

AJAXAJAX

WCF / WFWCF / WF

WPFWPF

AJAXAJAX

WCF / WFWCF / WF

Office Office

WPFWPF

AJAXAJAX

WCF / WFWCF / WF

Office Office

WPFWPF

……

Siguiente VSTS/TFS

Siguiente VSTS/TFS“Integrated solutions, not just tools”

RequisitosRequisitos

TestingTesting

RequisitosRequisitos

TestingTesting

ReportingReporting

RequisitosRequisitos

TestingTesting

ReportingReporting

ManagementManagement

RequisitosRequisitos

TestingTesting

ReportingReporting

ManagementManagement

RequisitosRequisitos

DSIDSI

TestingTesting

ReportingReporting

ManagementManagement

RequisitosRequisitos

……

DSIDSI

IDE “ORCAS”IDE “ORCAS”

LINQLINQ

IEnumerable<Film> dramas = from f in Film.Datos where f.Género == Género.Drama select new { f.Nombre, f.Año };

Expresiones de consulta

IEnumerable<Film> dramas = from f in Film.Datos where f.Género == Género.Drama select new { f.Nombre, f.Año };

var dramas = Film.Datos .Where(f => f.Género == Género.Drama) .Select(f => new { f.Nombre, f.Año });

Expresiones de consulta

IEnumerable<Film> dramas = from f in Film.Datos where f.Género == Género.Drama select new { f.Nombre, f.Año };

var dramas = Film.Datos .Where(f => f.Género == Género.Drama) .Select(f => new { f.Nombre, f.Año });

Expresiones de consulta

Métodos extensores

Expresiones lambda

Inicializadores de objetosTipos

anónimos

Inferencia de tipo de variables

localesÁrboles de

expresiones

LINQ to ObjectsLINQ to Objects

• HoyHoyXmlDocument doc = new XmlDocument();XmlElement films = doc.CreateElement(“films");foreach (Film f in Film.Datos) if (f.Género == Género.Drama) { XmlElement elem = doc.CreateElement(“film"); XmlElement n = doc.CreateElement("nombre"); n.InnerText = f.Nombre; elem.AppendChild(n); XmlElement a = doc.CreateElement(“año"); a.InnerText = f.Año; elem.AppendChild(a); films.AppendChild(elem); }doc.AppendChild(films);doc.Save(“DRAMAS.XML”);

<films> <film> <nombre>CASABLANCA</nombre> <anno>1942</anno> </film> …</films>

Modeloimperativo

Orientado al documento

Sin consultas integradas

Alta exigencia de memoria

• Con LINQ to XMLCon LINQ to XML

• Sintaxis especial en VB 9.0Sintaxis especial en VB 9.0

XElement films = new XElement(“films", from f in Film.Datos where f.Género == Género.Drama select new XElement(“film", new XElement("nombre", f.Nombre), new XElement(“año", f.Año)));Films.Save(“DRAMAS.XML”);

Modelo declarativo

Orientado a elementos

Consultas integradas

Más compacto y rápido

LINQ to XMLLINQ to XML

• HoyHoySqlConnection c = new SqlConnection(cadenaCon);c.Open();SqlCommand cmd = new SqlCommand( @"SELECT c.NombreApellidos FROM Personas WHERE Sexo = @p0“, c);cmd.Parameters.AddWithValue("@p0", sexo);DataReader dr = cmd.ExecuteReader();while (dr.Read()) { string nombreApellidos = dr.GetString(0);}dr.Close();

Consultas entre comillas

Parámetros sin control de tipos

estricto

Resultados sincontrol de tipos

estricto

Sin comprobación del compilador

• Con LINQ to SQLCon LINQ to SQLpublic class Persona { … }

public class FilmsDataContext : DataContext{ public Table<Persona> Personas; …}

var db = new FilmsDataContext();var delMismoSexo = from f in db.DBPersonas where f.Sexo == sexo select f.NombreApellidos;

Clases que describen los

datos

Conexiones fuertemente

tipadas

Consultas integradas

Resultados fuertemente

tipados

Tablas como colecciones

LINQ to SQLLINQ to SQL

• Mapeado lógico/físicoMapeado lógico/físico– Por defecto, 1:1 con la BB.DD.Por defecto, 1:1 con la BB.DD.– Modelo de datos basado en ENTIDADESModelo de datos basado en ENTIDADES

•Proveedor de mapeadoProveedor de mapeado•Entidades, relaciones, herenciaEntidades, relaciones, herencia

– Renombrar tablas y campos, crear jerarquías entre Renombrar tablas y campos, crear jerarquías entre tablas, eliminar las “tablas de relación”, etc.tablas, eliminar las “tablas de relación”, etc.

– FlexibilidadFlexibilidad– Acceso al proveedor del almacén en caso Acceso al proveedor del almacén en caso

necesarionecesario

• MSDNMSDN– http://msdn.microsoft.com/data/ref/linq/

• MSDN en castellanoMSDN en castellano– http://www.microsoft.com/spanish/msdn/articulo

s/architec/fecha/2007.mspx• Especificación de C# 3.0Especificación de C# 3.0• El proyecto LINQEl proyecto LINQ• Operadores de consulta estándar de .NETOperadores de consulta estándar de .NET• Acceso a datos de próxima generaciónAcceso a datos de próxima generación• Presentación técnica de ADO.NETPresentación técnica de ADO.NET• El Marco de Entidades de ADO.NETEl Marco de Entidades de ADO.NET

• dotNetManíadotNetManía– ““Lo que nos traerá Orcas”Lo que nos traerá Orcas”

• Novedades en C# 3.0 (Nº 24, marzo de 2006) Novedades en C# 3.0 (Nº 24, marzo de 2006) • La tecnología LINQ (Nº 25)La tecnología LINQ (Nº 25)• VB 9.0 y LINQ (Nº 27)VB 9.0 y LINQ (Nº 27)• LINQ to XML (Nº 29)LINQ to XML (Nº 29)• LINQ to DataSet (Nº 32)LINQ to DataSet (Nº 32)• LINQ to SQL (Nº 36, abril de 2007)LINQ to SQL (Nº 36, abril de 2007)• Serie sobre ADO.NET vNext y LINQ to Entities (próxima aparición)Serie sobre ADO.NET vNext y LINQ to Entities (próxima aparición)

• Web de “El Guille”Web de “El Guille”– http://www.elguille.info/