Post on 01-Feb-2018
CCéélulalula AcadAcadéémicamicaUABCUABC--Live .netLive .net
Universidad Universidad AutAutóónomanoma de Baja Californiade Baja CaliforniaFacultadFacultad de de CienciasCiencias QuQuíímicasmicas e e IngenierIngenierííaa
http://uabc-live-net.spaces.live.com/
SesiSesióón No. 5n No. 5
IntroducciIntroduccióón a Microsoft n a Microsoft .NET.NET
Expositores:
Almanza Sevilla Tania Elena (thanya86@hotmail.com)
Carlos Alberto Cabrera González (carlos5686@hotmail.com)
Fecha: 19 de Octubre de 2006
Estrella 1Estrella 1IntroducciIntroduccióón a Microsoft .NET n a Microsoft .NET
Programa Microsoft Desarrollador Cinco
Estrellas
Programa Microsoft Programa Microsoft Desarrollador Cinco Desarrollador Cinco
EstrellasEstrellas
ObjetivoObjetivo
Presentar una introducciPresentar una introduccióón a la plataforma n a la plataforma de desarrollo Microsoft .NET, describiendo de desarrollo Microsoft .NET, describiendo sus principios bsus principios báásicos de funcionamiento, sicos de funcionamiento, su arquitectura de componentes y sus su arquitectura de componentes y sus principales bibliotecas reutilizables, principales bibliotecas reutilizables, mostrando ademmostrando ademáás las novedades s las novedades introducidas en la introducidas en la úúltima versiltima versióón de la n de la misma.misma.
PrerrequisitosPrerrequisitos
Poseer los conocimientos proporcionados Poseer los conocimientos proporcionados por la Estrella 0 del programapor la Estrella 0 del programaHaber aprobado el examen Haber aprobado el examen correspondiente a la Estrella 0 del correspondiente a la Estrella 0 del programaprogramaConocimientos fundamentales de bases Conocimientos fundamentales de bases de datos relacionales, incluyendode datos relacionales, incluyendo
Modelo RelacionalModelo RelacionalProtocolos de Acceso (ODBC/OLEDB)Protocolos de Acceso (ODBC/OLEDB)Lenguaje SQLLenguaje SQL
Imagine Imagine CupCup 20072007
Regístrate utilizando el código MX-UABC en la parte de “Referral Code” pararecibir un DVD.
Temas a TratarTemas a Tratar
IntroducciIntroduccióón a Microsoft .NETn 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
IntroducciIntroduccióón a Microsoft .NETn a Microsoft .NET¿¿QuQuéé no es .NET?no es .NET?¿¿QuQuéé es .NET?es .NET?.NET Como evoluci.NET Como evolucióón de COMn de COM
Paradigmas de ProgramaciParadigmas de Programacióónn
19801980 19901990 20002000
Func
iona
lidad
Func
iona
lidad
Win16Win16 Win32Win32COMCOM
MFCMFCComponentes
ComponentesServiciosServicios
APIsAPIs
Windows3.0
¿¿QuQuéé NO es .NET?NO es .NET?
.NET no es un Sistema Operativo.NET no es un Sistema Operativo
.NET no es un Lenguaje de Programaci.NET no es un Lenguaje de Programacióónn
.NET no es un Entorno de Desarrollo.NET no es un Entorno de Desarrollo
.NET no es un Servidor de Aplicaciones.NET no es un Servidor de Aplicaciones
.NET no es un producto empaquetado que se .NET no es un producto empaquetado que se pueda comprar como talpueda comprar como tal
¿¿QuQuéé es .NET?es .NET?Plataforma de Desarrollo compuesta dePlataforma de Desarrollo compuesta de
Entorno de EjecuciEntorno de Ejecucióón (n (RuntimeRuntime))Bibliotecas de Funcionalidad (Bibliotecas de Funcionalidad (ClassClass LibraryLibrary))Lenguajes de ProgramaciLenguajes de ProgramacióónnCompiladoresCompiladoresHerramientas de Desarrollo (IDE & Herramientas de Desarrollo (IDE & ToolsTools))GuGuíías de Arquitecturaas de Arquitectura
La evoluciLa evolucióón de la plataforma COMn de la plataforma COM
CaracterCaracteríísticas de .NET (1/2)sticas de .NET (1/2)
Plataforma de ejecuciPlataforma de ejecucióón intermedian intermedia
100% Orientada a Objetos100% Orientada a Objetos
MultilenguajeMultilenguaje
Plataforma Empresarial de MisiPlataforma Empresarial de Misióón Crn Crííticatica
CaracterCaracteríísticas de .NET (2/2)sticas de .NET (2/2)
Modelo de ProgramaciModelo de Programacióón n úúnico para todo tipo nico para todo tipo de aplicaciones y dispositivos de hardwarede aplicaciones y dispositivos de hardware
Se integra fSe integra fáácilmente con aplicaciones cilmente con aplicaciones existentes desarrolladas en plataformas existentes desarrolladas en plataformas MicrosoftMicrosoft
Se integra fSe integra fáácilmente con aplicaciones cilmente con aplicaciones desarrolladas en otras plataformasdesarrolladas en otras plataformas
Plataforma de EjecuciPlataforma de Ejecucióón Intermedian Intermedia
Entorno de Desarrollo
Mic
roso
ft .N
ET
Librerías de Funcionalidad
Lenguajes de Programación
Entorno de Ejecución
Sistema Operativo (Familia Windows)
Aplicación .NET
.NET como evoluci.NET como evolucióón de COMn de COMEntorno de EjecuciEntorno de Ejecucióón (n (RuntimeRuntime))
COM: WindowsCOM: Windows.NET: .NET: CommonCommon LanguageLanguage RuntimeRuntime
LibrerLibreríías de Funcionalidadas de FuncionalidadCOM: Algunas (ADO, FSO, etc.)COM: Algunas (ADO, FSO, etc.).NET: Muy extensa (.NET .NET: Muy extensa (.NET FrameworkFramework ClassClass LibraryLibrary))
Lenguajes de ProgramaciLenguajes de ProgramacióónnCOM: VB, C++, VFP, ASP, J++COM: VB, C++, VFP, ASP, J++.NET: .NET: CommonCommon LanguageLanguage SpecificationSpecification
Entorno de Desarrollo (IDE)Entorno de Desarrollo (IDE)COM: Uno para cada lenguajeCOM: Uno para cada lenguaje.NET: Uno independiente del lenguaje (.NET: Uno independiente del lenguaje (VS.NETVS.NET))
¿¿QuQuéé es el .NET es el .NET FrameworkFramework??
Paquete de software fundamental de la Paquete de software fundamental de la plataforma .NET. Incluye:plataforma .NET. Incluye:
Entorno de EjecuciEntorno de Ejecucióón (n (RuntimeRuntime))Bibliotecas de Funcionalidad (Bibliotecas de Funcionalidad (ClassClass LibraryLibrary))
Se distribuye en forma libre y gratuitaSe distribuye en forma libre y gratuita
Existen tres variantes principales:Existen tres variantes principales:
.NET .NET FrameworkFramework RedistributableRedistributable PackagePackage
.NET .NET FrameworkFramework SDKSDK
.NET Compact .NET Compact FrameworkFramework
EstEstáá instalado por defecto en Windows instalado por defecto en Windows 2003 Server o superior2003 Server o superior
.NET Compact Framework
*
*
AplicaciónMóvil
Aplicación de Consola
Aplicación Web
Aplicación de Escritorio
¿¿DDóónde instalar el .NET nde instalar el .NET FrameworkFramework??
ServidorCliente
* S* Sóólo si la aplicacilo si la aplicacióón es n es distribudistribuíídada
LLíínea del tiempo de .NETnea 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
IntroducciIntroduccióón a Microsoft .NETn a Microsoft .NETComponentes FundamentalesComponentes Fundamentales
ArquitecturaArquitecturaCommonCommon LanguageLanguage RuntimeRuntime (CLR)(CLR)Microsoft Microsoft IntermediateIntermediate LanguageLanguageAssembliesAssemblies.NET .NET ClassClass LibraryLibraryCommonCommon LanguageLanguage SpecificationSpecification (CLS)(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# …
ArquitecturaArquitectura del .NET Frameworkdel .NET Framework.N
ET
Fram
ewor
k R
edis
tribu
tabl
e
.NET
Fra
mew
ork
SDK
.NE
T Framew
ork
Class
Library
CLR CLR -- Arquitecturas de EjecuciArquitecturas de Ejecucióón de n de AplicacionesAplicaciones
CLR CLR –– CommonCommon LanguageLanguage RuntimeRuntime
El CLR es el motor de ejecuciEl CLR es el motor de ejecucióón (n (runtimeruntime) ) de .NETde .NETCaracterCaracteríísticassticas
CompilaciCompilacióón n JustJust--InIn--Time (JIT)Time (JIT)GestiGestióón automn automáática de memoria (tica de memoria (GarbageGarbageCollectorCollector))GestiGestióón de errores consistente (Excepciones)n de errores consistente (Excepciones)EjecuciEjecucióón basada en componentes n basada en componentes ((AssembliesAssemblies))GestiGestióón de Seguridadn de SeguridadMultithreadingMultithreading
CLR CLR –– Componentes InternosComponentes Internos
Class Loader
IL to NativeCompilers
CodeManager
GarbageCollector
Security Engine Debug Engine
Type Checker Exception Manager
Thread Support COM Marshaler
Base Class Library Support
CCóódigodigoFuenteFuente
CualquierCualquierlenguajelenguaje .NET.NET
CompiladorCompiladorAssemblyAssembly
(MSIL)(MSIL)
BibliotecaBibliotecao o EjecutableEjecutable
CLR CLR –– ProcesoProceso de de CompilaciCompilacióónn
CLR CLR -- MSILMSIL
.method private hidebysig static void Main(string[] args) cilmanaged {
.entrypointmaxstack 8 L_0000: ldstr "Hola Mundo"L_0005: call void [mscorlib]System.Console::WriteLine(string) L_000a: ret }
¿¿QuQuéé eses un un ““AssemblyAssembly””??
Un Un AssemblyAssembly es la unidad mes la unidad míínima de ejecucinima de ejecucióón, n, distribucidistribucióón, instalacin, instalacióón y versionado de n y versionado de aplicaciones .NETaplicaciones .NET
MetadataMetadata
CCóódigo digo CompiladoCompiladoMSILMSIL
RecursosRecursos
MiBiblioteca.DLLMiBiblioteca.DLL
DescripciDescripcióón de Tiposn de Tipos
ClasesClasesClases BaseClases BaseInterfaces ImplementadasInterfaces ImplementadasAtributosAtributos de de laslas ClasesClasesMMéétodostodos de de laslas ClasesClases
NombreNombreVersiVersióónnCulturaCultura
Manifiesto del AssemblyManifiesto del Assembly
Otros AssembliesOtros AssembliesPermisos de SeguridadPermisos de SeguridadTipos ExternosTipos Externos
AssembliesAssemblies -- Aplicaciones .NETAplicaciones .NET
Uno o mUno o máás s AssembliesAssembliesAl ejecutar una aplicaciAl ejecutar una aplicacióón, n, ¿¿ccóómo ubico los mo ubico los assembliesassemblies necesarios?necesarios?
El El ClassClass LoaderLoader busca en el directorio local busca en el directorio local (preferido)(preferido)Global Global AssemblyAssembly CacheCache (GAC)(GAC)
Diferentes aplicaciones pueden usar Diferentes aplicaciones pueden usar diferentes versionesdiferentes versiones
Actualizaciones mActualizaciones máás simpless simplesDesinstalaciDesinstalacióón mn máás simples simple
.NET .NET FrameworkFramework ClassClass LibraryLibrary
Conjunto de Tipos básicos (clases, interfaces, etc.) que vienen incluídos en el .NET FrameworkLos tipos están organizados en jerarquíaslógicas de nombres, denominadosNAMESPACESLos tipos son INDEPENDIENTES del lenguaje de desarrolloEs extensible y totalmente orientada a objetos
.NET Framework Class Library.NET Framework Class LibraryEl 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
RuntimeRuntimeInteropServicesInteropServices
RemotingRemoting
SerializationSerialization
SerializationSerialization
ConfigurationConfiguration SessionStateSessionState
CachingCaching SecuritySecurity
ServicesServicesDescriptionDescription
DiscoveryDiscovery
ProtocolsProtocols
UIUIHtmlControlsHtmlControls
WebControlsWebControls
System.Drawing
ImagingImaging
Drawing2DDrawing2D
TextText
PrintingPrinting
System.Windows.FormsDesignDesign ComponentModelComponentModel
CommonCommon LanguageLanguage SpecificationSpecification (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 .NETMicrosoft Visual C# .NETMicrosoft Visual C# .NETMicrosoft Visual J#.NETMicrosoft Visual J#.NETMicrosoft Visual C++.NETMicrosoft Visual C++.NET
CommonCommon LanguageLanguage SpecificationSpecification (CLS)(CLS)
El resto de la industria y el sector académicohan desarrollado más de 20 lenguajescompatibles con la especificación CLS
CobolCobol
EiffelEiffel
FortranFortran
PascalPascal
PerlPerl
C++.NETC++.NET C#C#
HaskellHaskell
JavaJava JavaScriptJavaScript
Visual Visual Basic.NETBasic.NET
MercuryMercury
MLML
PHPPHP
Objective CamlObjective Caml
OberonOberon SmalltalkSmalltalk SchemeScheme
J#J#
RPGRPG
MondrianMondrian
APLAPL
DelphiDelphi PythonPython
LISPLISP PrologProlog
CLS CLS -- ElecciEleccióón del lenguajen del lenguaje
.NET posee un .NET posee un úúnico nico runtimeruntime (el CLR) y un (el CLR) y un úúnico conjunto de bibliotecas para todos los nico conjunto de bibliotecas para todos los lenguajeslenguajesNo hay diferencias notorias de No hay diferencias notorias de performanceperformanceentre los lenguajes provistos por Microsoftentre los lenguajes provistos por MicrosoftEl lenguaje a utilizar, en El lenguaje a utilizar, en gral.gral., depender, dependeráá de de su experiencia previa con otros lenguajes o su experiencia previa con otros lenguajes o de gustos personalesde gustos personales
Si conoce Java, Si conoce Java, DelphiDelphi, C++, etc. , C++, etc. C#C#Si conoce Visual Basic o Si conoce Visual Basic o VBScriptVBScript VB.NETVB.NET
Los tipos de aplicaciones .NET son Los tipos de aplicaciones .NET son INDEPENDIENTES del lenguaje que elijaINDEPENDIENTES del lenguaje que elija
Temas a TratarTemas a Tratar
IntroducciIntroduccióón a Microsoft .NETn a Microsoft .NETComponentes FundamentalesComponentes FundamentalesFuncionamiento Interno del CLRFuncionamiento Interno del CLR
EspecificaciEspecificacióón CLIn CLIModelo de EjecuciModelo de EjecucióónnApplicationApplication DomainsDomainsCommonCommon TypeType SystemSystem
Infraestructura de Lenguaje ComInfraestructura de Lenguaje Comúún (CLI)n (CLI)
EspecificaciEspecificacióón patrocinada por n patrocinada por Microsoft, Intel, HP y estandarizada Microsoft, Intel, HP y estandarizada por ECMA (2001) e ISO (2003) que por ECMA (2001) e ISO (2003) que describe: describe:
Entorno de EjecuciEntorno de Ejecucióón de Aplicacionesn de AplicacionesConjunto de LibrerConjunto de Libreríías Bas Báásicas (BCL)sicas (BCL)Tipos de Datos Comunes (CTS)Tipos de Datos Comunes (CTS)
El .NET El .NET FrameworkFramework y el .NET Compact y el .NET Compact FrameworkFramework son implementaciones de son implementaciones de la especificacila especificacióón CLIn CLI
SubSub--EspecificacionesEspecificaciones de CLIde CLI
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.NETCCóódigodigoFuenteFuente
CompiladorCompiladorVB.NETVB.NET
C++.NETC++.NETC#C#
AssemblyAssemblyCCóódigodigo MSILMSIL
SistemaSistema OperativoOperativo (Windows)(Windows)
Common Language RuntimeCommon Language Runtime
CompiladorCompilador JITJIT
CCóódigodigo NativoNativo
CCóódigodigoManejadoManejado
ComponenteComponenteNo No ManejadoManejado
ModeloModelo de de EjecuciEjecucióónn del CLRdel CLR
CompiladorCompiladorC#C#
CompiladorCompiladorC++ .NETC++ .NET
AssemblyAssemblyCCóódigodigo MSILMSIL
AssemblyAssemblyCCóódigodigo MSILMSIL
Debug EngineDebug Engine
CompiladorCompiladorJITJIT
Assembly en Assembly en la la mmááquinaquina
destinodestino
ModeloModelo de de EjecuciEjecucióónn del CLRdel CLR
AssemblyAssembly
DesarrolloDesarrollo InstalaciInstalacióónn
InstalaciInstalacióónn
EjecuciEjecucióónn
AssemblyAssemblyLoaderLoaderSeguridadSeguridadClass Class
LoaderLoader
.exe .exe NativoNativo++
TablaTabla GC GC
Code Code ManagerManager
Garbage CollectorGarbage Collector
ManejadorManejador ExcepcionesExcepciones
SoporteSoporte MultiThreadMultiThread
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 Sistema Se ejecutan dentro de un proceso del Sistema OperativoOperativoUn proceso del sistema operativo puede Un proceso del sistema operativo puede contener varios contener varios AppDomainsAppDomainsMMáás eficiente que ms eficiente que múúltiples procesos del ltiples procesos del sistema operativosistema operativoMMáás eficiente en el intercambio de contexto de s eficiente en el intercambio de contexto de ejecuciejecucióónn
Un Un AssemblyAssembly y sus tipos son siempre y sus tipos son siempre cargados dentro de un cargados dentro de un AppDomainAppDomainProvee una frontera para: Fallos, Tipos, Provee una frontera para: Fallos, Tipos, SeguridadSeguridad
Application Domains Application Domains -- CLR HostCLR Host
Código Manejado
CLRCLR Host
AppDomain 1
Código Manejado
AppDomain N
CTS (CTS (CommonCommon TypeType SystemSystem))Define un conjunto comDefine un conjunto comúún de n de ““tipostipos”” de datos de datos orientados a objetosorientados a objetos
Todo lenguaje de programaciTodo lenguaje de programacióón .NET debe n .NET debe implementar los tipos definidos por el CTSimplementar los tipos definidos por el CTS
Todo tipo hereda directa o indirectamente del tipo System.Object
Define Tipos de VALOR y de REFERENCIA
Todo tipo hereda Todo tipo hereda directa o directa o indirectamente del indirectamente del tipo tipo System.ObjectSystem.Object
Define Tipos de Define Tipos de VALOR y de VALOR y de REFERENCIAREFERENCIA
La Memoria y los Tipos de DatosLa Memoria y los Tipos de DatosEl CLR administra dos segmentos de memoria: El CLR administra dos segmentos de memoria: StackStack (Pila)(Pila) y y HeapHeap (Mont(Montóón)n)
El El StackStack es liberado automes liberado automááticamente y el ticamente y el HeapHeapes administrado por el es administrado por el GCGC ((GarbageGarbage CollectorCollector))
Los tipos VALOR se almacenan en el Stack
Los tipos REFERENCIA se almacenan en el Heap
Los tiposLos tipos VALORVALOR se se almacenan en el almacenan en el StackStack
Los tipos Los tipos REFERENCIAREFERENCIA se se almacenan en el almacenan en el HeapHeap
Temas a TratarTemas a Tratar
IntroducciIntroduccióón a Microsoft .NETn a Microsoft .NETComponentes FundamentalesComponentes FundamentalesFuncionamiento Interno del CLRFuncionamiento Interno del CLRBibliotecas PrincipalesBibliotecas Principales
Base Base ClassClass LibraryLibrary (BCL)(BCL)ADO.NETADO.NETWindows Windows FormsFormsASP.NETASP.NET
Base Base ClassClass LibraryLibrary
System
GlobalizationDiagnosticsConfigurationCollections
ResourcesReflectionNetIO
ThreadingTextServiceProcessSecurity InteropServices
RemotingSerialization
Acceso a Datos: Acceso a Datos: ADO.NETADO.NETSystem.Data
OleDbSqlClient
OracleClientCommon
Odbc SqlTypes
System.XmlSerialization
XPathXSLT
Schema
AccesoAcceso a Bases de a Bases de DatosDatos RelacionalesRelacionalesEscenarioEscenario ConectadoConectado
Un Un entornoentorno conectadoconectado eses unouno en el en el cualcual los los usuariosusuarios estestáánn constantementeconstantemente conectadosconectadosa la a la fuentefuente de de datosdatosVentajasVentajas::
Mayor Mayor seguridadseguridadMejorMejor control de control de concurrenciaconcurrenciaLos Los datosdatos se se mantienenmantienen actualizadosactualizados
DesventajasDesventajas::Se Se requiererequiere unauna conexiconexióónn constanteconstante (consume (consume recursosrecursos del del servidorservidor))EscalabilidadEscalabilidad
En un En un entornoentorno desconectadodesconectado, , unauna parte de parte de los los datosdatos del del repositoriorepositorio central se central se copiacopia y y modificamodifica en forma local, en forma local, parapara luegoluegosincronizarsesincronizarse con con éésteste. . VentajasVentajas
Se Se puedepuede trabajartrabajar en forma en forma independienteindependienteMayor Mayor escalabilidadescalabilidad y performancey performance
DesventajasDesventajasLos Los datosdatos no no estestáánn sinconizadossinconizadosResoluciResolucióónn manual de manual de conflictosconflictos
AccesoAcceso a Bases de a Bases de DatosDatos RelacionalesRelacionalesEscenarioEscenario DesconectadoDesconectado
ADO.NET ADO.NET -- ArquitecturaArquitectura
ADO.NETADO.NET-- ProveedoresProveedores de de AccesoAccesoa a DatosDatos
SQL Server/Access (SQL Server/Access (System.Data.SqlClientSystem.Data.SqlClient))OLE DB (OLE DB (System.Data.OleDbSystem.Data.OleDb))ODBC (ODBC (System.Data.OdbcSystem.Data.Odbc))Oracle (Oracle (System.Data.OracleClientSystem.Data.OracleClient))OtrosOtros provistosprovistos porpor tercerosterceros ((MySQLMySQL, , PostgreSQLPostgreSQL, DB2, etc..), 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 datasety una base de datos
Intercambia datos entre un datasety una base de datos
ADO.NETADO.NET-- ClasesClases mmááss comunescomunes
DataSetDataSet
DataTableDataTable
DataTableDataTable
DataRowDataRow
DataColumnDataColumn
RelacionesRelaciones
RestriccionesRestriccionesEsquema XML Esquema XML
ADO.NETADO.NET-- DataSetDataSet
ADO.NET vs. ADOADO.NET vs. ADO
ADO.NET ADO.NET –– AccediendoAccediendo a a datosdatosConectadoConectado
En un En un escenarioescenarioconectadoconectado, los , los recursosrecursos se se mantienenmantienen en el en el servidorservidorhastahasta queque la la conexiconexióónn se se cierracierra1) 1) AbrirAbrir ConexiConexióónn2) 2) EjecutarEjecutar ComandoComando3) 3) ProcesarProcesar FilasFilas en en DataReaderDataReader4) 4) CerrarCerrar ReaderReader5) 5) CerrarCerrar ConexiConexióónn
En un En un escenarioescenario desconectadodesconectado, los , los recursosrecursos no se no se mantienenmantienen en el en el servidorservidor mientrasmientras los los datosdatos se se procesanprocesan1) 1) AbrirAbrir ConexiConexióónn2) 2) LlenarLlenar DataSetDataSet mediantemedianteDataAdapterDataAdapter3) 3) CerrarCerrar ConexiConexióónn4) 4) ProcesarProcesar DataSetDataSet5) 5) AbrirAbrir ConexiConexióónn6) 6) ActualizarActualizar fuentefuente de de datosdatosmediantemediante DataAdapterDataAdapter7) 7) CerrarCerrar ConexiConexióónn
ADO.NET ADO.NET –– AccediendoAccediendo a a datosdatosDesconectadoDesconectado
XmlTextWriterXmlTextWriter
XmlTextReaderXmlTextReader
<XML><XML>
XmlDocumentXmlDocument
DocumentNavigatorDocumentNavigator
XmlReaderXmlReader
XmlValidatingReaderXmlValidatingReader XmlNodeReaderXmlNodeReader
ADO.NET ADO.NET -- SoporteSoporte a XMLa XML
Windows Windows FormsForms
System.DrawingDrawing2DImaging
PrintingText
System.WinFormsDesign ComponentModel
Aplicaciones Web: Aplicaciones Web: ASP.NETASP.NET
System.Web
CachingConfiguration
Services UI
SessionState
HtmlControlsWebControls
DescriptionDiscovery
Security
Protocols
Temas a TratarTemas a Tratar
IntroducciIntroduccióón a Microsoft .NETn 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 programaciUnifica los modelos de programacióónnSimplifica aSimplifica aúún mn máás el desarrollos el desarrolloProvee un Entorno de EjecuciProvee un Entorno de Ejecucióón robusto y n robusto y seguroseguroEs independiente del lenguaje de Es independiente del lenguaje de programaciprogramacióónnInteroperabilidad con cInteroperabilidad con cóódigo existentedigo existenteSimplifica la instalaciSimplifica la instalacióón y administracin y administracióón n de las aplicacionesde las aplicacionesEs ExtensibleEs Extensible
Unificando los ModelosUnificando los Modelos
Windows APIWindows API
.NET Framework.NET Framework
API consistente mas allAPI consistente mas alláá del lenguaje del lenguaje o del modelo de programacio del modelo de programacióónn
ASPASP
Basado en Servidor,Basado en Servidor,UI Embebido en el UI Embebido en el
ccóódigodigo
MFC/ATL (C++)MFC/ATL (C++)
OOP, OOP, Potencia,Potencia,
Acceso a bajo nivelAcceso a bajo nivel
Visual BasicVisual Basic
DesarrolloDesarrollo RapidoRapido,,ComponentesComponentes,,Event DrivenEvent Driven
Desarrollo SimplificadoDesarrollo Simplificado
Alto nivel de abstracciAlto nivel de abstraccióónnNo mas accesos COM a bajo nivelNo mas accesos COM a bajo nivelOrientado a Objetos desde el NOrientado a Objetos desde el Núúcleocleo
Sistema de tipos unificado (CTS)Sistema de tipos unificado (CTS)Todo es un objeto, no mas Todo es un objeto, no mas variantsvariants
Componentes de SoftwareComponentes de SoftwarePropiedades, mPropiedades, méétodos, eventos, y atributos todos, eventos, y atributos incluidos en la construcciincluidos en la construccióón de clasesn de clases
API organizada en forma JerAPI organizada en forma Jeráárquicarquica
Entorno de EjecuciEntorno de Ejecucióón Robusto y n Robusto y SeguroSeguro
GestiGestióón automn automáática de la memoriatica de la memoriaTodos los objetos son administrados por el Todos los objetos son administrados por el GarbageGarbage CollectorCollector
Manejo de ExcepcionesManejo de ExcepcionesFuertemente Fuertemente tipadotipado
Solo Solo casteoscasteos segurossegurosInicializaciInicializacióón de variables obligatorian de variables obligatoria
InstalaciInstalacióón con Cero Impacton con Cero ImpactoNo requiere No requiere registraciregistracióónn en la en la RegistryRegistry
Independencia del lenguajeIndependencia del lenguaje
Libertad en la elecciLibertad en la eleccióón del lenguajen del lenguajeTodas las facilidades de la plataforma .NET Todas las facilidades de la plataforma .NET estestáán disponibles a todos los lenguajes de n disponibles a todos los lenguajes de programaciprogramacióón .NETn .NETLos componentes de una aplicaciLos componentes de una aplicacióón .NET n .NET pueden ser escritos en distintos lenguajes de pueden ser escritos en distintos lenguajes de alto nivel compatibles con la plataformaalto nivel compatibles con la plataforma
Herramientas compartidasHerramientas compartidasDebuggersDebuggers, , profilersprofilers, analizadores de c, analizadores de cóódigo, y digo, y otras trabajan para todos los lenguajesotras trabajan para todos los lenguajes
InstalaciInstalacióón y Administracin y Administracióón mn máás s simplessimples
Unidades de Ensamblado (Unidades de Ensamblado (““AssembliesAssemblies””))MMíínima unidad de distribucinima unidad de distribucióón, versionado y n, versionado y administraciadministracióón de seguridad de aplicaciones n de seguridad de aplicaciones .NET.NETAutoAuto--descriptas a travdescriptas a travéés de s de unun manifiestomanifiesto((““manifestmanifest””))
Instalaciones CeroInstalaciones Cero--impactoimpactoAplicaciones y componentes pueden ser Aplicaciones y componentes pueden ser compartidas o privadascompartidas o privadas
VersioningVersioningMMúúltiples versiones del mismo componente ltiples versiones del mismo componente pueden pueden coco--existir, aexistir, aúún en el mismo proceson en el mismo proceso
ExtensibilidadExtensibilidad
El El FrameworkFramework no es una no es una ““caja negracaja negra””Sus clases pueden ser extendidas a travSus clases pueden ser extendidas a travéés s del mecanismo de herenciadel mecanismo de herencia
A diferencia de COM, usamos y extendemos las A diferencia de COM, usamos y extendemos las clases en si mismas, no un clases en si mismas, no un ““wrapperwrapper””
Herencia entre distintos lenguajesHerencia entre distintos lenguajes
InteroperabilidadInteroperabilidad
.NET Framework.NET Framework
ServiciosServicios Web XMLWeb XML
C#C#
C++C++ VBVB
OtrosOtros...... .NET.NET
COMCOMCOM INTEROP
Temas a TratarTemas a Tratar
IntroducciIntroduccióón a Microsoft .NETn a Microsoft .NETComponentes fundamentalesComponentes fundamentalesFuncionamiento internoFuncionamiento internoBibliotecas PrincipalesBibliotecas PrincipalesVentajas de .NETVentajas de .NETHerramientas de Desarrollo .NETHerramientas de Desarrollo .NET
Visual Studio 2005Visual Studio 2005SQL 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 EditionsVisual Studio 2005 Express Editions
Herramientas de desarrollo gratuitasHerramientas de desarrollo gratuitasMuy livianas, fMuy livianas, fááciles de usar y de aprenderciles de usar y de aprenderDiseDiseññadas para entusiastas, estudiantes y adas para entusiastas, estudiantes y desarrolladores principiantesdesarrolladores principiantesHay varias ediciones, segHay varias ediciones, segúún el tipo de aplicacin el tipo de aplicacióón y n y el lenguajeel lenguajeTiene caracterTiene caracteríísticas avanzadas, por ejemplo:sticas avanzadas, por ejemplo:
RefactoringRefactoringCodeCode SnippetsSnippetsDiseDiseññadores WYSIWYGadores WYSIWYGDepuradoresDepuradoresIntellisenseIntellisense
SQL Server 2005 ExpressSQL Server 2005 Express
La La nuevanueva versiversióónn de MSDEde MSDEEs Es gratuitogratuitoPreparadoPreparado parapara trabajartrabajar integradointegrado con .NET con .NET 2.02.0TamaTamaññoo mmááximoximo de base: 4 de base: 4 GbGbMax. Max. ConexionesConexiones ConcurrentesConcurrentes: no : no tienetieneIncluyeIncluye unauna interfazinterfaz de de administracionadministracion y un y un editor de editor de consultasconsultasMayor Mayor integraciintegracióónn con Visual Studio 2005con Visual Studio 2005
Temas a TratarTemas a Tratar
IntroducciIntroduccióón a Microsoft .NETn 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
NovedadesNovedades en .NET 2.0en .NET 2.0GenericsGenericsSoporte para 64 bitsSoporte para 64 bitsTipos ParcialesTipos ParcialesNivel de Accesibilidad de Nivel de Accesibilidad de PropertiesPropertiesNovedades en Novedades en ADO.NETADO.NET 2.02.0
GenericsGenerics
Son tipos Son tipos parametrizadosparametrizados soportados por el soportados por el CLRCLR
Un tipo Un tipo parametrizadoparametrizado es aquel que puede es aquel que puede definirse sin especificar los tipos de datos de definirse sin especificar los tipos de datos de sus parsus paráámetros en tiempo de compilacimetros en tiempo de compilacióón.n.
Nos dan la posibilidad de declarar clases, Nos dan la posibilidad de declarar clases, estructuras, mestructuras, méétodos e interfaces que todos e interfaces que actuaractuaráán uniformemente sobre valores n uniformemente sobre valores cuyos tipos se desconocen a priori y son cuyos tipos se desconocen a priori y son recireciéén especificados al momento de su n especificados al momento de su utilizaciutilizacióónn
Generics Generics -- EjemploEjemplo
Definiendo una clase genDefiniendo una clase genéérica en rica en C#C#
Utilizando una clase genUtilizando una clase genéérica en rica en C#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 Generics -- EjemploEjemplo
Definiendo una clase genDefiniendo una clase genéérica en rica en VB.NETVB.NET
Utilizando una clase genUtilizando una clase genéérica en rica en VB.NETVB.NET
Public Class ClaseGenerica(Of T)Public atributo As T
End 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
GenericsGenerics -- ColeccionesColecciones
Colecciones Genéricas Vs. Colecciones Tradicionales
IListIList<T>
IKeyComparerIKeyComparer<T>
IEnumeratorIEnumerator<T>
IEnumerableIEnumerable<T>
IDictionaryIDictionary<K,T>
IComparerIComparer<T>
System.IComparableIComparable<T>
ICollectionICollection<T>
StackStack<T>
SortedListSortedDictionary<K,T>
QueueQueue<T>
ArrayListList<T>
HashTableDictionary<K,T>
ComparerComparer<T>
System.CollectionsSystem.Collections.Generic
GenericsGenerics -- ColeccionesColecciones
Sin generics
Con generics
GenericsGenerics -- ColeccionesColecciones
Sin generics
Con generics
SoporteSoporte parapara 64 bits64 bits
El CLR 1.x El CLR 1.x ssóólolo tienetiene soportesoporte paraparaaplicacionesaplicaciones de 32 bitsde 32 bits
No No aprovechanaprovechan laslas caractercaracteríísticassticas de los de los sistemassistemas operativosoperativos de 64 bits, de 64 bits, yaya queque se se ejecutanejecutan emuladasemuladas
El CLR 2.0 El CLR 2.0 tienetiene unauna versiversióónn de 64 bitsde 64 bitsPermitePermite compilarcompilar aplicacionesaplicaciones parapara queque haganhaganusouso nativamentenativamente de de laslas nuevasnuevas caractercaracteríísticassticasde los de los sistemassistemas operativosoperativos y y procesadoresprocesadores de de 64 bits64 bits
TiposTipos ParcialesParcialesPermitenPermiten la la declaracideclaracióónn de un de un tipotipo en en variosvariosarchivosarchivos ffíísicossicos
Válido para clases y estructurasVálido para interfaces sólo en C#Utilizan la palabra clave “partial” en la declaración
Su Su usouso puedepuede tenertener variasvarias ventajasventajasDividir implementaciones complejas en partes pequeñasSeparación de código auto-generadoMútiples desarrolladores pueden trabajar sobre distintassecciones del mismo tipo simultáneamentePuede facilitar el mantenimiento y el control de versionesde código
// Demo.Part1.cs// Demo.Part1.csusing 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.cspublic 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// OKprivate int j;private int j;
public void Test()public void Test(){{
// Error 3!// Error 3!Console.Write( "P3" );Console.Write( "P3" );
}}}}
TiposTipos ParcialesParciales -- EjemploEjemplo
TiposTipos ParcialesParciales -- EjemploEjemplo
' Demo.Part1.vb' Demo.Part1.vbImports SystemImports System
Partial Public Class DemoPartial Public Class DemoPublic Sub New()Public Sub New()
Console.Write("P1")Console.Write("P1")End SubEnd Sub
End ClassEnd Class
' Demo.Part2.vb' Demo.Part2.vbPartial Public Class DemoPartial Public Class Demo
Private i As IntegerPrivate i As IntegerEnd ClassEnd Class
' Demo.Part3.vb' Demo.Part3.vb' OK en VB.NET' OK en VB.NETPublic Class DemoPublic Class Demo
' Error 2!' Error 2!Private i As IntegerPrivate i As Integer' OK' OKPrivate j As IntegerPrivate j As Integer
Public Sub Test()Public Sub Test()' OK en VB.NET' OK en VB.NETConsole.Write("P3")Console.Write("P3")
End SubEnd Sub
End ClassEnd Class
ModificadoresModificadores de de accesoaccesoEl CLR 2.0 permite especificar diferentes El CLR 2.0 permite especificar diferentes modificadores de acceso para el modificadores de acceso para el getget y el y el setset de de las propiedades e las propiedades e ííndicesndicesPermite solamente modificar uno de los dos Permite solamente modificar uno de los dos elementos de acceso, mientras que el otro toma elementos de acceso, mientras que el otro toma el nivel de acceso de la el nivel de acceso de la propertypropertyPuede especificar mPuede especificar máás restriccioness restriccionesMejora el Mejora el encapsulamientoencapsulamiento de atributosde atributos
ModificadoresModificadores de de accesoacceso --EjemplosEjemplos
public class Customer{public class Customer{private string id;private string id;public string CustomerId {public string CustomerId {
public get { return id; }public get { return id; }privateprivate set { id = value; }set { id = value; }
}}}}
Public Class CustomerPublic Class CustomerPrivate id As StringPrivate id As StringPublic Property CustomerId() As StringPublic Property CustomerId() As String
GetGetReturn Me.idReturn Me.id
End GetEnd GetPrivatePrivate Set(ByVal value As String)Set(ByVal value As String)
Me.id = valueMe.id = valueEnd SetEnd Set
End PropertyEnd PropertyEnd ClassEnd Class
NovedadesNovedades en ADO.NET 2.0en ADO.NET 2.0
API API independienteindependiente del del proveedorproveedor ADO.NETADO.NET
ModeladaModelada bajobajo el el patrpatróónn ““Abstract FactoryAbstract Factory””
OperacionesOperaciones AsincrAsincróónicasnicas
PermitePermite ejecutarejecutar comandoscomandos contra la base de contra la base de datosdatos de de maneramanera asincrasincróónicanica no no bloqueantebloqueante
Multiple Active Result Sets (MARS)Multiple Active Result Sets (MARS)
PermitePermite tenertener mmúúltiplesltiples DataReadersDataReaders abiertosabiertos sobresobre la la mismamisma conexiconexióónn
NovedadesNovedades en ADO.NET 2.0en ADO.NET 2.0IntegraciIntegracióónn y y aprovechamientoaprovechamiento de de caractercaracteríísticassticas de de SQL Server 2005SQL Server 2005
Notification ServicesNotification Services
Service BrokerService Broker
TipoTipo de de datodato XMLXML
SoporteSoporte a a ServiciosServicios WebWeb
MejorasMejoras en el en el DataSetDataSet y y DataTableDataTable
PerformancePerformance
SerializaciSerializacióónn
SoporteSoporte a XMLa XML
ADO.NET 2.0 ADO.NET 2.0 –– API API IndependienteIndependiente
Namespace Namespace System.Data.CommonSystem.Data.Common
DbExceptionDbExceptionDbProviderFactoriesDbProviderFactoriesDbProviderFactoryDbProviderFactory
DbTransactionDbTransactionDbParameterCollectionDbParameterCollectionDbParameterDbParameter
DbDataReaderDbDataReaderDbDataAdapterDbDataAdapterDataAdapterDataAdapter
DbConnectionDbConnectionDbCommandBuilderDbCommandBuilderDbCommandDbCommand
Interfaces Interfaces IDbIDb* (* (ejej: : IDbConnectionIDbConnection))
clasesclases base base abstractasabstractas Db* (Db* (ejej: : DbConnectionDbConnection))
Implementa la clase baseImplementa la clase base Db*Db*
SqlSql OleDbOleDb ODBCODBC OracleOracle 33rdrd
Party 1Party 133rdrd
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 ADO.NET 2.0 –– API API IndependienteIndependiente
ADO.NET 2.0 ADO.NET 2.0 -- DataSetDataSetMejoras de Mejoras de performanceperformance
Mantienen Mantienen indicesindices internos de los registros de sus internos de los registros de sus DataTablesDataTables
SerializaciSerializacióónn binaria del contenidobinaria del contenidoEl El DataSetDataSet 1.x 1.x es siempre es siempre serializadoserializado a a XMLXML
Bueno para integrar datos, malo en Bueno para integrar datos, malo en performanceperformance
El El DataSetDataSet 2.0 2.0 soportasoporta serializaciserializacióónn binaria binaria RRáápido y compactopido y compactoDataSet.RemotingFormatDataSet.RemotingFormat = = SerializationFormat.BinarySerializationFormat.Binary
ADO.NET 2.0 ADO.NET 2.0 -- DataTableDataTable
Operaciones comunes del Operaciones comunes del DataSetDataSet tambitambiéén n
disponibles en el disponibles en el DataTableDataTable::
ReadXmlReadXml, , ReadXmlSchemaReadXmlSchema, , WriteXmlWriteXml, ,
WriteXmlSchemaWriteXmlSchema, Clear, Clone, Copy, Merge, , Clear, Clone, Copy, Merge,
GetChangesGetChanges
DataTable DataTable eses autoauto--serializableserializable::
Buen mecanismo para transmitir datos en una Buen mecanismo para transmitir datos en una
aplicaciaplicacióón n distribudistribuíídada
ADO.NET 2.0 ADO.NET 2.0 -- TipoTipo de de datodato XML XML en el en el DataSetDataSet
DataTableDataTable acepta columnas de tipo acepta columnas de tipo XMLXMLSystem.Data.SqlTypes.SqlXmlSystem.Data.SqlTypes.SqlXml
Expuestas como una instancia de Expuestas como una instancia de XPathDocumentXPathDocumentPueden accederse vPueden accederse víía a XmlReaderXmlReaderFacilidades para trabajar con documentos Facilidades para trabajar con documentos XML como un conjunto de valoresXML como un conjunto de valores
ADO.NETADO.NET 2.0 2.0 -- Actualizaciones Actualizaciones BatchBatch
ADO.NETADO.NET 2.0 permite ejecutar m2.0 permite ejecutar múúltiples ltiples instrucciones SQL sobre una base de instrucciones SQL sobre una base de datos de forma datos de forma batchbatch, usando el , usando el sp_executesqlsp_executesqlReduce trReduce trááfico de redfico de redDataAdapter.UpdateBatchSizeDataAdapter.UpdateBatchSize = = batch_sizebatch_sizeTrabaja con transaccionesTrabaja con transaccionesTrabaja con Trabaja con los los proveedoresproveedores parapara SQL SQL Server y OracleServer 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.