La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Mejoras del.NET Framework 2.0 Haaron González, MCP, MVP, MCAD PlexIT Consulting

Presentaciones similares


Presentación del tema: "Mejoras del.NET Framework 2.0 Haaron González, MCP, MVP, MCAD PlexIT Consulting"— Transcripción de la presentación:

1 Mejoras del.NET Framework 2.0 Haaron González, MCP, MVP, MCAD PlexIT Consulting

2 Objetivo Dar una revisión general de las nuevas características del.NET Framework 2.0 Dar una revisión general de las nuevas características del.NET Framework 2.0 Nuevas características de los lenguajes. Nuevas características de los lenguajes.

3 Agenda Introducción Introducción Nuevas características del lenguaje Nuevas características del lenguaje Clases parciales Clases parciales Tipos null Tipos null Generics Generics Resumen Resumen Preguntas y respuestas Preguntas y respuestas

4 Introducción ¿Qué es.NET ? La tecnología que permite integrar personas, dispositivos e información en cualquier lugar y en cualquier momento

5 Introducción.NET Momentum Lo usa más del 60% de Fortune 100 Lo usa más del 60% de Fortune 100 Más de 70M de sistemas con el.NET Framework Más de 70M de sistemas con el.NET Framework Más de 2.5M de desarrolladores.NET en el mundo Más de 2.5M de desarrolladores.NET en el mundo Foco en productividad, excelencia operacional y nuevas experiencias Foco en productividad, excelencia operacional y nuevas experiencias Win32 vs..NET

6 Nuevas características Mejoras al modelo de seguridad Mejoras al modelo de seguridad SecureStrings SecureStrings Mejor encriptación Mejor encriptación Basado en roles Basado en roles Mejoras a los lenguajes Mejoras a los lenguajes Clases parciales Clases parciales Tipos nulos Tipos nulos Generics Generics Entre otras más … Entre otras más …

7 Nuevas características del lenguaje Encripción Web.Config void ButtonEncryptClick(object sender, EventArgs e) { Configuration config = WebConfiguration.GetWebConfiguration(Request.ApplicationPath); ConfigurationSection section = config.Sections["connectionStrings"]; // Encryption section.ProtectSection("DataProtectionConfigurationProvider");config.Update();} void ButtonDecryptClick(object sender, EventArgs e) { Configuration config = WebConfiguration.GetWebConfiguration(Request.ApplicationPath); ConfigurationSection section = config.Sections["connectionStrings"]; // Decryption section.UnProtectSection();config.Update();}

8 Nuevas características del lenguaje Clases Parciales Una clase puede estar construida de varios fragmentos Una clase puede estar construida de varios fragmentos Cada fragmento lo conocemos como una Clase Parcial Cada fragmento lo conocemos como una Clase Parcial El compilador se encarga de poner los fragmentos en una sola clase El compilador se encarga de poner los fragmentos en una sola clase public partial class BankCustomer { public string LastName; } public partial class BankCustomer { public string LastName; } public partial class BankCustomer { public override string ToString() { return LastName +, + FirstName; } public partial class BankCustomer { public override string ToString() { return LastName +, + FirstName; } public partial class BankCustomer { public string FirstName; } public partial class BankCustomer { public string FirstName; } public class BankCustomer { public string FirstName; public string LastName; public override string ToString() { return LastName +, + FirstName; } public class BankCustomer { public string FirstName; public string LastName; public override string ToString() { return LastName +, + FirstName; } ==

9 Nuevas características del lenguaje Clases Parciales Desarrollado en mente para darle más poder a las herramientas generadoras de código Desarrollado en mente para darle más poder a las herramientas generadoras de código CodeSmith CodeSmith Visual Studio NET 2005 Visual Studio NET 2005 Ejemplo: Ejemplo: // Form1.Designer.cs partial class Form1 {.. // VS Forms designer code!. } // Form1.Designer.cs partial class Form1 {.. // VS Forms designer code!. } // Form1.cs public partial class Form1 : Form {.. // our code!. } // Form1.cs public partial class Form1 : Form {.. // our code!. }

10 Nuevas características del lenguaje Clases Parciales Esta diseñado para el uso de herramientas de generación de código. Esta diseñado para el uso de herramientas de generación de código. No es necesario que nos esforcemos a usarlas – están enfocadas para un fin distinto al uso humano. No es necesario que nos esforcemos a usarlas – están enfocadas para un fin distinto al uso humano.

11 Nuevas características del lenguaje Tipos de dato null Las variables nulas contienen ningún valor … contienen null Las variables nulas contienen ningún valor … contienen null A la fecha no existía manera de asignar un valor null a un parámetro en bases de datos, normalmente se omite por default. A la fecha no existía manera de asignar un valor null a un parámetro en bases de datos, normalmente se omite por default. int dbValue;. if ( dbReader.IsDBNull(dbReader.GetOrdinal(FieldName)) ) dbValue = ???; else dbValue = System.Convert.ToInt32(dbReader[FieldName]); int dbValue;. if ( dbReader.IsDBNull(dbReader.GetOrdinal(FieldName)) ) dbValue = ???; else dbValue = System.Convert.ToInt32(dbReader[FieldName]);

12 Las variables nulas permiten diferenciar a un valor discreto y un valor nulo. Las variables nulas permiten diferenciar a un valor discreto y un valor nulo. Nuevas características del lenguaje Tipos de dato null int? dbValue;. if ( dbReader.IsDBNull(dbReader.GetOrdinal(FieldName)) ) dbValue = null; // field is null so store null! else dbValue = System.Convert.ToInt32(dbReader[FieldName]);. int? dbValue;. if ( dbReader.IsDBNull(dbReader.GetOrdinal(FieldName)) ) dbValue = null; // field is null so store null! else dbValue = System.Convert.ToInt32(dbReader[FieldName]);. sum += dbValue ?? 0; // sum in the value (or 0 if null) if (dbValue == null) > else >. if (dbValue == null) > else >.

13 Otras soluciones: Otras soluciones: Usar un tipo de dato alternativo Usar un tipo de dato alternativo No usar nulls en la base de datos No usar nulls en la base de datos Nuevas características del lenguaje Tipos de dato null

14 Nuevas características del lenguaje Generics Nos permite *definir* objetos genéricos pero para *usarlos* de una manera específica. Nos permite *definir* objetos genéricos pero para *usarlos* de una manera específica. Colecciones Colecciones Métodos Métodos Parámetros Parámetros Y más… Y más… List customers; customers = new List (); customers.Add( new BankCustomer(...) );. List customers; customers = new List (); customers.Add( new BankCustomer(...) );.

15 Nuevas características del lenguaje Generics Nos permite tener: Nos permite tener: Type-safety Type-safety Eficiencia Eficiencia Reusabilidad Reusabilidad Métodos y listas genéricas Métodos y listas genéricas Cada objeto almacenado en una lista es almacenado como un objeto y requiere un cast (TipoDeDato) que nos diga como va. Cada objeto almacenado en una lista es almacenado como un objeto y requiere un cast (TipoDeDato) que nos diga como va. Boxing - UnBoxing Boxing - UnBoxing

16 Nuevas características del lenguaje Generics - constraints Podemos especificar restricciones en los tipos genéricos Podemos especificar restricciones en los tipos genéricos Nos asegura que la entidad genérica esta usada apropiadamente Nos asegura que la entidad genérica esta usada apropiadamente Una forma sencilla de chequeo estático Una forma sencilla de chequeo estático public class SortableList : List where T : IComparable { } public class SortableList : List where T : IComparable { } SortableList customers; customers = new SortableList (); customers.Add( new BankCustomer(jim, bag);. customers.Sort(); SortableList customers; customers = new SortableList (); customers.Add( new BankCustomer(jim, bag);. customers.Sort();

17 Nuevas características del lenguaje Generics - reusabilidad También nos permite escribir código genérico, reusable… También nos permite escribir código genérico, reusable… Un ejemplo de una conexión a base de datos: Un ejemplo de una conexión a base de datos: // // Capa de negocio // DataAccess data; DataSet ds1, ds2; // access a MS Access database... data = new MSAccessDB(connection string); ds1 = data.Retrieve(Select *...); // now access a SQL Server database... data = new SqlServerDB(connection string); ds1 = data.Retrieve(Select *...); // // Capa de negocio // DataAccess data; DataSet ds1, ds2; // access a MS Access database... data = new MSAccessDB(connection string); ds1 = data.Retrieve(Select *...); // now access a SQL Server database... data = new SqlServerDB(connection string); ds1 = data.Retrieve(Select *...); DataAccess SqlServerDBMSAccessDB

18 Nuevas características del lenguaje Generics – acceso a datos La premisa es: La premisa es: Parametrizar métodos de acceso a datos usando Generics Parametrizar métodos de acceso a datos usando Generics public class DataAccess { // a generic method to retrieve records and return as a DataSet... public DataSet Retrieve (string sConnect, string sql) where T1 : System.Data.IDbConnection, new() where T2 : System.Data.IDbCommand, new() where T3 : System.Data.IDbDataAdapter, new() { T1 conn = default(T1); // initialize to null for finally block T2 cmd; T3 adapter; DataSet ds;. public class DataAccess { // a generic method to retrieve records and return as a DataSet... public DataSet Retrieve (string sConnect, string sql) where T1 : System.Data.IDbConnection, new() where T2 : System.Data.IDbCommand, new() where T3 : System.Data.IDbDataAdapter, new() { T1 conn = default(T1); // initialize to null for finally block T2 cmd; T3 adapter; DataSet ds;.

19 // contd try { conn = new T1(); // create connection object conn.ConnectionString = sConnect; cmd = new T2(); // create command object cmd.Connection = conn; cmd.CommandText = sql; adapter = new T3(); // create data adapter object adapter.SelectCommand = cmd; conn.Open(); adapter.Fill(ds); } catch (Exception ex) { throw ex; } finally { try { conn.Close(); } catch { } } return ds; } // contd try { conn = new T1(); // create connection object conn.ConnectionString = sConnect; cmd = new T2(); // create command object cmd.Connection = conn; cmd.CommandText = sql; adapter = new T3(); // create data adapter object adapter.SelectCommand = cmd; conn.Open(); adapter.Fill(ds); } catch (Exception ex) { throw ex; } finally { try { conn.Close(); } catch { } } return ds; } Continuación…

20 Nuevas características del lenguaje Generics – acceso a datos Para mandar a llamar este método, solo pasamos los tipos que se apegan a las restricciones: Para mandar a llamar este método, solo pasamos los tipos que se apegan a las restricciones: using MSA = System.Data.OleDb; using SQL = System.Data.SqlClient; // // Business Tier // DataAccess data = new DataAccess(); DataSet ds1, ds2; // access a MS Access database... ds1 = data.Retrieve(connection string, Select *...); // now access a SQL Server database... ds1 = data.Retrieve(connection string, Select *...); using MSA = System.Data.OleDb; using SQL = System.Data.SqlClient; // // Business Tier // DataAccess data = new DataAccess(); DataSet ds1, ds2; // access a MS Access database... ds1 = data.Retrieve(connection string, Select *...); // now access a SQL Server database... ds1 = data.Retrieve(connection string, Select *...);

21 Nuevas características del lenguaje Generics – ¿Cuándo usarlo? Un poco más abstracto y complicado de usar Un poco más abstracto y complicado de usar Sin embargo, es más eficiente Sin embargo, es más eficiente El compilador del lenguaje se encarga de interpretar todo, no el CLR El compilador del lenguaje se encarga de interpretar todo, no el CLR

22 Resumen NET en el mundo conectado – líder en la industria NET en el mundo conectado – líder en la industria NET Framework 2.0 NET Framework 2.0 Evolución de características y muchas mejoras Evolución de características y muchas mejoras Permisible en VB y C# Permisible en VB y C# Nos permite ser más productivos como desarrolladores Nos permite ser más productivos como desarrolladores

23 Recursos adicionales NET, C# and VB 2.0: NET, C# and VB 2.0:


Descargar ppt "Mejoras del.NET Framework 2.0 Haaron González, MCP, MVP, MCAD PlexIT Consulting"

Presentaciones similares


Anuncios Google