Post on 02-Jul-2015
transcript
Módulo I- Introducción a la Programación en Módulo I- Introducción a la Programación en la Plataforma .Net con C#la Plataforma .Net con C#
TEMARIOTEMARIO
CAPITULO II.- INTRODUCCIÓN A LA PLATAFORMA .NET
• IntroducciónIntroducción• .NET Framework.NET Framework• CRL Common Languages CRL Common Languages
RuntimeRuntime• AssemblyAssembly• NET Framework Class LibraryNET Framework Class Library• CTS (Common Type System)CTS (Common Type System)• Ventajas de .NETVentajas de .NET• Herramientas de DesarrolloHerramientas de Desarrollo
¿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 Programación.NET no es un Lenguaje de Programación
.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
INTRODUCCIÓNINTRODUCCIÓN
¿Qué es .NET?¿Qué es .NET?Plataforma de Desarrollo compuesta dePlataforma de Desarrollo compuesta de Entorno de Ejecución (Runtime)Entorno de Ejecución (Runtime) Bibliotecas de Funcionalidad (Class Library)Bibliotecas de Funcionalidad (Class Library) Lenguajes de ProgramaciónLenguajes de Programación CompiladoresCompiladores Herramientas de Desarrollo (IDE & Tools)Herramientas de Desarrollo (IDE & 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 (1/2)Características de .NET (1/2)
Plataforma de ejecución intermediaPlataforma de ejecución intermedia
100% Orientada a Objetos100% Orientada a Objetos
MultilenguajeMultilenguaje
Plataforma Empresarial de Misión CríticaPlataforma Empresarial de Misión Crítica
Características de .NET (2/2)Características de .NET (2/2)
Modelo de Programación único para todo tipo Modelo de Programación único para todo tipo de aplicaciones y dispositivos de hardwarede aplicaciones y dispositivos de hardware
Se integra fácilmente con aplicaciones Se integra fácilmente con aplicaciones existentes desarrolladas en plataformas existentes desarrolladas en plataformas MicrosoftMicrosoft
Se integra fácilmente con aplicaciones Se integra fácilmente con aplicaciones desarrolladas en otras plataformasdesarrolladas en otras plataformas
Plataforma de Ejecución IntermediaPlataforma de Ejecución Intermedia
Entorno de Desarrollo
Mic
ros o
ft .
NE
T
Librerías de Funcionalidad
Lenguajes de Programación
Entorno de Ejecución
Sistema Operativo (Famil ia Windows)
Aplicación .NET
¿Qué es el .NET Framework?¿Qué es el .NET Framework?Paquete de software fundamental de la Paquete de software fundamental de la plataforma .NET. Incluye: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 gratuitaSe distribuye en forma libre y gratuita
Existen tres variantes principales:Existen tres variantes principales: .NET Framework Redistributable Package.NET Framework Redistributable Package .NET Framework SDK.NET Framework SDK .NET Compact Framework .NET Compact Framework
.NET FRAMEWORK.NET FRAMEWORK
.NET Compact Framework
*
*
AplicaciónMóvil
Aplicación de Consola
Aplicación Web
Aplicación de Escritorio
¿Dónde instalar el .NET Framework?¿Dónde instalar el .NET Framework?
ServidorCliente
* Sólo si la aplicación es distribuída* Sólo si la aplicación es distribuída
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 FrameworkArquitectura del .NET Framework.N
ET
Fr a
mew
o rk
Red
istr
i but
able
.NE
T F
r am
ewo
rk S
DK
.NE
T F
r amew
o rk
Class L ibrary
CLRCLREl CLR es el motor de ejecución (runtime) de El CLR es el motor de ejecución (runtime) de .NET.NETCaracterísticasCaracterísticas Compilación Just-In-Time (JIT)Compilación Just-In-Time (JIT) Gestión automática de memoria (Garbage Gestión automática de memoria (Garbage
Collector)Collector) Gestión de errores consistente (Excepciones)Gestión de errores consistente (Excepciones) Ejecución basada en componentes Ejecución basada en componentes
(Assemblies)(Assemblies) Gestión de SeguridadGestión de Seguridad MultithreadingMultithreading
CLR – COMMON LANGUAGE RUNTIMECLR – COMMON LANGUAGE RUNTIME
CLR - Arquitecturas de Ejecución de CLR - Arquitecturas de Ejecución de AplicacionesAplicaciones
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 CLRModelo de Ejecución del CLR
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 CLRModelo de Ejecución del CLR
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"
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 CompilaciónCLR – Proceso de Compilació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 “AssemblyQué es un “Assembly”?”?Un Assembly es la unidad mínima de ejecución, Un Assembly es la unidad mínima de ejecución, distribución, instalación y versionado de distribución, instalación y versionado de aplicaciones .NETaplicaciones .NET
Metadata Metadata
Código Compilado Código CompiladoMSIL MSIL
Recursos Recursos
MiBiblioteca.DLL MiBiblioteca.DLL
Descripción de Tipos Descripción de Tipos
Clases ClasesClases Base Clases BaseInterfaces Implementadas Interfaces ImplementadasAtributos de las Clases Atributos de las ClasesMétodos de las Clases Métodos de las Clases
Nombre NombreVersión VersiónCultura Cultura
Manifiesto del Assembly Manifiesto del Assembly
Otros Assemblies Otros AssembliesPermisos de Seguridad Permisos de SeguridadTipos Externos Tipos Externos
ASSEMBLYASSEMBLY
Assemblies - Aplicaciones .NETAssemblies - Aplicaciones .NET
Uno o más AssembliesUno o más AssembliesAl ejecutar una aplicación, ¿cómo ubico los Al ejecutar una aplicación, ¿cómo ubico los assemblies necesarios?assemblies necesarios?
El Class Loader busca en el directorio local El Class Loader busca en el directorio local (preferido)(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 Library.NET Framework Class LibraryConjunto de Tipos básicos (clases, interfaces, etc.) que vienen incluidos 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
CLASS LIBRARYCLASS LIBRARY
.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
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
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
Windows FormsWindows Forms
System.Drawing
Drawing2D
Imaging
Printing
Text
System.WinForms
Design ComponentModel
Aplicaciones Web: ASP.NETAplicaciones Web: ASP.NET
System.Web
Caching
Configuration
Services UI
SessionState
HtmlControls
WebControls
Description
Discovery
Security
Protocols
CTSCTSDefine un conjunto común de “tipos” de datos Define un conjunto común de “tipos” de datos orientados a objetosorientados 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 del indirectamente del tipo System.Objecttipo System.Object
Define Tipos de Define Tipos de VALOR y de VALOR y de REFERENCIAREFERENCIA
CTS COMMON TYPE SYSTEMCTS COMMON TYPE SYSTEM
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: Stack (Pila)Stack (Pila) y y Heap (Montón)Heap (Montón)
El El StackStack es liberado automáticamente y el es liberado automáticamente y el HeapHeap es administrado por el es administrado por el GCGC ( (Garbage Garbage CollectorCollector ))Los tiposLos tipos VALOR VALOR se almacenan en el se almacenan en el StackStack
Los tipos Los tipos REFERENCIAREFERENCIA se se almacenan en el almacenan en el HeapHeap
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 robusto y Provee un Entorno de Ejecución robusto y seguroseguroEs independiente del lenguaje de Es independiente del lenguaje de programaciónprogramaciónInteroperabilidad con código existenteInteroperabilidad con código existenteSimplifica la instalación y administración de Simplifica la instalación y administración de las aplicacioneslas 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 Servidor,Basado en 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 nivelAcceso a bajo nivel
Visual BasicVisual Basic
Desarrollo Rapido,Desarrollo 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 atributos Propiedades, métodos, eventos, y atributos
incluidos en la construcción de clasesincluidos en la construcción de clases
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 el Todos los objetos son administrados por el
Garbage CollectorGarbage 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 lenguajeIndependencia del lenguaje
Libertad en la elección del lenguajeLibertad en la elección del lenguaje Todas las facilidades de la plataforma .NET Todas las facilidades de la plataforma .NET
están disponibles a todos los lenguajes de están disponibles a todos los lenguajes de programación .NETprogramación .NET
Los componentes de una aplicación .NET Los componentes de una aplicació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 compartidas Debuggers, profilers, analizadores de código, y Debuggers, profilers, analizadores de código, y
otras trabajan para todos los lenguajesotras trabajan para todos los lenguajes
Instalación y Administración más Instalación y Administración más simplessimples
Unidades de Ensamblado (“Assemblies”)Unidades de Ensamblado (“Assemblies”) Mínima unidad de distribución, versionado y Mínima unidad de distribución, versionado y
administración de seguridad de aplicaciones administración de seguridad de aplicaciones .NET.NET
Auto-descriptas a través de un manifiesto Auto-descriptas a través de un manifiesto (“manifest”)(“manifest”)
Instalaciones Cero-impactoInstalaciones Cero-impacto Aplicaciones y componentes pueden ser Aplicaciones y componentes pueden ser
compartidas o privadascompartidas o privadasVersioningVersioning Múltiples versiones del mismo componente Múltiples versiones del mismo componente
pueden co-existir, aún en el mismo procesopueden co-existir, aún en el mismo proceso
ExtensibilidadExtensibilidad
El Framework no es una “caja negra”El Framework no es una “caja negra”Sus clases pueden ser extendidas a través Sus clases pueden ser extendidas a travé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 “wrapper”clases en si mismas, no un “wrapper”
Herencia entre distintos lenguajesHerencia entre distintos lenguajes
Visual Studio 2010Visual Studio 2010
Novatos
Entusiastas
Estudiantes
Hobbyists
Part-Timers
Profesionales
Consultores
Desarrolladores
Arquitectos
Testers
VB6 Devs
HERRAMIENTAS DE DESARROLLOHERRAMIENTAS DE DESARROLLO
Visual Studio 2010 Express EditionsVisual Studio 2010 Express Editions
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 aplicación y Hay varias ediciones, según el tipo de aplicación y el lenguajeel lenguajeTiene características avanzadas, por ejemplo:Tiene características avanzadas, por ejemplo: RefactoringRefactoring Code SnippetsCode Snippets Diseñadores WYSIWYGDiseñadores WYSIWYG DepuradoresDepuradores IntellisenseIntellisense
SQL Server 2008 ExpressSQL Server 2008 Express
La nueva versión de MSDELa nueva versión de MSDEEs gratuitoEs gratuitoPreparado para trabajar integrado con .NET Preparado para trabajar integrado con .NET 2.02.0Tamaño máximo de base: 4 GbTamaño máximo de base: 4 GbMax. Conexiones Concurrentes: no tieneMax. Conexiones Concurrentes: no tieneIncluye una interfaz de administración y un Incluye una interfaz de administración y un editor de consultaseditor de consultasMayor integración con Visual Studio 2010Mayor integración con Visual Studio 2010