Upload
victdiazm
View
123
Download
2
Embed Size (px)
Citation preview
Estrella 1Estrella 1Introducción a Introducción a Microsoft .NET Microsoft .NET
Programa Microsoft Programa Microsoft Desarrollador Cinco Desarrollador Cinco
EstrellasEstrellas
Programa Microsoft Programa Microsoft Desarrollador Cinco Desarrollador Cinco
EstrellasEstrellas
ObjetivoObjetivo
Presentar una introducción a la Presentar una introducción a la plataforma de desarrollo plataforma de desarrollo Microsoft .NET, describiendo sus Microsoft .NET, describiendo sus principios básicos de principios básicos de funcionamiento, su arquitectura de funcionamiento, su arquitectura de componentes y sus principales componentes y sus principales bibliotecas reutilizables, mostrando bibliotecas reutilizables, mostrando además las novedades introducidas además las novedades introducidas en la última versión de la misma.en la última versión de la misma.
PrerrequisitosPrerrequisitos
Poseer los conocimientos Poseer los conocimientos proporcionados por la Estrella 0 del proporcionados por la Estrella 0 del programaprogramaHaber aprobado el examen Haber aprobado el examen correspondiente a la Estrella 0 del correspondiente a la Estrella 0 del programaprogramaConocimientos fundamentales de Conocimientos fundamentales de bases de datos relacionales, bases de datos relacionales, incluyendoincluyendo Modelo RelacionalModelo Relacional Protocolos de Acceso (ODBC/OLEDB)Protocolos de Acceso (ODBC/OLEDB) Lenguaje SQLLenguaje SQL
Temas a TratarTemas a Tratar
Introducción a Microsoft .NETIntroducción a Microsoft .NETComponentes FundamentalesComponentes FundamentalesFuncionamiento Interno del CLRFuncionamiento Interno del CLRBibliotecas PrincipalesBibliotecas PrincipalesVentajas de .NETVentajas de .NETHerramientas de Desarrollo .NETHerramientas de Desarrollo .NETNovedades en .NET 2.0Novedades en .NET 2.0
Temas a TratarTemas a Tratar
Introducción a Microsoft .NETIntroducción a Microsoft .NET ¿Qué no es .NET?¿Qué no es .NET? ¿Qué es .NET?¿Qué es .NET? .NET Como evolución de COM.NET Como evolución de COM
Paradigmas de Paradigmas de ProgramaciónProgramación
19801980 19901990 20002000
Fu
nci
on
alid
adF
un
cio
nal
idad
Win16Win16 Win32Win32COMCOM
MFCMFCComponentes
ComponentesServiciosServicios
APIsAPIs
Windows3.0
¿Qué NO es .NET?¿Qué NO es .NET?
.NET no es un Sistema Operativo.NET no es un Sistema Operativo
.NET no es un Lenguaje de .NET no es un Lenguaje de ProgramaciónProgramación
.NET no es un Entorno de Desarrollo.NET no es un Entorno de Desarrollo
.NET no es un Servidor de .NET no es un Servidor de AplicacionesAplicaciones
.NET no es un producto empaquetado .NET no es un producto empaquetado que se pueda comprar como talque se pueda comprar como tal
¿Qué es .NET?¿Qué es .NET?Plataforma de Desarrollo compuesta Plataforma de Desarrollo compuesta dede Entorno de Ejecución (Runtime)Entorno de Ejecución (Runtime) Bibliotecas de Funcionalidad (Class Bibliotecas de Funcionalidad (Class
Library)Library) Lenguajes de ProgramaciónLenguajes de Programación CompiladoresCompiladores Herramientas de Desarrollo (IDE & Herramientas de Desarrollo (IDE &
Tools)Tools) Guías de ArquitecturaGuías de Arquitectura
La evolución de la plataforma COMLa evolución de la plataforma COM
Características de .NET Características de .NET (1/2)(1/2)
Plataforma de ejecución intermediaPlataforma de ejecución intermedia
100% Orientada a Objetos100% Orientada a Objetos
MultilenguajeMultilenguaje
Plataforma Empresarial de Misión Plataforma Empresarial de Misión CríticaCrítica
Características de .NET Características de .NET (2/2)(2/2)
Modelo de Programación único para Modelo de Programación único para todo tipo de aplicaciones y dispositivos todo tipo de aplicaciones y dispositivos de hardwarede hardware
Se integra fácilmente con aplicaciones Se integra fácilmente con aplicaciones existentes desarrolladas en existentes desarrolladas en plataformas Microsoftplataformas Microsoft
Se integra fácilmente con aplicaciones Se integra fácilmente con aplicaciones desarrolladas en otras plataformasdesarrolladas en otras plataformas
Plataforma de Ejecución Plataforma de Ejecución IntermediaIntermedia
Entorno de
Desarrollo
Mic
rosoft
.N
ET
Librerías de Funcionalidad
Lenguajes de Programación
Entorno de Ejecución
Sistema Operativo (Familia Windows)
Aplicación .NET
.NET como evolución de .NET como evolución de COMCOMEntorno de Ejecución (Runtime)Entorno de Ejecución (Runtime)
COM: WindowsCOM: Windows .NET: Common Language Runtime.NET: Common Language Runtime
Librerías de FuncionalidadLibrerías de Funcionalidad COM: Algunas (ADO, FSO, etc.)COM: Algunas (ADO, FSO, etc.) .NET: Muy extensa (.NET Framework Class .NET: Muy extensa (.NET Framework Class
Library)Library)
Lenguajes de ProgramaciónLenguajes de Programación COM: VB, C++, VFP, ASP, J++COM: VB, C++, VFP, ASP, J++ .NET: Common Language Specification.NET: Common Language Specification
Entorno de Desarrollo (IDE)Entorno de Desarrollo (IDE) COM: Uno para cada lenguajeCOM: Uno para cada lenguaje .NET: Uno independiente del lenguaje (VS.NET).NET: Uno independiente del lenguaje (VS.NET)
¿Qué es el .NET Framework?¿Qué es el .NET Framework?
Paquete de software fundamental de Paquete de software fundamental de la plataforma .NET. Incluye:la plataforma .NET. Incluye: Entorno de Ejecución (Runtime)Entorno de Ejecución (Runtime) Bibliotecas de Funcionalidad (Class Library)Bibliotecas de Funcionalidad (Class Library)
Se distribuye en forma libre y Se distribuye en forma libre y gratuitagratuita
Existen tres variantes principales:Existen tres variantes principales: .NET Framework Redistributable .NET Framework Redistributable
PackagePackage .NET Framework SDK.NET Framework SDK .NET Compact Framework .NET Compact Framework
Está instalado por defecto en Está instalado por defecto en Windows 2003 Server o superiorWindows 2003 Server o superior
.NET Compact Framework
*
*
AplicaciónMóvil
Aplicación de Consola
Aplicación Web
Aplicación de Escritorio
¿Dónde instalar el .NET ¿Dónde instalar el .NET Framework?Framework?
ServidorCliente
* Sólo si la aplicación es distribuída* Sólo si la aplicación es distribuída
Línea del tiempo de .NETLínea del tiempo de .NETVisual Studio 6.0Visual BasicVBAVisual FoxProVBScriptC++J++JScriptASP
Visual Studio .NET 2003.NET Framework 1.1.NET Compact FrameworkJ#
Visual Studio “Orcas”.NET Framework “Orcas”.NET Compact Framework “Orcas”
2000 2001 2002 2003 2004 2005 2006 y más
Visual Studio 2005 (“Whidbey”).NET Framework 2.0 (“Whidbey”).NET Compact Framework 2.0 (“Whidbey”)
Visual Studio .NET 2002.NET Framework 1.0Visual Basic .NETC#
Temas a TratarTemas a Tratar
Introducción a Microsoft .NETIntroducción a Microsoft .NETComponentes FundamentalesComponentes Fundamentales ArquitecturaArquitectura Common Language Runtime (CLR)Common Language Runtime (CLR) Microsoft Intermediate LanguageMicrosoft Intermediate Language AssembliesAssemblies .NET Class Library.NET Class Library Common Language Specification (CLS)Common Language Specification (CLS)
Windows COM+ Services
Common Language Runtime
Base Class Library
ADO.NET y XML
ASP.NET Windows Forms
Common Language Specification
VB C++ C# J# …
Arquitectura del .NET Arquitectura del .NET FrameworkFramework
.NE
T F
ram
ewor
k R
edis
trib
utab
le
.NE
T F
ram
ewo
rk S
DK
.NE
T F
ramew
ork
Class Library
CLR - Arquitecturas de CLR - Arquitecturas de Ejecución de AplicacionesEjecución de Aplicaciones
CLR – Common Language CLR – Common Language RuntimeRuntime
El CLR es el motor de ejecución El CLR es el motor de ejecución (runtime) de .NET(runtime) de .NETCaracterísticasCaracterísticas Compilación Just-In-Time (JIT)Compilación Just-In-Time (JIT) Gestión automática de memoria Gestión automática de memoria
(Garbage Collector)(Garbage Collector) Gestión de errores consistente Gestión de errores consistente
(Excepciones)(Excepciones) Ejecución basada en componentes Ejecución basada en componentes
(Assemblies)(Assemblies) Gestión de SeguridadGestión de Seguridad MultithreadingMultithreading
CLR – Componentes InternosCLR – Componentes Internos
Class Loader
IL to NativeCompilers
CodeManager
GarbageCollector
Security Engine Debug Engine
Type Checker Exception Manager
Thread Support COM Marshaler
Base Class Library Support
Código Código FuenteFuenteCódigo Código FuenteFuente
Cualquier Cualquier lenguaje .NETlenguaje .NET
CompiladorCompilador
AssemblyAssembly (MSIL)(MSIL)
AssemblyAssembly (MSIL)(MSIL)
BibliotecaBibliotecao Ejecutableo Ejecutable
CLR – Proceso de CLR – Proceso de CompilaciónCompilación
CLR - MSILCLR - MSIL
.method private hidebysig static void Main(string[] args) cil managed {
.entrypoint maxstack 8 L_0000: ldstr "Hola Mundo" L_0005: call void [mscorlib]System.Console::WriteLine(
string) L_000a: ret }
¿Qué es un “Assembly”?¿Qué es un “Assembly”?
Un Assembly es la unidad mínima de Un Assembly es la unidad mínima de ejecución, distribución, instalación y ejecución, distribución, instalación y versionado de aplicaciones .NETversionado de aplicaciones .NET
MetadataMetadata
Código CompiladoCódigo CompiladoMSILMSIL
RecursosRecursos
MiBiblioteca.DLLMiBiblioteca.DLL
Descripción de TiposDescripción de Tipos
ClasesClasesClases BaseClases BaseInterfaces ImplementadasInterfaces ImplementadasAtributos de las ClasesAtributos de las ClasesMétodos de las ClasesMétodos de las Clases
NombreNombreVersiónVersiónCulturaCultura
Manifiesto del AssemblyManifiesto del Assembly
Otros AssembliesOtros AssembliesPermisos de SeguridadPermisos de SeguridadTipos ExternosTipos Externos
Assemblies - Assemblies - Aplicaciones .NETAplicaciones .NET
Uno o más AssembliesUno o más AssembliesAl ejecutar una aplicación, ¿cómo Al ejecutar una aplicación, ¿cómo ubico los assemblies necesarios?ubico los assemblies necesarios?
El Class Loader busca en el directorio El Class Loader busca en el directorio local (preferido)local (preferido)
Global Assembly Cache (GAC)Global Assembly Cache (GAC)
Diferentes aplicaciones pueden usar Diferentes aplicaciones pueden usar diferentes versionesdiferentes versiones Actualizaciones más simplesActualizaciones más simples Desinstalación más simpleDesinstalación más simple
.NET Framework Class .NET Framework Class LibraryLibrary
Conjunto de Tipos básicos (clases, interfaces, etc.) que vienen incluídos en el .NET Framework Los tipos están organizados en jerarquías lógicas de nombres, denominados NAMESPACESLos tipos son INDEPENDIENTES del lenguaje de desarrolloEs extensible y totalmente orientada a objetos
.NET Framework Class .NET Framework Class LibraryLibraryEl namespace raíz es SYSTEM
System
System.Data System.Xml
System.Web
GlobalizationGlobalization
DiagnosticsDiagnostics
ConfigurationConfiguration
CollectionsCollections
ResourcesResources
ReflectionReflection
NetNet
IOIO
ThreadingThreading
TextText
ServiceProcessServiceProcess
SecuritySecurity
CommonCommon
OleDbOleDb
SqlClientSqlClient
OdbcOdbc
XPathXPath
XSLTXSLT
RuntimeRuntime
InteropServicesInteropServices
RemotingRemoting
SerializationSerialization
SerializationSerialization
ConfigurationConfiguration SessionStateSessionState
CachingCaching SecuritySecurity
ServicesServices
DescriptionDescription
DiscoveryDiscovery
ProtocolsProtocols
UIUI
HtmlControlsHtmlControls
WebControlsWebControls
System.Drawing
ImagingImaging
Drawing2DDrawing2D
TextText
PrintingPrinting
System.Windows.FormsDesignDesign ComponentModelComponentModel
Common Language Specification Common Language Specification (CLS)(CLS)
Especificación que estandariza una serie de características soportadas por el CLRContrato entre diseñadores de lenguajes de programación y autores de bibliotecasPermite la interoperabilidad entre lenguajesMicrosoft provee implementaciones de 4 lenguajes, todos compatibles con CLS Microsoft Visual Basic .NETMicrosoft Visual Basic .NET Microsoft Visual C# .NETMicrosoft Visual C# .NET Microsoft Visual J#.NETMicrosoft Visual J#.NET Microsoft Visual C++.NETMicrosoft Visual C++.NET
Common Language Specification Common Language Specification (CLS)(CLS)
El resto de la industria y el sector académico han desarrollado más de 20 lenguajes compatibles con la especificación CLS
CobolCobol
EiffelEiffel
FortranFortran
PascalPascal
PerlPerl
C+C++.NE+.NETT
C#C#
HaskellHaskell
JavaJava JavaScriJavaScriptpt
Visual Visual Basic.NETBasic.NET
MercuryMercury
MLML
PHPPHP
Objective CamlObjective Caml
OberonOberon SmalltalkSmalltalk SchemeScheme
J#J#
RPGRPG
MondrianMondrian
APLAPL
DelphiDelphi PythonPython
LISPLISP PrologProlog
CLS - Elección del CLS - Elección del lenguajelenguaje
.NET posee un único runtime (el CLR) .NET posee un único runtime (el CLR) y un único conjunto de bibliotecas y un único conjunto de bibliotecas para todos los lenguajespara todos los lenguajesNo hay diferencias notorias de No hay diferencias notorias de performance entre los lenguajes performance entre los lenguajes provistos por Microsoftprovistos por MicrosoftEl lenguaje a utilizar, en gral., El lenguaje a utilizar, en gral., dependerá de su experiencia previa dependerá de su experiencia previa con otros lenguajes o de gustos con otros lenguajes o de gustos personalespersonales Si conoce Java, Delphi, C++, etc. Si conoce Java, Delphi, C++, etc. C# C# Si conoce Visual Basic o VBScript Si conoce Visual Basic o VBScript
VB.NETVB.NET
Los tipos de aplicaciones .NET son Los tipos de aplicaciones .NET son INDEPENDIENTES del lenguaje que INDEPENDIENTES del lenguaje que elijaelija
Temas a TratarTemas a Tratar
Introducción a Microsoft .NETIntroducción a Microsoft .NET Componentes FundamentalesComponentes Fundamentales Funcionamiento Interno del CLRFuncionamiento Interno del CLR
Especificación CLIEspecificación CLI Modelo de EjecuciónModelo de Ejecución Application DomainsApplication Domains Common Type SystemCommon Type System
Infraestructura de Lenguaje Infraestructura de Lenguaje Común (CLI)Común (CLI)
Especificación patrocinada por Especificación patrocinada por Microsoft, Intel, HP y Microsoft, Intel, HP y estandarizada por ECMA (2001) estandarizada por ECMA (2001) e ISO (2003) que describe: e ISO (2003) que describe: Entorno de Ejecución de Entorno de Ejecución de
AplicacionesAplicaciones Conjunto de Librerías Básicas Conjunto de Librerías Básicas
(BCL)(BCL) Tipos de Datos Comunes (CTS)Tipos de Datos Comunes (CTS)
El .NET Framework y el .NET El .NET Framework y el .NET Compact Framework son Compact Framework son implementaciones de la implementaciones de la especificación CLIespecificación CLI
Sub-Especificaciones de Sub-Especificaciones de CLICLI
Lenguajes de Alto Nivel
BCL (Base Class Library)
CLR (Common Language Runtime)
Sistema Operativo
CLS (Common Language Specification)
CTS (Common Type System)
se ajustan a las reglas de la…
y utilizan las clases de la…
cuyos tipos básicos forman el…
y se ejecutan bajo el control de y usan los servicios del…
que está acoplado al y utiliza los servicios del …
VB.NETVB.NETCódigoCódigoFuenteFuente
Compilador Compilador VB.NETVB.NET
C++.NETC++.NETC#C#
AssemblyAssemblyCódigo MSILCódigo MSIL
Sistema Operativo (Windows)Sistema Operativo (Windows)
Common Language RuntimeCommon Language Runtime
Compilador JITCompilador JIT
Código NativoCódigo Nativo
Código Código ManejadoManejado
ComponenteComponenteNo ManejadoNo Manejado
Modelo de Ejecución del Modelo de Ejecución del CLRCLR
CompiladorCompiladorC#C#
CompiladorCompiladorC++ .NETC++ .NET
AssemblyAssemblyCódigo MSILCódigo MSIL
AssemblyAssemblyCódigo MSILCódigo MSIL
Debug EngineDebug Engine
CompiladorCompiladorJITJIT
Assembly en Assembly en la máquinala máquina
destinodestino
Modelo de Ejecución del Modelo de Ejecución del CLRCLR
AssemblyAssembly
DesarrolloDesarrollo InstalaciónInstalación
InstalaciónInstalación
EjecuciónEjecución
AssemblyAssemblyLoaderLoaderSeguridadSeguridadClass Class
LoaderLoader
.exe Nativo.exe Nativo++
Tabla GC Tabla GC
Code Code ManagerManager
Garbage CollectorGarbage Collector
Manejador ExcepcionesManejador Excepciones
Soporte MultiThreadSoporte MultiThread
COM InteropCOM Interop
Policy<?xml version="1.0" encoding="utf-8" ?><configuration> <mscorlib> <security> <policy> <PolicyLevel version="1"> <CodeGroup class="UnionCodeGroup" version="1" PermissionSetName="Nothing" Name="All_Code" Description="Code group grants no permissions and forms the root of the code group tree."> <IMembershipCondition class="AllMembershipCondition" version="1"/> <CodeGroup class="UnionCodeGroup" version="1" PermissionSetName="FullTrust"
Application DomainsApplication DomainsProcesos virtuales dentro del CLRProcesos virtuales dentro del CLR Se ejecutan dentro de un proceso del Se ejecutan dentro de un proceso del
Sistema OperativoSistema Operativo Un proceso del sistema operativo puede Un proceso del sistema operativo puede
contener varios AppDomainscontener varios AppDomains Más eficiente que múltiples procesos Más eficiente que múltiples procesos
del sistema operativodel sistema operativo Más eficiente en el intercambio de Más eficiente en el intercambio de
contexto de ejecucióncontexto de ejecución
Un Assembly y sus tipos son siempre Un Assembly y sus tipos son siempre cargados dentro de un AppDomaincargados dentro de un AppDomainProvee una frontera para: Fallos, Provee una frontera para: Fallos, Tipos, SeguridadTipos, Seguridad
Application Domains - CLR Application Domains - CLR HostHost
Código Manejado
CLRCLR Host
AppDomain 1
Código Manejado
AppDomain N
CTS (Common Type System)CTS (Common Type System)Define un conjunto común de “tipos” de Define un conjunto común de “tipos” de datos orientados a objetosdatos orientados a objetos
Todo lenguaje de programación .NET debe Todo lenguaje de programación .NET debe implementar los tipos definidos por el CTSimplementar los tipos definidos por el CTS
Todo tipo hereda Todo tipo hereda directa o directa o indirectamente indirectamente del tipo del tipo System.ObjectSystem.Object
Define Tipos de Define Tipos de VALOR y de VALOR y de REFERENCIAREFERENCIA
Todo tipo hereda Todo tipo hereda directa o directa o indirectamente indirectamente del tipo del tipo System.ObjectSystem.Object
Define Tipos de Define Tipos de VALOR y de VALOR y de REFERENCIAREFERENCIA
La Memoria y los Tipos de La Memoria y los Tipos de DatosDatosEl CLR administra dos segmentos de El CLR administra dos segmentos de
memoria: memoria: Stack (Pila)Stack (Pila) y y Heap (Montón)Heap (Montón)
El El StackStack es liberado automáticamente y es liberado automáticamente y el el HeapHeap es administrado por el es administrado por el GCGC ((Garbage CollectorGarbage Collector))Los tiposLos tipos VALOR VALOR se almacenan en se almacenan en el Stackel Stack
Los tipos Los tipos REFERENCIAREFERENCIA se se almacenan en el almacenan en el HeapHeap
Los tiposLos tipos VALOR VALOR se almacenan en se almacenan en el Stackel Stack
Los tipos Los tipos REFERENCIAREFERENCIA se se almacenan en el almacenan en el HeapHeap
Temas a TratarTemas a Tratar
Introducción a Microsoft .NETIntroducción a Microsoft .NET Componentes FundamentalesComponentes Fundamentales Funcionamiento Interno del CLRFuncionamiento Interno del CLR Bibliotecas PrincipalesBibliotecas Principales
Base Class Library (BCL)Base Class Library (BCL) ADO.NETADO.NET Windows FormsWindows Forms ASP.NETASP.NET
Base Class LibraryBase Class Library
System
Globalization
Diagnostics
Configuration
Collections
Resources
Reflection
Net
IO
Threading
Text
ServiceProcess
Security InteropServices
Remoting
Serialization
Acceso a Datos: ADO.NETAcceso a Datos: ADO.NETSystem.Data
OleDb
SqlClient
OracleClient
Common
Odbc SqlTypes
System.Xml
Serialization
XPath
XSLT
Schema
Acceso a Bases de Datos Acceso a Bases de Datos Relacionales Escenario Relacionales Escenario ConectadoConectado Un entorno conectado es uno en el Un entorno conectado es uno en el
cual los usuarios están cual los usuarios están constantemente conectados a la constantemente conectados a la fuente de datosfuente de datos Ventajas:Ventajas: Mayor seguridadMayor seguridad Mejor control de concurrenciaMejor control de concurrencia Los datos se mantienen actualizadosLos datos se mantienen actualizados
Desventajas:Desventajas: Se requiere una conexión constante Se requiere una conexión constante
(consume recursos del servidor)(consume recursos del servidor) EscalabilidadEscalabilidad
En un entorno desconectado, una En un entorno desconectado, una parte de los datos del repositorio parte de los datos del repositorio central se copia y modifica en forma central se copia y modifica en forma local, para luego sincronizarse con local, para luego sincronizarse con éste. éste. VentajasVentajas Se puede trabajar en forma Se puede trabajar en forma
independienteindependiente Mayor escalabilidad y performanceMayor escalabilidad y performance
DesventajasDesventajas Los datos no están sinconizadosLos datos no están sinconizados Resolución manual de conflictosResolución manual de conflictos
Acceso a Bases de Datos Acceso a Bases de Datos Relacionales Escenario Relacionales Escenario DesconectadoDesconectado
ADO.NET - ArquitecturaADO.NET - Arquitectura
ADO.NET- Proveedores de ADO.NET- Proveedores de Acceso a DatosAcceso a Datos
SQL Server/Access SQL Server/Access (System.Data.SqlClient)(System.Data.SqlClient)OLE DB (System.Data.OleDb)OLE DB (System.Data.OleDb)ODBC (System.Data.Odbc)ODBC (System.Data.Odbc)Oracle (System.Data.OracleClient)Oracle (System.Data.OracleClient)Otros provistos por terceros (MySQL, Otros provistos por terceros (MySQL, PostgreSQL, DB2, etc..)PostgreSQL, DB2, etc..)
Base de Datos
XxxConnectionXxxConnection
XxxCommandXxxCommand
DataSetDataSet XxxDataReaderXxxDataReader
XxxDataAdapterXxxDataAdapter
Maneja la conección a una base de datos
Maneja la conección a una base de datos
Ejecuta comandos contra una basede datos
Ejecuta comandos contra una basede datos
Copia local de datos relacionalesCopia local de datos relacionales
Provee acceso a datos read-only, Forward-onlyProvee acceso a datos read-only, Forward-only
Intercambia datos entre un dataset y una base de datos
Intercambia datos entre un dataset y una base de datos
ADO.NET- Clases más ADO.NET- Clases más comunescomunes
DataSetDataSet
DataTableDataTable
DataTableDataTable
DataRowDataRow
DataColumnDataColumn
RelacionesRelaciones
RestriccionesRestriccionesEsquema XML Esquema XML
ADO.NET- DataSetADO.NET- DataSet
ADO.NET vs. ADOADO.NET vs. ADO
ADO.NET – Accediendo a datos ADO.NET – Accediendo a datos ConectadoConectado
En un escenario En un escenario conectado, los conectado, los recursos se mantienen recursos se mantienen en el servidor hasta en el servidor hasta que la conexión se que la conexión se cierracierra1) Abrir Conexión1) Abrir Conexión2) Ejecutar Comando2) Ejecutar Comando3) Procesar Filas en 3) Procesar Filas en DataReaderDataReader4) Cerrar Reader4) Cerrar Reader5) Cerrar Conexión5) Cerrar Conexión
En un escenario En un escenario desconectado, los recursos no desconectado, los recursos no se mantienen en el servidor se mantienen en el servidor mientras los datos se mientras los datos se procesanprocesan1) Abrir Conexión1) Abrir Conexión2) Llenar DataSet mediante 2) Llenar DataSet mediante DataAdapterDataAdapter3) Cerrar Conexión3) Cerrar Conexión4) Procesar DataSet4) Procesar DataSet5) Abrir Conexión5) Abrir Conexión6) Actualizar fuente de datos 6) Actualizar fuente de datos mediante DataAdaptermediante DataAdapter7) Cerrar Conexión7) Cerrar Conexión
ADO.NET – Accediendo a ADO.NET – Accediendo a datos Desconectadodatos Desconectado
XmlTextWriterXmlTextWriter
XmlTextReaderXmlTextReader
<XML><XML>
XmlDocumentXmlDocument
DocumentNavigatorDocumentNavigator
XmlReaderXmlReader
XmlValidatingReaderXmlValidatingReader XmlNodeReaderXmlNodeReader
ADO.NET - Soporte a XMLADO.NET - Soporte a XML
Windows FormsWindows Forms
System.Drawing
Drawing2D
Imaging
Printing
Text
System.WinForms
Design ComponentModel
Aplicaciones Web: Aplicaciones Web: ASP.NETASP.NET
System.Web
Caching
Configuration
Services UI
SessionState
HtmlControls
WebControls
Description
Discovery
Security
Protocols
Temas a TratarTemas a Tratar
Introducción a Microsoft .NETIntroducción a Microsoft .NETComponentes FundamentalesComponentes FundamentalesFuncionamiento Interno del CLRFuncionamiento Interno del CLRBibliotecas PrincipalesBibliotecas PrincipalesVentajas de .NETVentajas de .NET
Ventajas de .NETVentajas de .NETUnifica los modelos de programaciónUnifica los modelos de programaciónSimplifica aún más el desarrolloSimplifica aún más el desarrolloProvee un Entorno de Ejecución Provee un Entorno de Ejecución robusto y segurorobusto y seguroEs independiente del lenguaje de Es independiente del lenguaje de programaciónprogramaciónInteroperabilidad con código Interoperabilidad con código existenteexistenteSimplifica la instalación y Simplifica la instalación y administración de las aplicacionesadministración de las aplicacionesEs ExtensibleEs Extensible
Unificando los ModelosUnificando los Modelos
Windows APIWindows API
.NET Framework.NET Framework
API consistente mas allá del lenguaje API consistente mas allá del lenguaje o del modelo de programacióno del modelo de programación
ASPASP
Basado en Basado en Servidor,Servidor,
UI Embebido en el UI Embebido en el códigocódigo
MFC/ATL (C++)MFC/ATL (C++)
OOP, OOP, Potencia,Potencia,
Acceso a bajo Acceso a bajo nivelnivel
Visual BasicVisual Basic
Desarrollo Desarrollo Rapido,Rapido,
Componentes,Componentes,Event DrivenEvent Driven
Desarrollo SimplificadoDesarrollo Simplificado
Alto nivel de abstracciónAlto nivel de abstracción No mas accesos COM a bajo nivelNo mas accesos COM a bajo nivel Orientado a Objetos desde el NúcleoOrientado a Objetos desde el Núcleo
Sistema de tipos unificado (CTS)Sistema de tipos unificado (CTS) Todo es un objeto, no mas variantsTodo es un objeto, no mas variants
Componentes de SoftwareComponentes de Software Propiedades, métodos, eventos, y Propiedades, métodos, eventos, y
atributos incluidos en la construcción de atributos incluidos en la construcción de clasesclases
API organizada en forma JerárquicaAPI organizada en forma Jerárquica
Entorno de Ejecución Robusto y Entorno de Ejecución Robusto y SeguroSeguro
Gestión automática de la memoriaGestión automática de la memoria Todos los objetos son administrados por Todos los objetos son administrados por
el Garbage Collectorel Garbage Collector
Manejo de ExcepcionesManejo de ExcepcionesFuertemente tipadoFuertemente tipado Solo casteos segurosSolo casteos seguros Inicialización de variables obligatoriaInicialización de variables obligatoria
Instalación con Cero ImpactoInstalación con Cero Impacto No requiere registración en la RegistryNo requiere registración en la Registry
Independencia del Independencia del lenguajelenguaje
Libertad en la elección del lenguajeLibertad en la elección del lenguaje Todas las facilidades de la Todas las facilidades de la
plataforma .NET están disponibles a plataforma .NET están disponibles a todos los lenguajes de todos los lenguajes de programación .NETprogramación .NET
Los componentes de una Los componentes de una aplicación .NET pueden ser escritos en aplicación .NET pueden ser escritos en distintos lenguajes de alto nivel distintos lenguajes de alto nivel compatibles con la plataformacompatibles con la plataforma
Herramientas compartidasHerramientas compartidas Debuggers, profilers, analizadores de Debuggers, profilers, analizadores de
código, y otras trabajan para todos los código, y otras trabajan para todos los lenguajeslenguajes
Instalación y Administración Instalación y Administración más simplesmás simples
Unidades de Ensamblado Unidades de Ensamblado (“Assemblies”)(“Assemblies”) Mínima unidad de distribución, Mínima unidad de distribución,
versionado y administración de versionado y administración de seguridad de aplicaciones .NETseguridad de aplicaciones .NET
Auto-descriptas a través de Auto-descriptas a través de un manifiesto (“manifest”)un manifiesto (“manifest”)
Instalaciones Cero-impactoInstalaciones Cero-impacto Aplicaciones y componentes pueden ser Aplicaciones y componentes pueden ser
compartidas o privadascompartidas o privadas
VersioningVersioning Múltiples versiones del mismo Múltiples versiones del mismo
componente pueden co-existir, aún en componente pueden co-existir, aún en el mismo procesoel mismo proceso
ExtensibilidadExtensibilidad
El Framework no es una “caja negra”El Framework no es una “caja negra”Sus clases pueden ser extendidas a Sus clases pueden ser extendidas a través del mecanismo de herenciatravés del mecanismo de herencia A diferencia de COM, usamos y A diferencia de COM, usamos y
extendemos las clases en si mismas, no extendemos las clases en si mismas, no un “wrapper”un “wrapper”
Herencia entre distintos lenguajesHerencia entre distintos lenguajes
InteroperabilidadInteroperabilidad
.NET Framework.NET FrameworkServicios Web XMLServicios Web XML
C#C#
C++C++ VBVB
Otros...Otros... .NET.NET
COMCOMCOM INTEROP
Temas a TratarTemas a Tratar
Introducción a Microsoft .NETIntroducción a Microsoft .NET Componentes fundamentalesComponentes fundamentales Funcionamiento internoFuncionamiento interno Bibliotecas PrincipalesBibliotecas Principales Ventajas de .NETVentajas de .NET Herramientas de Desarrollo .NETHerramientas de Desarrollo .NET
Visual Studio 2005Visual Studio 2005 SQL Server 2005 ExpressSQL Server 2005 Express
Visual Studio 2005Visual Studio 2005
Novatos
Entusiastas
Estudiantes
Hobbyists
Part-Timers
Profesionales
Consultores
Desarrolladores
Arquitectos
Testers
VB6 Devs
Visual Studio 2005 Express Visual Studio 2005 Express EditionsEditions
Herramientas de desarrollo gratuitasHerramientas de desarrollo gratuitasMuy livianas, fáciles de usar y de aprenderMuy livianas, fáciles de usar y de aprenderDiseñadas para entusiastas, estudiantes y Diseñadas para entusiastas, estudiantes y desarrolladores principiantesdesarrolladores principiantesHay varias ediciones, según el tipo de Hay varias ediciones, según el tipo de aplicación y el lenguajeaplicación y el lenguajeTiene características avanzadas, por Tiene características avanzadas, por ejemplo:ejemplo: RefactoringRefactoring Code SnippetsCode Snippets Diseñadores WYSIWYGDiseñadores WYSIWYG DepuradoresDepuradores IntellisenseIntellisense
SQL Server 2005 ExpressSQL Server 2005 Express
La nueva versión de MSDELa nueva versión de MSDEEs gratuitoEs gratuitoPreparado para trabajar integrado Preparado para trabajar integrado con .NET 2.0con .NET 2.0Tamaño máximo de base: 4 GbTamaño máximo de base: 4 GbMax. Conexiones Concurrentes: no Max. Conexiones Concurrentes: no tienetieneIncluye una interfaz de Incluye una interfaz de administracion y un editor de administracion y un editor de consultasconsultasMayor integración con Visual Studio Mayor integración con Visual Studio 20052005
Temas a TratarTemas a Tratar
Introducción a Microsoft .NETIntroducción a Microsoft .NETComponentes fundamentalesComponentes fundamentalesFuncionamiento internoFuncionamiento internoBibliotecas PrincipalesBibliotecas PrincipalesVentajas de .NETVentajas de .NETHerramientas de Desarrollo .NETHerramientas de Desarrollo .NETNovedades en .NET 2.0Novedades en .NET 2.0
Temas a TratarTemas a Tratar
Novedades en .NET 2.0Novedades en .NET 2.0 GenericsGenerics Soporte para 64 bitsSoporte para 64 bits Tipos ParcialesTipos Parciales Nivel de Accesibilidad de PropertiesNivel de Accesibilidad de Properties Novedades en ADO.NET 2.0Novedades en ADO.NET 2.0
GenericsGenerics
Son tipos parametrizados soportados Son tipos parametrizados soportados por el CLRpor el CLR Un tipo parametrizado es aquel que Un tipo parametrizado es aquel que
puede definirse sin especificar los tipos puede definirse sin especificar los tipos de datos de sus parámetros en tiempo de datos de sus parámetros en tiempo de compilación.de compilación.
Nos dan la posibilidad de declarar Nos dan la posibilidad de declarar clases, estructuras, métodos e clases, estructuras, métodos e interfaces que actuarán interfaces que actuarán uniformemente sobre valores cuyos uniformemente sobre valores cuyos tipos se desconocen a priori y son tipos se desconocen a priori y son recién especificados al momento de recién especificados al momento de su utilizaciónsu utilización
Generics - EjemploGenerics - Ejemplo
Definiendo una clase genérica en C#Definiendo una clase genérica en C#
Utilizando una clase genérica en C#Utilizando una clase genérica en C#
public class ClaseGenerica<T> { public T atributo;}
ClaseGenerica <string> g = new ClaseGenerica<string>();g.atributo = “Un string";g.atributo = 2; //Genera Error de Compilación…ClaseGenerica<int> g2 = new ClaseGenerica<int>();g2.atributo = 2; //NO genera error de compilación
Generics - EjemploGenerics - Ejemplo
Definiendo una clase genérica en Definiendo una clase genérica en VB.NETVB.NET
Utilizando una clase genérica en Utilizando una clase genérica en VB.NETVB.NET
Public Class ClaseGenerica(Of T) Public atributo As TEnd Class
Dim g As New ClaseGenerica(Of String) g.atributo = “Un string"g.atributo = 2 ‘Genera error de compilación…Dim g2 As New ClaseGenerica(Of Integer) g2.atributo = 2 ‘NO genera error de compilación
Generics - ColeccionesGenerics - Colecciones
Colecciones Genéricas Vs. Colecciones Tradicionales
System.Collections.Generic System.Collections
Comparer<T> Comparer
Dictionary<K,T> HashTable
List<T> ArrayList
Queue<T> Queue
SortedDictionary<K,T> SortedList
Stack<T> Stack
ICollection<T> ICollection
IComparable<T> System.IComparable
IComparer<T> IComparer
IDictionary<K,T> IDictionary
IEnumerable<T> IEnumerable
IEnumerator<T> IEnumerator
IKeyComparer<T> IKeyComparer
IList<T> IList
Generics - ColeccionesGenerics - Colecciones
Sin generics
Con generics
Generics - ColeccionesGenerics - Colecciones
Sin generics
Con generics
Soporte para 64 bitsSoporte para 64 bits
El CLR 1.x sólo tiene soporte para El CLR 1.x sólo tiene soporte para aplicaciones de 32 bitsaplicaciones de 32 bits No aprovechan las características de los No aprovechan las características de los
sistemas operativos de 64 bits, ya que sistemas operativos de 64 bits, ya que se ejecutan emuladasse ejecutan emuladas
El CLR 2.0 tiene una versión de 64 El CLR 2.0 tiene una versión de 64 bitsbits Permite compilar aplicaciones para que Permite compilar aplicaciones para que
hagan uso nativamente de las nuevas hagan uso nativamente de las nuevas características de los sistemas características de los sistemas operativos y procesadores de 64 bitsoperativos y procesadores de 64 bits
Tipos ParcialesTipos ParcialesPermiten la declaración de un tipo en Permiten la declaración de un tipo en varios archivos físicosvarios archivos físicos Válido para clases y estructuras Válido para interfaces sólo en C# Utilizan la palabra clave “partial” en la
declaración
Su uso puede tener varias ventajasSu uso puede tener varias ventajas Dividir implementaciones complejas en partes
pequeñas Separación de código auto-generado Mútiples desarrolladores pueden trabajar sobre
distintas secciones del mismo tipo simultáneamente
Puede facilitar el mantenimiento y el control de versiones de código
// Demo.Part1.cs// Demo.Part1.cs
using System;using System;
public partial class Demopublic partial class Demo
{{
public Demo()public Demo()
{{
Console.Write( "P1" );Console.Write( "P1" );
}}
}}
// Demo.Part2.cs// Demo.Part2.cs
public partial class Demopublic partial class Demo
{{
private int i;private int i;
}}
// Demo.Part3.cs// Demo.Part3.cs
// Error 1!// Error 1!
public class Demopublic class Demo
{{
// Error 2!// Error 2!
private int i;private int i;
// OK// OK
private int j;private int j;
public void Test()public void Test()
{{
// Error 3!// Error 3!
Console.Write( "P3" );Console.Write( "P3" );
}}
}}
Tipos Parciales - EjemploTipos Parciales - Ejemplo
Tipos Parciales - EjemploTipos Parciales - Ejemplo
' Demo.Part1.vb' Demo.Part1.vb
Imports SystemImports System
Partial Public Class DemoPartial Public Class Demo
Public Sub New()Public Sub New()
Console.Write("P1")Console.Write("P1")
End SubEnd Sub
End ClassEnd Class
' Demo.Part2.vb' Demo.Part2.vb
Partial Public Class DemoPartial Public Class Demo
Private i As IntegerPrivate i As Integer
End ClassEnd Class
' Demo.Part3.vb' Demo.Part3.vb
' OK en VB.NET' OK en VB.NET
Public Class DemoPublic Class Demo
' Error 2!' Error 2!
Private i As IntegerPrivate i As Integer
' OK' OK
Private j As IntegerPrivate j As Integer
Public Sub Test()Public Sub Test()
' OK en VB.NET' OK en VB.NET
Console.Write("P3")Console.Write("P3")
End SubEnd Sub
End ClassEnd Class
Modificadores de acceso Modificadores de acceso El CLR 2.0 permite especificar diferentes El CLR 2.0 permite especificar diferentes modificadores de acceso para el get y el modificadores de acceso para el get y el set de las propiedades e índicesset de las propiedades e índicesPermite solamente modificar uno de los Permite solamente modificar uno de los dos elementos de acceso, mientras que dos elementos de acceso, mientras que el otro toma el nivel de acceso de la el otro toma el nivel de acceso de la propertypropertyPuede especificar más restriccionesPuede especificar más restriccionesMejora el encapsulamiento de atributosMejora el encapsulamiento de atributos
Modificadores de acceso - Modificadores de acceso - EjemplosEjemplos
public class Customer{public class Customer{ private string id;private string id; public string public string CustomerId {CustomerId { public get { return public get { return id; }id; } privateprivate set { id = set { id = value; }value; } }}}}
Public Class CustomerPublic Class Customer Private id As StringPrivate id As String Public Property CustomerId() As StringPublic Property CustomerId() As String GetGet Return Me.idReturn Me.id End GetEnd Get PrivatePrivate Set(ByVal value As Set(ByVal value As String)String) Me.id = valueMe.id = value End SetEnd Set End PropertyEnd PropertyEnd ClassEnd Class
Novedades en ADO.NET Novedades en ADO.NET 2.02.0
API independiente del proveedor ADO.NETAPI independiente del proveedor ADO.NET Modelada bajo el patrón “Abstract Factory”Modelada bajo el patrón “Abstract Factory”
Operaciones AsincrónicasOperaciones Asincrónicas Permite ejecutar comandos contra la base de Permite ejecutar comandos contra la base de
datos de manera asincrónica no bloqueantedatos de manera asincrónica no bloqueante
Multiple Active Result Sets (MARS)Multiple Active Result Sets (MARS) Permite tener múltiples DataReaders abiertos Permite tener múltiples DataReaders abiertos
sobre la misma conexiónsobre la misma conexión
Novedades en ADO.NET Novedades en ADO.NET 2.02.0Integración y aprovechamiento de Integración y aprovechamiento de
características de SQL Server 2005características de SQL Server 2005 Notification ServicesNotification Services Service BrokerService Broker Tipo de dato XMLTipo de dato XML Soporte a Servicios WebSoporte a Servicios Web
Mejoras en el DataSet y DataTableMejoras en el DataSet y DataTable PerformancePerformance SerializaciónSerialización Soporte a XMLSoporte a XML
ADO.NET 2.0 – API ADO.NET 2.0 – API IndependienteIndependiente
Namespace System.Data.CommonNamespace System.Data.Common
DbCommandDbCommand DbCommandBuilderDbCommandBuilder DbConnectionDbConnection
DataAdapterDataAdapter DbDataAdapterDbDataAdapter DbDataReaderDbDataReader
DbParameterDbParameter DbParameterCollectionDbParameterCollection DbTransactionDbTransaction
DbProviderFactoryDbProviderFactory DbProviderFactoriesDbProviderFactories DbExceptionDbException
Interfaces IDb* (ej: IDbConnection)Interfaces IDb* (ej: IDbConnection)
clases base abstractas Db* (ej: DbConnection)clases base abstractas Db* (ej: DbConnection)
Implementa la clase baseImplementa la clase base Db*Db*
SqlSql OleDbOleDb ODBCODBC OracleOracle 33rdrd Party 1Party 1
33rdrd Party 2Party 2
Provider- Independiente del código de la aplicación en esta capa
Provider-específico en el código de la aplicación en esta capa
ADO.NET 2.0 – API ADO.NET 2.0 – API IndependienteIndependiente
ADO.NET 2.0 - DataSetADO.NET 2.0 - DataSetMejoras de performanceMejoras de performance Mantienen indices internos de los Mantienen indices internos de los
registros de sus DataTablesregistros de sus DataTables
Serialización binaria del contenidoSerialización binaria del contenido El DataSet 1.x El DataSet 1.x es siempre serializado a es siempre serializado a
XMLXML Bueno para integrar datos, malo en Bueno para integrar datos, malo en
performanceperformance El DataSet 2.0 soporta El DataSet 2.0 soporta serialización serialización
binaria binaria Rápido y compactoRápido y compacto DataSet.RemotingFormat = DataSet.RemotingFormat =
SerializationFormat.BinarySerializationFormat.Binary
ADO.NET 2.0 - DataTableADO.NET 2.0 - DataTable
Operaciones comunes del Operaciones comunes del DataSet DataSet
también disponibles en el también disponibles en el DataTable:DataTable: ReadXml, ReadXmlSchema, WriteXml, ReadXml, ReadXmlSchema, WriteXml,
WriteXmlSchema, Clear, Clone, Copy, WriteXmlSchema, Clear, Clone, Copy,
Merge, GetChanges Merge, GetChanges
DataTable es DataTable es auto-serializableauto-serializable:: Buen mecanismo para transmitir datos Buen mecanismo para transmitir datos
en una aplicación distribuídaen una aplicación distribuída
ADO.NET 2.0 - Tipo de dato ADO.NET 2.0 - Tipo de dato XML en el DataSetXML en el DataSet
DataTable DataTable acepta columnas de tipo acepta columnas de tipo XMLXML System.Data.SqlTypes.SqlXml System.Data.SqlTypes.SqlXml
Expuestas como una instancia de Expuestas como una instancia de XPathDocumentXPathDocumentPueden accederse vía Pueden accederse vía XmlReaderXmlReaderFacilidades para trabajar con Facilidades para trabajar con documentos XML como un conjunto de documentos XML como un conjunto de valoresvalores
ADO.NET 2.0 - ADO.NET 2.0 - Actualizaciones BatchActualizaciones Batch
ADO.NET 2.0 permite ejecutar ADO.NET 2.0 permite ejecutar múltiples instrucciones SQL sobre múltiples instrucciones SQL sobre una base de datos de forma batch, una base de datos de forma batch, usando el sp_executesqlusando el sp_executesqlReduce tráfico de redReduce tráfico de redDataAdapter.UpdateBatchSize = DataAdapter.UpdateBatchSize = batch_sizebatch_sizeTrabaja con transaccionesTrabaja con transaccionesTrabaja con Trabaja con los proveedores para los proveedores para SQL Server y OracleSQL Server y Oracle
© 2006 Microsoft Corporation. All rights reserved.This presentation is for informational purposes only. Microsoft makes no warranties, express or
implied, in this summary.