Вы находитесь на странице: 1из 50

Clase III

[nombre instructor]
[fecha]
Agenda
.NET Framework
Assemblies
App Domain
MSIL, JIT y Modelo de ejecucin
BCL
Build de soluciones
Errores en tiempo de compilacin
Errores en tiempo de ejecucin
Debugging
Edit & Continue
Programacin Orientada a Objetos
Clases Abstractas
Mtodos Virtuales
Excepciones
Accesibilidad de Miembros
Agenda
.NET Framework
Assemblies
App Domain
MSIL, JIT y Modelo de ejecucin
BCL
Build de soluciones
Errores en tiempo de compilacin
Errores en tiempo de ejecucin
Debugging
Edit & Continue
Programacin Orientada a Objetos
Clases Abstractas
Mtodos Virtuales
Excepciones
Accesibilidad de Miembros
Que es un ensamblado Assembly?
Un assemby es la unidad mas pequea de
distribucin de cdigo, instalacin y
versionado
Assemby sencillo Assembly complejo
A.netmodule
Manifest
ThisAssembly.dll ThisAssembly.dll (No Assembly Metadata)

Manifest Manifest Metadata

MetaData MetaData MSIL

MSIL MSIL B.netmodule


Manifest
.NET Framework

Resources Resources
(No Assembly Metadata)
Metadata

MSIL
Caractersticas de un Assembly
Unidad de distribucin
Uno o mas archivos independientemente del
empaquetado ( packaging)
Auto descriptivo usando el metadata
Reflection
Versionado
Capturada por el Compilador
Frontera de Seguridad
Contienen permisos de ejecucin
.NET Framework

Seguridad basada en evidencias


Los mtodos pueden demandar pruebas de
permisos concedido para todo el proceso de
ejecucin.
Que es el Metadata?
Describe a un assembly
Identifica: Nombre, versin, Cultura, Llaves
publicas
Que tipos son exportados
A que otros assemblys hace referencia
Permisos que se necesitan para la ejecucin
Descripcin de tipos
Nombre, visibilidad, clases base, interfaces que
implementa
Miembros ( mtodos, campos, propiedades,
eventos, tipos anidados)
.NET Framework

Sentencias declarativas
Atributos definido por el usuario
Atributos definidos por el compilador
Atributos definidos por el framework
.NET Framework
Manifiest
Dll Hell
Problema de incompatibilidad entre versiones de
libreras que estn relacionadas entre si.
Puede causar que todas las aplicaciones dejen de
funcionar.
Puede ser causada por problemas en los
instaladores, que no verifican correctamente el
versionado de las libreras.
.NET Framework, con los assemblies, resuelve el
problema.
Cada assembly contiene el manifest con
informacin de versionado y compatibilidad con
.NET Framework

otros assemblies
No se requiere mas el uso de instaladores para
distribuir aplicaciones.
Global Assembly Cache
Cache a nivel mquina
Almacena assemblies que deben ser
compartidos por diferentes aplicaciones
Instalar en GAC solo los assemblies que
deben ser compartidos y mantener privados
a los que no
Para instalar en GAC un assembly
Utilizar un instalador
Utilizar la herramienta gacutil.exe
.NET Framework

Utilizar el Windows Explorer para


arrastrar los assemblies al cache
Que son los AppDomains?
Procesos lgicos dentro del CLR
Corren dentro de un proceso del Sistema
Operativo
Un proceso del sistema operativo puede
contener varios AppDomains
Es mucho mas barato que mltiple procesos del
sistema operativo
Mucho menos costoso el intercambio de
ejecucin
Un assembly y sus tipos son siempre cargados
dentro de un AppDomain
.NET Framework

Provee una frontera para


Fallos
Tipos
Seguridad
CLR, AppDomains y Assemblies
.NET Framework
MSIL (Intermediate Language) +
Metadata
MSIL: lenguaje similar a las instrucciones nativas
de un procesador
Metadata: es informacin acerca de los tipos
(clases, interfaces, etc) y es almacenada junto al
MSIL
.NET Framework
Compilando Managed Code (MSIL +
Metadata)
Cuando el cdigo administrado (C#, VB.NET, etc) es
compilado, se genera un archivo (Assembly) .DLL
o .EXE conteniendo:
Cdigo MSIL
Metadata
.NET Framework
Compilacin JIT
Compilacin JIT: El CLR compila cada mtodo la
primera vez que el mismo es invocado.
El MSIL es compilado a cdigo nativo por el JIT
antes de que sea ejecutado.
Ejemplo: Tres
clases X, Y, Z. El
met. 1 de Y ha
sido compilado
y este llama al
met. 1 de Z que
esta en MSIL.
.NET Framework
Compilacin JIT (Cont.)
El met. 1 de Y llama al met. 4 dentro de Y. Como el
met. 4 esta en MSIL, el CLR invoca al JIT para
compilarlo a cdigo nativo.
.NET Framework
Compilacin JIT (Cont.)
Ahora met. 1 de Y llama NUEVAMENTE al met. 1 de
Z. Como el met. 1 de Z ya ha sido compilado a
cdigo nativo, el JIT NO interviene.
.NET Framework
Modelo de Ejecucin

VB VC# VC++

Native Install time


Code Gen
IL
Code

Common Language Runtime


JIT
Compiler
.NET Framework

Native
Code
Soporte para mltiples lenguajes
El .NET Framework soporta mltiples lenguajes de
desarrollo.
Microsoft provee compiladores de C#, VB.NET, J#,
JScript.NET, y C++ con extensiones administradas.
Otros fabricantes de lenguajes tambin han
desarrollado compiladores para .NET, por ej:
COBOL.NET, Smalltalk, Perl, Pyton, Delphi, etc.
Todos los lenguajes para .NET COMPILAN a MSIL
Beneficios del soporte para mltiples lenguajes:
Reutilizacin de cdigo
La biblioteca de clases es igual para todos
.NET Framework

Le permite optar por el lenguaje con el que se siente ms


cmodo
Todos los lenguajes tienen la misma performance
ILDASM
Herramienta para
navegar por el IL
de un PE
.NET Framework
Base Class Library (BCL)
La BCL es un conjunto de tipos
(clases, interfaces, etc.) bsicos que
vienen predefinidos en el .NET
Framework
Estos tipos estn organizados en
jerarquas lgicas de nombres,
denominado NAMESPACE
Estos tipos tambin son
.NET Framework

INDEPENDIENTES del lenguaje de


desarrollo
La BCL es extensible y totalmente
orientada a objetos
Qu son los Namespaces?

Grupos de clases relacionados entre s


Agrupamiento lgico, no fsico
Los Namespaces son jerrquicos
Disminuyen los conflictos de nombres
.NET Framework
Convencin de nombres

Sintaxis determinada por un punto


Connota jerarquas
Permite buscar y referencias clases de
manera mas sencilla
La primera parte del nombre completo es el
namespace, la ultima el nombre del tipo
En el desarrollo de libreras de clases,
generalmente se utiliza la convencin
.NET Framework

NombreEmpresa.NombreTecnologa
Base Class Library (BCL)

System.Web System.Windows.Forms
Services UI Design ComponentModel
Description HtmlControls
Discovery WebControls
Protocols System.Drawing
Caching Security Drawing2D Printing
Configuration SessionState Imaging Text

System.Data System.Xml
OleDb SqlClient XSLT Serialization
Common SQLTypes XPath

System
Collections IO Security Runtime
.NET Framework

Configuration Net ServiceProcess InteropServices


Diagnostics Reflection Text Remoting
Globalization Resources Threading Serialization
Administrando Propiedades de una
aplicacin
.NET Framework
Demo
Assemblies y MSIL
Resumen
Assemblies y Metadata
App Domains
MSIL
JIT
BCL
.NET Framework
Agenda
.NET Framework
Assemblies
App Domain
MSIL, JIT y Modelo de ejecucin
BCL
Build de soluciones
Errores en tiempo de compilacin
Errores en tiempo de ejecucin
Debugging
Edit & Continue
Programacin Orientada a Objetos
Clases Abstractas
Mtodos Virtuales
Excepciones
Accesibilidad de Miembros
Compilar, Debuggear y Testear

Actividades principales en el
desarrollo de aplicaciones
componentes y servicios robustos
Visual Studio 2005 esta diseado para
Controlar configuraciones de compilacin
Identificar errores y resolverlos
Testear las aplicaciones
Build de Solucin


Compilando (Construyendo) En Visual
Studio 2005
Compilacin en modo Debug
Se compila repetidamente, mientras se
desarrolla
El debugging es un proceso de dos pasos
Errores en tiempo de Compilacin
Sintaxis
Tipeo
Inconsistencias de tipos Desde la barra de accesos rpidos se
puede cambiar el modo de compilacin y
Errores en tiempo de Ejecucin comenzarla
Errores lgicos
Errores semnticos
Build de Solucin

Compilacin en modo Release


Una vez que el desarrollo est completo y fue
suficientemente debuggeado
Versin optimizada
Mas rpida

Errores en tiempo de Compilacin
Una vez finalizado el
desarrollo, se compilar la
solucin para probar su
funcionamiento
Muchas veces aparecen
errores en tiempo de
compilacin, que no dejan al
desarrollador ejecutar la
aplicacin
Visual Studio ofrece una lista
de errores que permite
acceder rpidamente al lugar
Build de Solucin

de cdigo donde estos estn.


Los errores en el cdigo
aparecen remarcados para
poder identificarlos mas
rpido
Errores en tiempo de Ejecucin
Realizar un seguimiento
de cdigo es muy til
Breakpoints Breakpoint

Marcas en cdigo donde


se interrumpe la ejecucin
Se puede analizar el valor Lnea de cdigo ejecutada
de variables y editar
cdigo Men Debug

Stepping
Build de Solucin

Recorrer el cdigo lnea


por lnea
Se puede ingresar a los
mtodos que son
llamados, volver atrs, etc.
Analizando Valores en tiempo de
ejecucin

Visualizer
Build de Solucin
Edit & Continue

Permite realizar cambios en el cdigo


fuente mientras el programa esta en
break mode.
Soporta la mayora de cambios de
cdigo en tiempo de ejecucin.
Build de Solucin
Laboratorio
Debugging
Resumen
Compilacin
Corregir errores en tiempo de
compilacin
Corregir errores en tiempo de
ejecucin
Break Points
Edit & Continue
Build de Solucin


Agenda
.NET Framework
Assemblies
App Domain
MSIL, JIT y Modelo de ejecucin
BCL
Build de soluciones
Errores en tiempo de compilacin
Errores en tiempo de ejecucin
Debugging
Edit & Continue
Programacin Orientada a Objetos
Clases Abstractas
Mtodos Virtuales
Excepciones
Accesibilidad de Miembros
Interfases

Contienen solo mtodos sin implementacin


Describen un contrato
No heredan atributos
No se pueden crear instancias de una
interfase
Las clases derivadas deben de implementar
todas las operaciones heredadas
ITransportable

Acelera

Frena
POO
Mtodos de la Interfase

Una clase puede implementar cero,


una o ms interfases
Deben de implementarse todos los
mtodos heredados por la interfase
Las interfases a su vez pueden
heredar de mltiples interfases
POO
Mtodos Virtuales

Es un mtodo que la clase base permite que


sea sobrescrito en una clase derivada
Un mtodo no-virtual es la UNICA
implementacin posible para este mtodo
POO
Ocultamiento

Esconde un mtodo idntico


Introduce un nuevo mtodo a la
jerarqua de la clase
Oculta los mtodos virtuales y no-
virtual
Esconde mtodos con firmas
idnticas
Esconde campos con el mismo
identificador
POO
Clases Abstractas

Proveen una implementacin parcial


para que sea heredada por las clases
derivadas
No pueden ser instanciadas

Transporte
{ abstract }

Taxi Colectivo
<<Concrete>> <<Concrete>>
POO
Mtodos Abstractos

Solo en clases abstractas


No pueden contener implementacin
Deben ser implementados por las clases derivadas
Los mtodos abstractos son virtuales
Los mtodos abstractos pueden sobrescribir
mtodos de la clase base declarados como
virtuales
Los mtodos abstractos pueden sobrescribir
mtodos de la clase base declarados como
override
POO
Agenda
.NET Framework
Assemblies
App Domain
MSIL, JIT y Modelo de ejecucin
BCL
Build de soluciones
Errores en tiempo de compilacin
Errores en tiempo de ejecucin
Debugging
Edit & Continue
Programacin Orientada a Objetos
Clases Abstractas
Mtodos Virtuales
Excepciones
Accesibilidad de Miembros
Excepciones

Ejecucin de un programa en forma


irregular
Cdigo bien escrito debe controlarlas
.NET cuenta con gran soporte para el
manejo de excepciones
Excepciones
Excepciones en C# y VB.NET
Excepcin: objeto que se genera cuando en tiempo de ejecucin
ocurre un error y contiene info sobre el mismo

C#: usa las palabras VB.NET usa las palabras


Try/Catch/Finally
try/catch/finally
try
{
int resultado = x/y;
Try
}
Dim resultado As Integer
catch(DivideByZeroException e)
resultado = x/y
{
Catch e As DivideByZeroException
//Error division por cero
Error division por cero
}
Catch
catch
Otro error
{
Finally
//Otro error
Siempre pasa por aca
}
End Try
Excepciones

finally
{
//Siempre pasa por aca
}
Asistente para el manejo de
Excepciones
Permite Descubrir mas sobre una
excepcin.
Permite corregir errores en Run-Time
Excepciones
Agenda
.NET Framework
Assemblies
App Domain
MSIL, JIT y Modelo de ejecucin
BCL
Build de soluciones
Errores en tiempo de compilacin
Errores en tiempo de ejecucin
Debugging
Edit & Continue
Programacin Orientada a Objetos
Clases Abstractas
Mtodos Virtuales
Excepciones
Accesibilidad de Miembros
Alcance de miembros
Miembro: se refiere a los campos, propiedades, mtodos,
eventos, clases anidadas, etc.
C#: todo miembro es declarado como PRIVATE por default
VB.NET: todo miembro es declarado como PUBLIC por default
Modificadores de acceso disponibles:

C# VB.NET
public Public
private Private
internal Friend
Accesibilidad

protected Protected
protected internal Protected Friend
Modificadores de Accesibilidad
Es posible especificar distintos tipos de acceso para gets y
sets
Gets pblicos y sets protegidos
Solo se puede modificar uno de los dos
Se puede especificar solo accesibilidad ms restrictiva.

C#
VB.NET
Accesibilidad
Exmen

Para prxima clase tener rendido el


exmen:
Net Esencials

www.dce2005.com

Вам также может понравиться