Está en la página 1de 60

Curso .

Net
Introduccin a Microsoft
.NET

Objetivo
Presentar una introduccin a la
plataforma de desarrollo Microsoft
.NET, describiendo sus principios
bsicos de funcionamiento, su
arquitectura de componentes y sus
principales bibliotecas reutilizables,
mostrando adems las novedades
introducidas en la ltima versin de
la misma.

Prerrequisitos
Poseer los conocimientos
proporcionados por la Estrella 0 del
programa
Haber aprobado el examen
correspondiente a la Estrella 0 del
programa
Conocimientos fundamentales de
bases de datos relacionales,
incluyendo

Modelo Relacional
Protocolos de Acceso (ODBC/OLEDB)

Temas a Tratar
Introduccin a Microsoft .NET
Componentes Fundamentales
Funcionamiento Interno del CLR
Bibliotecas Principales
Ventajas de .NET
Herramientas de Desarrollo .NET
Novedades en .NET 2.0

Temas a Tratar
Introduccin a Microsoft .NET

Qu no es .NET?
Qu es .NET?

Qu NO es .NET?
.NET no es un Sistema Operativo
.NET no es un Lenguaje de
Programacin
.NET no es un Entorno de Desarrollo
.NET no es un Servidor de Aplicaciones
.NET no es un producto empaquetado
que se pueda comprar como tal

Qu es .NET?
Plataforma de Desarrollo compuesta
de

Entorno de Ejecucin (Runtime)


Bibliotecas de Funcionalidad (Class
Library)
Lenguajes de Programacin
Compiladores
Herramientas de Desarrollo (IDE & Tools)
Guas de Arquitectura

La evolucin de la plataforma COM

Caractersticas de .NET
(1/2)
Plataforma de ejecucin intermedia
100% Orientada a Objetos
Multilenguaje
Plataforma Empresarial de Misin
Crtica

Caractersticas de .NET
(2/2)
Modelo de Programacin nico para
todo tipo de aplicaciones y dispositivos
de hardware
Se integra fcilmente con aplicaciones
existentes desarrolladas en plataformas
Microsoft
Se integra fcilmente con aplicaciones
desarrolladas en otras plataformas

Plataforma de Ejecucin
Intermedia
Aplicacin .NET

Microsoft
.NET

Lenguajes de Programacin
Libreras de Funcionalidad
Entorno de Ejecucin

Entorno
de
Desarroll
o

Sistema Operativo (Familia Windows)

Qu es el .NET Framework?
Paquete de software fundamental de
la plataforma .NET. Incluye:

Entorno de Ejecucin (Runtime)


Bibliotecas de Funcionalidad (Class Library)

Se distribuye en forma libre y


gratuita
Existen tres variantes principales:

.NET Framework Redistributable


Package

.NET Framework SDK

.NET Compact Framework

Dnde instalar el .NET


Framework?
Aplicacin de
Escritorio

Cliente

Servidor

Aplicacin Web
Aplicacin de
Consola
Aplicacin
Mvil

.NET Compact Framework

* Slo si la aplicacin es distribuda

Temas a Tratar
Introduccin a Microsoft .NET
Componentes Fundamentales

Arquitectura
Common Language Runtime (CLR)
Microsoft Intermediate Language
Assemblies
.NET Class Library
Common Language Specification (CLS)

VB

C++

C#

J#

Common Language Specification

.NET Framework
Redistributable

Windows Forms

ADO.NET y XML
Base Class Library
Common Language Runtime
Windows

COM+ Services

.NET Framework

ASP.NET

Class Library

.NET Framework SDK

Arquitectura del .NET


Framework

CLR - Arquitecturas de
Ejecucin de Aplicaciones

CLR Common Language


Runtime
El CLR es el motor de ejecucin
(runtime) de .NET
Caractersticas

Compilacin Just-In-Time (JIT)


Gestin automtica de memoria
(Garbage Collector)
Gestin de errores consistente
(Excepciones)
Ejecucin basada en componentes
(Assemblies)
Gestin de Seguridad

CLR Proceso de
Compilacin
Cdigo
Fuente

Cualquier
lenguaje .NET

Compilador

Assembly
(MSIL)

Biblioteca
o Ejecutable

CLR - 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?
Un Assembly es la unidad mnima de
ejecucin, distribucin, instalacin y
versionado de aplicaciones
.NET
Descripcin de Tipos
MiBiblioteca.DLL
Metadata
Recursos
Cdigo Compilado
MSIL

Clases
Clases Base
Interfaces Implementadas
Atributos de las Clases
Mtodos de las Clases

Manifiesto del Assembly


Nombre
Versin
Cultura
Otros Assemblies
Permisos de Seguridad
Tipos Externos

Assemblies Aplicaciones .NET

Uno o ms Assemblies
Al ejecutar una aplicacin, cmo
ubico los assemblies necesarios?

El Class Loader busca en el directorio


local (preferido)
Global Assembly Cache (GAC)

Diferentes aplicaciones pueden usar


diferentes versiones

Actualizaciones ms simples
Desinstalacin ms simple

.NET Framework Class


Library
Conjunto de Tipos bsicos (clases,

interfaces, etc.) que vienen includos


en el .NET Framework
Los tipos estn organizados en
jerarquas lgicas de nombres,
denominados NAMESPACES
Los tipos son INDEPENDIENTES del
lenguaje de desarrollo
Es extensible y totalmente orientada
a objetos

.NET Framework Class


El namespace raz es SYSTEM
Library
System.Web

System.Windows.Forms

Services
Description

UI
HtmlControls

Discovery

WebControls

Protocols

Design

ComponentModel

System.Drawing

Caching

Security

Drawing2D

Printing

Configuration

SessionState

Imaging

Text

System.Data

System.Xml

OleDb

Odbc

XSLT

Common

SqlClient

XPath

Serialization

System
Runtime
InteropServices

Collections

IO

Security

Configuration

Net

ServiceProcess

Diagnostics

Reflection

Text

Remoting

Globalization

Resources

Threading

Serialization

Common Language Specification


(CLS)

Especificacin que estandariza una


serie de caractersticas soportadas por
el CLR
Contrato entre diseadores de
lenguajes de programacin y autores
de bibliotecas
Permite la interoperabilidad entre
lenguajes
Microsoft provee implementaciones de
4 lenguajes, todos compatibles con
CLS

Microsoft Visual Basic .NET

Common Language Specification


(CLS)

El resto de la industria y el sector


acadmico han desarrollado ms de
20 lenguajes compatibles con la
especificacin CLS

Visual
C# J#
Basic.NET
+.NE
Delphi
Java PHP Perl Python JavaScri
T
pt
Pascal
Haskell LISP
Prolog
RPG
C+

Oberon Mondrian Smalltalk Eiffel


Cobol

Fortran

APL

ML

Scheme

Objective Caml

Mercury

CLS - Eleccin del


lenguaje
.NET posee un nico runtime (el CLR)

.NET posee un nico runtime (el CLR)


y un nico conjunto de bibliotecas
para todos los lenguajes
No hay diferencias notorias de
performance entre los lenguajes
provistos por Microsoft
El lenguaje a utilizar, en gral.,
depender de su experiencia previa
con otros lenguajes o de gustos
personales

Si conoce Java, Delphi, C++, etc. C#


Si conoce Visual Basic o VBScript
VB.NET

Temas a Tratar
Introduccin a Microsoft .NET
Componentes Fundamentales
Funcionamiento Interno del CLR

Especificacin CLI
Modelo de Ejecucin
Application Domains
Common Type System

Infraestructura de Lenguaje
Comn (CLI)

Especificacin patrocinada por


Microsoft, Intel, HP y
estandarizada por ECMA (2001)
e ISO (2003) que describe:

Entorno de Ejecucin de
Aplicaciones
Conjunto de Libreras Bsicas (BCL)
Tipos de Datos Comunes (CTS)

El .NET Framework y el .NET


Compact Framework son

Sub-Especificaciones de
CLI
Lenguajes de Alto Nivel
se ajustan a las reglas de la

CLS (Common Language Specification)


y utilizan las clases de la

BCL (Base Class Library)


cuyos tipos bsicos forman el

CTS (Common Type System)


y se ejecutan bajo el control de y usan los servicios del

CLR (Common Language Runtime)


que est acoplado al y utiliza los servicios del

Sistema Operativo

Modelo de Ejecucin del


CLR
Cdigo
Fuente

Cdigo
Manejado

VB.NET
Compilador
VB.NET
Assembly
Cdigo MSIL

C#

C++.NET

Compilador
C#

Compilador
C++ .NET

Assembly
Cdigo MSIL

Assembly
Cdigo MSIL

Common Language Runtime


Compilador JIT
Cdigo Nativo

Sistema Operativo (Windows)

Componente
No Manejado

Modelo de Ejecucin del


Instalacin
Desarrollo
CLR
Instalacin

Assembly

Assembly en
la mquina
destino

Policy
<?xml ver sion="1.0" encoding=" ut f- 8" ?>
<conf igur at i on>
<mscor li b>
<secur it y>
<poli cy>
<Poli cyLevel ver si on="1">
<CodeGr oup cl ass="Uni onCodeGr oup"
ver sion="1"
Per mi ssi onSet Name="Not hing"
Name="All_Code"
Descr ipt i on="Code gr oup
gr ant s no per missio
ns and f or ms t he r oot of t he code gr oup t r ee.">
<I Member shipCondit ion cl as
s="Al lMember shi pCondi t ion"
ver si on="1"/>
<CodeGr oup cl ass="Uni onCodeGr oup"
version="1"
Per missi onSetN ame="Ful lTr ust "

Ejecucin
Compilador
JIT

Class
Loader

Seguridad

Assembly
Loader
Garbage Collector

.exe Nativo
+
Tabla GC

Code
Manager

Manejador Excepciones
Soporte MultiThread

Debug Engine

COM Interop

Application Domains
Procesos virtuales dentro del CLR

Se ejecutan dentro de un proceso del


Sistema Operativo
Un proceso del sistema operativo puede
contener varios AppDomains
Ms eficiente que mltiples procesos del
sistema operativo
Ms eficiente en el intercambio de
contexto de ejecucin

Un Assembly y sus tipos son siempre


cargados dentro de un AppDomain
Provee una frontera para: Fallos,
Tipos, Seguridad

Application Domains - CLR


Host
CLR Host
CLR
AppDomain 1
Cdigo Manejado

AppDomain N
Cdigo Manejado

CTS (Common Type System)


Define un conjunto comn de tipos de
datos orientados a objetos
Todo lenguaje de programacin .NET debe
implementar los tipos definidos por el CTS

Todo tipo hereda


directa o
indirectamente
del tipo
System.Object
Define Tipos de
VALOR y de
REFERENCIA

La Memoria y los Tipos de


Datos
El CLR administra dos segmentos de

memoria: Stack (Pila) y Heap (Montn)


El Stack es liberado automticamente y el
Heap es administrado por el GC
(Garbage Collector)
Los tipos VALOR
se almacenan en
el Stack

Los tipos
REFERENCIA se
almacenan en el
Heap

Temas a Tratar
Introduccin a Microsoft .NET
Componentes Fundamentales
Funcionamiento Interno del CLR
Bibliotecas Principales

Base Class Library (BCL)


ADO.NET
Windows Forms
ASP.NET

Base Class Library


System
Collections

IO

Security

InteropServices

Configuration

Net

ServiceProcess

Remoting

Diagnostics

Reflection

Text

Serialization

Globalization

Resources

Threading

Acceso a Datos: ADO.NET


System.Data
Common

SqlClient

OracleClient

OleDb

Odbc

SqlTypes

System.Xml
XSLT

Serialization

XPath

Schema

Acceso a Bases de Datos


Relacionales Escenario
Conectado
Un entorno conectado es uno en el
cual los usuarios estn
constantemente conectados a la
fuente de datos
Ventajas:

Mayor seguridad
Mejor control de concurrencia
Los datos se mantienen actualizados

Desventajas:

Se requiere una conexin constante


(consume recursos del servidor)

Acceso a Bases de Datos


Relacionales Escenario
Desconectado
En un entorno desconectado, una

parte de los datos del repositorio


central se copia y modifica en forma
local, para luego sincronizarse con
ste.
Ventajas

Se puede trabajar en forma


independiente
Mayor escalabilidad y performance

Desventajas

Los datos no estn sinconizados

ADO.NET - Arquitectura

ADO.NET- Proveedores de
Acceso a Datos
SQL Server/Access
(System.Data.SqlClient)
OLE DB (System.Data.OleDb)
ODBC (System.Data.Odbc)
Oracle (System.Data.OracleClient)
Otros provistos por terceros (MySQL,
PostgreSQL, DB2, etc..)

ADO.NET- Clases ms
comunes
Base de Datos

Maneja la
la coneccin
coneccin aa una
una base
base de
de
Maneja
datos
datos
Ejecuta comandos
comandos contra
contra una
una base
base
Ejecuta
de datos
datos
de

XxxConnection
XxxConnection

Intercambia datos
datos entre
entre un
un dataset
dataset
Intercambia
una base
base de
de datos
datos
yy una

XxxCommand
XxxCommand

Copia local
local de
de datos
datos relacionales
relacionales
Copia
Provee acceso
acceso aa datos
datos
Provee
read-only, Forward-only
Forward-only
read-only,

XxxDataAdapter
XxxDataAdapter
DataSet
DataSet

XxxDataReader
XxxDataReader

ADO.NET- DataSet
DataSet

DataTable
DataColumn

DataTable

DataRow

Relaciones
Esquema XML

Restricciones

ADO.NET vs. ADO

ADO.NET Accediendo a datos


Conectado
En un escenario
conectado, los
recursos se mantienen
en el servidor hasta
que la conexin se
cierra
1) Abrir Conexin
2) Ejecutar Comando
3) Procesar Filas en
DataReader
4) Cerrar Reader

ADO.NET Accediendo a
datos Desconectado
En un escenario
desconectado, los recursos no
se mantienen en el servidor
mientras los datos se
procesan
1) Abrir Conexin
2) Llenar DataSet mediante
DataAdapter
3) Cerrar Conexin
4) Procesar DataSet
5) Abrir Conexin
6) Actualizar fuente de datos
mediante DataAdapter
7) Cerrar Conexin

ADO.NET - Soporte a XML


<XML>

DocumentNavigator

XmlTextWriter

XmlReader

XmlTextReader

XmlValidatingReader

XmlDocument

XmlNodeReader

Windows Forms
System.WinForms
Design

ComponentModel

System.Drawing
Drawing2D

Printing

Imaging

Text

Aplicaciones Web:
ASP.NET
System.Web
Services
Description

UI
HtmlControls

Discovery

WebControls

Protocols
Caching

Security

Configuration

SessionState

Temas a Tratar
Introduccin a Microsoft .NET
Componentes Fundamentales
Funcionamiento Interno del CLR
Bibliotecas Principales
Ventajas de .NET

Ventajas de .NET
Unifica los modelos de programacin
Simplifica an ms el desarrollo
Provee un Entorno de Ejecucin
robusto y seguro
Es independiente del lenguaje de
programacin
Interoperabilidad con cdigo
existente
Simplifica la instalacin y
administracin de las aplicaciones

Unificando los Modelos


API consistente mas all del lenguaje
o del modelo de programacin

.NET Framework
Desarrollo Rapido,
Componentes,
Event Driven

OOP,
Potencia,
Acceso a bajo
nivel

Visual Basic MFC/ATL (C++)

Windows API

Basado en
Servidor,
UI Embebido en el
cdigo

ASP

Desarrollo Simplificado
Alto nivel de abstraccin

No mas accesos COM a bajo nivel


Orientado a Objetos desde el Ncleo

Sistema de tipos unificado (CTS)

Todo es un objeto, no mas variants

Componentes de Software

Propiedades, mtodos, eventos, y


atributos incluidos en la construccin de
clases

API organizada en forma Jerrquica

Entorno de Ejecucin Robusto y


Seguro
Gestin automtica de la memoria

Todos los objetos son administrados por


el Garbage Collector

Manejo de Excepciones
Fuertemente tipado

Solo casteos seguros


Inicializacin de variables obligatoria

Instalacin con Cero Impacto

No requiere registracin en la Registry

Independencia del
lenguaje
Libertad en la eleccin del lenguaje

Libertad en la eleccin del lenguaje

Todas las facilidades de la plataforma


.NET estn disponibles a todos los
lenguajes de programacin .NET
Los componentes de una aplicacin
.NET pueden ser escritos en distintos
lenguajes de alto nivel compatibles con
la plataforma

Herramientas compartidas

Debuggers, profilers, analizadores de


cdigo, y otras trabajan para todos los
lenguajes

Instalacin y Administracin
ms simples
Unidades de Ensamblado
(Assemblies)

Mnima unidad de distribucin,


versionado y administracin de
seguridad de aplicaciones .NET
Auto-descriptas a travs de
unmanifiesto (manifest)

Instalaciones Cero-impacto

Aplicaciones y componentes pueden ser


compartidas o privadas

Versioning

Mltiples versiones del mismo


componente pueden co-existir, an en

Extensibilidad
El Framework no es una caja negra
Sus clases pueden ser extendidas a
travs del mecanismo de herencia

A diferencia de COM, usamos y


extendemos las clases en si mismas, no
un wrapper

Herencia entre distintos lenguajes

Interoperabilidad

Servicios Web XML


.NET Framework

C#
C++

COM INTEROP

COM

VB
Otros...

.NET

Temas a Tratar
Introduccin a Microsoft .NET
Componentes fundamentales
Funcionamiento interno
Bibliotecas Principales
Ventajas de .NET
Herramientas de Desarrollo .NET

Visual Studio 2013

Visual Studio 2013


Testers
Arquitectos
Desarrolladores
Consultores
Profesionales
VB6 Devs
Part-Timers
Hobbyists
Estudiantes
Entusiastas
Novatos