Mejoras del.NET Framework 2.0 Haaron González, MCP, MVP, MCAD PlexIT Consulting...
-
Upload
anunciacion-duque -
Category
Documents
-
view
4 -
download
0
Transcript of Mejoras del.NET Framework 2.0 Haaron González, MCP, MVP, MCAD PlexIT Consulting...
![Page 1: Mejoras del.NET Framework 2.0 Haaron González, MCP, MVP, MCAD PlexIT Consulting haaron.gonzalez@plexit.com.mx.](https://reader033.fdocumento.com/reader033/viewer/2022061305/54a79a3d497959eb6d8b49c8/html5/thumbnails/1.jpg)
Mejoras del .NET Framework 2.0Mejoras del .NET Framework 2.0
Haaron González, MCP, MVP, MCADHaaron González, MCP, MVP, MCADPlexIT ConsultingPlexIT [email protected]@plexit.com.mx
![Page 2: Mejoras del.NET Framework 2.0 Haaron González, MCP, MVP, MCAD PlexIT Consulting haaron.gonzalez@plexit.com.mx.](https://reader033.fdocumento.com/reader033/viewer/2022061305/54a79a3d497959eb6d8b49c8/html5/thumbnails/2.jpg)
ObjetivoObjetivo
Dar una revisión general de las Dar una revisión general de las nuevas características del .NET nuevas características del .NET Framework 2.0Framework 2.0
Nuevas características de los Nuevas características de los lenguajes.lenguajes.
![Page 3: Mejoras del.NET Framework 2.0 Haaron González, MCP, MVP, MCAD PlexIT Consulting haaron.gonzalez@plexit.com.mx.](https://reader033.fdocumento.com/reader033/viewer/2022061305/54a79a3d497959eb6d8b49c8/html5/thumbnails/3.jpg)
AgendaAgendaIntroducciónIntroducciónNuevas características Nuevas características
del lenguajedel lenguajeClases parcialesClases parcialesTipos “null”Tipos “null”GenericsGenerics
ResumenResumenPreguntas y respuestasPreguntas y respuestas
![Page 4: Mejoras del.NET Framework 2.0 Haaron González, MCP, MVP, MCAD PlexIT Consulting haaron.gonzalez@plexit.com.mx.](https://reader033.fdocumento.com/reader033/viewer/2022061305/54a79a3d497959eb6d8b49c8/html5/thumbnails/4.jpg)
IntroducciónIntroducción
¿Qué es .NET ?¿Qué es .NET ?
““La tecnología que permite La tecnología que permite integrar personas, integrar personas,
dispositivos e información en dispositivos e información en cualquier lugar y en cualquier cualquier lugar y en cualquier
momento”momento”
![Page 5: Mejoras del.NET Framework 2.0 Haaron González, MCP, MVP, MCAD PlexIT Consulting haaron.gonzalez@plexit.com.mx.](https://reader033.fdocumento.com/reader033/viewer/2022061305/54a79a3d497959eb6d8b49c8/html5/thumbnails/5.jpg)
IntroducciónIntroducción
.NET Momentum.NET Momentum Lo usa más del 60% de Fortune 100Lo usa más del 60% de Fortune 100 Más de 70M de sistemas con el .NET Más de 70M de sistemas con el .NET
FrameworkFramework Más de 2.5M de desarrolladores .NET Más de 2.5M de desarrolladores .NET
en el mundoen el mundo Foco en productividad, excelencia Foco en productividad, excelencia
operacional y nuevas experienciasoperacional y nuevas experienciasWin32Win32 vs. vs. .NET.NET
![Page 6: Mejoras del.NET Framework 2.0 Haaron González, MCP, MVP, MCAD PlexIT Consulting haaron.gonzalez@plexit.com.mx.](https://reader033.fdocumento.com/reader033/viewer/2022061305/54a79a3d497959eb6d8b49c8/html5/thumbnails/6.jpg)
Nuevas característicasNuevas características Mejoras al modelo de seguridadMejoras al modelo de seguridad
SecureStringsSecureStringsMejor encriptaciónMejor encriptaciónBasado en rolesBasado en roles
Mejoras a los lenguajesMejoras a los lenguajesClases parcialesClases parcialesTipos nulos Tipos nulos GenericsGenerics
Entre otras más … Entre otras más …
![Page 7: Mejoras del.NET Framework 2.0 Haaron González, MCP, MVP, MCAD PlexIT Consulting haaron.gonzalez@plexit.com.mx.](https://reader033.fdocumento.com/reader033/viewer/2022061305/54a79a3d497959eb6d8b49c8/html5/thumbnails/7.jpg)
Nuevas características del lenguajeNuevas características del lenguaje
Encripción Web.ConfigEncripción Web.ConfigNuevas características del lenguajeNuevas características del lenguaje
Encripción Web.ConfigEncripción Web.Configvoid ButtonEncryptClick(object sender, void ButtonEncryptClick(object sender, EventArgsEventArgs e) e){{
ConfigurationConfiguration config = config = WebWebConfigurationConfiguration.GetWebConfiguration(Request.ApplicationPath);.GetWebConfiguration(Request.ApplicationPath);
ConfigurationSectionConfigurationSection section = section = config.Sections["connectionStrings"];config.Sections["connectionStrings"];
// Encryption// Encryptionsection.ProtectSection("DataProtectionConfigurationProvider");section.ProtectSection("DataProtectionConfigurationProvider");config.Update();config.Update();
}}
void ButtonDecryptClick(object sender, void ButtonDecryptClick(object sender, EventArgsEventArgs e) e){{
ConfigurationConfiguration config = config = WebWebConfigurationConfiguration.GetWebConfiguration(Request.ApplicationPath);.GetWebConfiguration(Request.ApplicationPath);
ConfigurationSectionConfigurationSection section = section = config.Sections["connectionStrings"];config.Sections["connectionStrings"];
// Decryption// Decryptionsection.UnProtectSection();section.UnProtectSection();config.Update();config.Update();
}}
![Page 8: Mejoras del.NET Framework 2.0 Haaron González, MCP, MVP, MCAD PlexIT Consulting haaron.gonzalez@plexit.com.mx.](https://reader033.fdocumento.com/reader033/viewer/2022061305/54a79a3d497959eb6d8b49c8/html5/thumbnails/8.jpg)
Nuevas características del lenguajeNuevas características del lenguaje
Clases ParcialesClases ParcialesNuevas características del lenguajeNuevas características del lenguaje
Clases ParcialesClases Parciales Una clase puede estar construida de Una clase puede estar construida de
varios fragmentosvarios fragmentos Cada fragmento lo conocemos como una Cada fragmento lo conocemos como una
Clase ParcialClase Parcial El compilador se encarga de poner los El compilador se encarga de poner los
fragmentos en una sola clasefragmentos 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; }}
====
![Page 9: Mejoras del.NET Framework 2.0 Haaron González, MCP, MVP, MCAD PlexIT Consulting haaron.gonzalez@plexit.com.mx.](https://reader033.fdocumento.com/reader033/viewer/2022061305/54a79a3d497959eb6d8b49c8/html5/thumbnails/9.jpg)
Nuevas características del Nuevas características del lenguajelenguaje
Clases ParcialesClases Parciales
Nuevas características del Nuevas características del lenguajelenguaje
Clases ParcialesClases Parciales Desarrollado en mente para darle Desarrollado en mente para darle más poder a las herramientas más poder a las herramientas generadoras de códigogeneradoras de código CodeSmithCodeSmith Visual Studio NET 2005Visual Studio NET 2005
Ejemplo:Ejemplo:
// Form1.Designer.cspartial class Form1{ . . // VS Forms designer code! .}
// Form1.Designer.cspartial class Form1{ . . // VS Forms designer code! .}
// Form1.cspublic partial class Form1 : Form{ . . // our code! .}
// Form1.cspublic partial class Form1 : Form{ . . // our code! .}
![Page 10: Mejoras del.NET Framework 2.0 Haaron González, MCP, MVP, MCAD PlexIT Consulting haaron.gonzalez@plexit.com.mx.](https://reader033.fdocumento.com/reader033/viewer/2022061305/54a79a3d497959eb6d8b49c8/html5/thumbnails/10.jpg)
Nuevas características del Nuevas características del lenguajelenguaje
Clases ParcialesClases Parciales
Nuevas características del Nuevas características del lenguajelenguaje
Clases ParcialesClases Parciales Esta diseñado para el uso de Esta diseñado para el uso de herramientas de generación de herramientas de generación de código.código.
No es necesario que nos No es necesario que nos esforcemos a usarlas – están esforcemos a usarlas – están enfocadas para un fin distinto al enfocadas para un fin distinto al “uso humano.“uso humano.
![Page 11: Mejoras del.NET Framework 2.0 Haaron González, MCP, MVP, MCAD PlexIT Consulting haaron.gonzalez@plexit.com.mx.](https://reader033.fdocumento.com/reader033/viewer/2022061305/54a79a3d497959eb6d8b49c8/html5/thumbnails/11.jpg)
Nuevas características del Nuevas características del lenguajelenguaje
Tipos de dato Tipos de dato nullnull
Nuevas características del Nuevas características del lenguajelenguaje
Tipos de dato Tipos de dato nullnull Las variables nulas contienen ningún valor Las variables nulas contienen ningún valor … contienen “null”… contienen “null”
A la fecha no existía manera de asignar un A la fecha no existía manera de asignar un valor “null” a un parámetro en bases de valor “null” a un parámetro en bases de datos, normalmente se omite por default.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”]);
![Page 12: Mejoras del.NET Framework 2.0 Haaron González, MCP, MVP, MCAD PlexIT Consulting haaron.gonzalez@plexit.com.mx.](https://reader033.fdocumento.com/reader033/viewer/2022061305/54a79a3d497959eb6d8b49c8/html5/thumbnails/12.jpg)
Las variables nulas permiten diferenciar a un Las variables nulas permiten diferenciar a un valor discreto y un valor nulo.valor discreto y un valor nulo.
Nuevas características del Nuevas características del lenguajelenguaje
Tipos de dato Tipos de dato nullnull
Nuevas características del Nuevas características del lenguajelenguaje
Tipos de dato Tipos de dato nullnullint? 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)sum += dbValue ?? 0; // sum in the value (or 0 if null)
if (dbValue == null) << no value in DB >>else << value in DB to process >>...
if (dbValue == null) << no value in DB >>else << value in DB to process >>...
![Page 13: Mejoras del.NET Framework 2.0 Haaron González, MCP, MVP, MCAD PlexIT Consulting haaron.gonzalez@plexit.com.mx.](https://reader033.fdocumento.com/reader033/viewer/2022061305/54a79a3d497959eb6d8b49c8/html5/thumbnails/13.jpg)
Otras soluciones:Otras soluciones:Usar un tipo de dato alternativoUsar un tipo de dato alternativoNo usar nulls en la base de No usar nulls en la base de
datos datos
Nuevas características del Nuevas características del lenguajelenguaje
Tipos de dato Tipos de dato nullnull
Nuevas características del Nuevas características del lenguajelenguaje
Tipos de dato Tipos de dato nullnull
![Page 14: Mejoras del.NET Framework 2.0 Haaron González, MCP, MVP, MCAD PlexIT Consulting haaron.gonzalez@plexit.com.mx.](https://reader033.fdocumento.com/reader033/viewer/2022061305/54a79a3d497959eb6d8b49c8/html5/thumbnails/14.jpg)
Nuevas características del Nuevas características del lenguajelenguaje
GenericsGenerics
Nuevas características del Nuevas características del lenguajelenguaje
GenericsGenerics Nos permite *definir* objetos Nos permite *definir* objetos genéricos pero para *usarlos* de una genéricos pero para *usarlos* de una manera específica.manera específica. ColeccionesColecciones MétodosMétodos ParámetrosParámetros Y más…Y más…
List<BankCustomer> customers;customers = new List<BankCustomer>();
customers.Add( new BankCustomer(...) );...
List<BankCustomer> customers;customers = new List<BankCustomer>();
customers.Add( new BankCustomer(...) );...
![Page 15: Mejoras del.NET Framework 2.0 Haaron González, MCP, MVP, MCAD PlexIT Consulting haaron.gonzalez@plexit.com.mx.](https://reader033.fdocumento.com/reader033/viewer/2022061305/54a79a3d497959eb6d8b49c8/html5/thumbnails/15.jpg)
Nuevas características del Nuevas características del lenguajelenguaje
GenericsGenerics
Nuevas características del Nuevas características del lenguajelenguaje
GenericsGenerics Nos permite tener:Nos permite tener: Type-safetyType-safety EficienciaEficiencia ReusabilidadReusabilidad Métodos y listas genéricasMétodos y listas genéricas
Cada objeto almacenado en una lista Cada objeto almacenado en una lista es almacenado como un objeto y es almacenado como un objeto y requiere un cast (TipoDeDato) que requiere un cast (TipoDeDato) que nos diga como va.nos diga como va. Boxing - UnBoxingBoxing - UnBoxing
![Page 16: Mejoras del.NET Framework 2.0 Haaron González, MCP, MVP, MCAD PlexIT Consulting haaron.gonzalez@plexit.com.mx.](https://reader033.fdocumento.com/reader033/viewer/2022061305/54a79a3d497959eb6d8b49c8/html5/thumbnails/16.jpg)
Nuevas características del Nuevas características del lenguajelenguaje
Generics - Generics - constraintsconstraints
Nuevas características del Nuevas características del lenguajelenguaje
Generics - Generics - constraintsconstraints
Podemos especificar restricciones Podemos especificar restricciones en los tipos genéricosen los tipos genéricos
Nos asegura que la entidad Nos asegura que la entidad genérica esta usada genérica esta usada apropiadamente apropiadamente Una forma sencilla de chequeo Una forma sencilla de chequeo
estáticoestáticopublic class SortableList<T> : List<T> where T : IComparable{ }public class SortableList<T> : List<T> where T : IComparable{ }
SortableList<BankCustomer> customers;customers = new SortableList<BankCustomer>();
customers.Add( new BankCustomer(“jim”, “bag”);...customers.Sort();
SortableList<BankCustomer> customers;customers = new SortableList<BankCustomer>();
customers.Add( new BankCustomer(“jim”, “bag”);...customers.Sort();
![Page 17: Mejoras del.NET Framework 2.0 Haaron González, MCP, MVP, MCAD PlexIT Consulting haaron.gonzalez@plexit.com.mx.](https://reader033.fdocumento.com/reader033/viewer/2022061305/54a79a3d497959eb6d8b49c8/html5/thumbnails/17.jpg)
Nuevas características del Nuevas características del lenguajelenguaje
Generics - Generics - reusabilidadreusabilidad
Nuevas características del Nuevas características del lenguajelenguaje
Generics - Generics - reusabilidadreusabilidad
También nos permite escribir código También nos permite escribir código genérico, reusable…genérico, reusable…
Un ejemplo de una conexión a base Un ejemplo de una conexión a base de datos: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
SqlServerDB MSAccessDB
![Page 18: Mejoras del.NET Framework 2.0 Haaron González, MCP, MVP, MCAD PlexIT Consulting haaron.gonzalez@plexit.com.mx.](https://reader033.fdocumento.com/reader033/viewer/2022061305/54a79a3d497959eb6d8b49c8/html5/thumbnails/18.jpg)
Nuevas características del lenguajeNuevas características del lenguaje
Generics – acceso a datosGenerics – acceso a datosNuevas características del lenguajeNuevas características del lenguaje
Generics – acceso a datosGenerics – acceso a datos La premisa es:La premisa es:
Parametrizar métodos de acceso a datos Parametrizar métodos de acceso a datos usando Genericsusando Generics
public class DataAccess{ // a generic method to retrieve records and return as a DataSet... public DataSet Retrieve<T1, T2, T3>(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<T1, T2, T3>(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; . . .
![Page 19: Mejoras del.NET Framework 2.0 Haaron González, MCP, MVP, MCAD PlexIT Consulting haaron.gonzalez@plexit.com.mx.](https://reader033.fdocumento.com/reader033/viewer/2022061305/54a79a3d497959eb6d8b49c8/html5/thumbnails/19.jpg)
// cont’d
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;}
// cont’d
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…Continuación…
![Page 20: Mejoras del.NET Framework 2.0 Haaron González, MCP, MVP, MCAD PlexIT Consulting haaron.gonzalez@plexit.com.mx.](https://reader033.fdocumento.com/reader033/viewer/2022061305/54a79a3d497959eb6d8b49c8/html5/thumbnails/20.jpg)
Nuevas características del lenguajeNuevas características del lenguaje
Generics – acceso a datosGenerics – acceso a datosNuevas características del lenguajeNuevas características del lenguaje
Generics – acceso a datosGenerics – acceso a datos Para mandar a llamar este método, solo Para mandar a llamar este método, solo
pasamos los tipos que se apegan a las pasamos los tipos que se apegan a las restricciones: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<MSA.OleDbConnection, MSA.OleDbCommand, MSA.OleDbDataAdapter>(“connection string”, “Select * ...”);
// now access a SQL Server database...ds1 = data.Retrieve<SQL.SqlConnection, SQL.SqlCommand, SQL.SqlDataAdapter>(“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<MSA.OleDbConnection, MSA.OleDbCommand, MSA.OleDbDataAdapter>(“connection string”, “Select * ...”);
// now access a SQL Server database...ds1 = data.Retrieve<SQL.SqlConnection, SQL.SqlCommand, SQL.SqlDataAdapter>(“connection string”, “Select * ...”);
![Page 21: Mejoras del.NET Framework 2.0 Haaron González, MCP, MVP, MCAD PlexIT Consulting haaron.gonzalez@plexit.com.mx.](https://reader033.fdocumento.com/reader033/viewer/2022061305/54a79a3d497959eb6d8b49c8/html5/thumbnails/21.jpg)
Nuevas características del lenguajeNuevas características del lenguaje
Generics – ¿Cuándo Generics – ¿Cuándo usarlo?usarlo?
Nuevas características del lenguajeNuevas características del lenguaje
Generics – ¿Cuándo Generics – ¿Cuándo usarlo?usarlo? Un poco más abstracto y Un poco más abstracto y complicado de usarcomplicado de usar
Sin embargo, es más eficienteSin embargo, es más eficienteEl compilador del lenguaje se El compilador del lenguaje se
encarga de interpretar todo, no el encarga de interpretar todo, no el CLRCLR
![Page 22: Mejoras del.NET Framework 2.0 Haaron González, MCP, MVP, MCAD PlexIT Consulting haaron.gonzalez@plexit.com.mx.](https://reader033.fdocumento.com/reader033/viewer/2022061305/54a79a3d497959eb6d8b49c8/html5/thumbnails/22.jpg)
ResumenResumen
NET en el mundo conectado – NET en el mundo conectado – líder en la industrialíder en la industria
NET Framework 2.0 NET Framework 2.0 Evolución de características y Evolución de características y
muchas mejorasmuchas mejorasPermisible en VB y C#Permisible en VB y C#Nos permite ser más productivos Nos permite ser más productivos
como desarrolladorescomo desarrolladores
![Page 23: Mejoras del.NET Framework 2.0 Haaron González, MCP, MVP, MCAD PlexIT Consulting haaron.gonzalez@plexit.com.mx.](https://reader033.fdocumento.com/reader033/viewer/2022061305/54a79a3d497959eb6d8b49c8/html5/thumbnails/23.jpg)
Recursos adicionalesRecursos adicionales
NET, C# and VB 2.0:NET, C# and VB 2.0: http://http://msdn.microsoft.com/netframeworkmsdn.microsoft.com/netframework
// http://http://msdn.microsoft.com/vcsharpmsdn.microsoft.com/vcsharp// http://http://msdn.microsoft.com/vbasicmsdn.microsoft.com/vbasic//