NET Introduccion (PDFDrive)
NET Introduccion (PDFDrive)
Comunicaciones y Sistemas
Departamento de Informática
Universidad Carlos III de Madrid
Julio de 2012
2
Contenidos
3
¿Qué es .NET?
¨ Una nueva plataforma software para escritorio y para Web
Aplicaciones no
gestionadas
Aplicaciones
gestionadas
Aplicaciones no
gestionadas Class library
Common
Language
Runtime
8
Principales objetivos
¨ Unificar la programación en distintos entornos:
¤ Escritorio, programación Web y entornos móviles
Antes
Escritorio Web
• orientado a objetos • ASP (no OO)
• compilado (C, C++, …) • interpretado (PHP,…)
• biblioteca de clases • biblioteca específicas
Con .NET
Escritorio y Web
• orientado a objetos (ASP.NET)
• compilado (C#, C++,VB.NET, Fortran,…)
• biblioteca de clases uniforme
9
Principales objetivos
¨ Apoyo para multitud de lenguajes de programación:
Lenguajes de .NET ofrecidos por Microsoft:
Lenguaje Link
C# http://msdn.microsoft.com/vstudio/nextgen/technology/csharpintro.asp
JScript http://msdn.microsoft.com/workshop/languages/clinic/scripting07142000.asp
VB.NET http://msdn.microsoft.com/vstudio/nextgen/technology/language.asp
10
Principales objetivos
¨ Apoyo para multitud de lenguajes de programación:
Lenguajes de .NET ofrecidos por otros proveedores:
Lenguaje Link
APL http://www.dyadic.com
COBOL http://www.adtools.com/info/whitepaper/net.html
Eiffel# http://www.eiffel.com/doc/manuals/technology/dotnet/eiffelsharp/white_paper.html
Haskell http://haskell.cs.yale.edu/ghc
Mercury http://www.cs.mu.oz.au/research/mercury/dotnet.html
Mondrian http://www.mondrian-script.org
Oberon http://www.oberon.ethz.ch/lightning
Perl http://www.activestate.com/ASPN/NET
Python http://www.activestate.com/ASPN/NET
RPG http://www.asna.com/pr2%5F20%5F01.asp
Scheme http://rover.cs.nwu.edu/~scheme
Smalltalk http://www.qks.com
Standard ML http://www.research.microsoft.com/Projects/SML.NET
11
Principales objetivos
¨ Interoperabilidad entre lenguajes de programación:
¤ Posible escribir aplicaciones en diferentes lenguajes
Antes
} Millones de líneas de código en C++, Fortran,Visual Basic, …
} Interoperabilidad muy limitada
12
Principales objetivos
¨ Interoperabilidad entre lenguajes de programación:
¤ Posible escribir aplicaciones en diferentes lenguajes
Antes
} Millones de líneas de código en C++, Fortran,Visual Basic, …
} Interoperabilidad muy limitada
Con .NET
} Compatibilidad binaria entre más de 20 lenguajes (C#, ML, …)
Clase
en
VB.NET
Subclase
en
C#
Usado
en
Eiffel
Public Class A class B : A { class Client feature
obj: B;
Public x As Integer public string s; ...
Public Sub Foo() ... public void Bar() {...} create obj;
End Class } obj.Bar;
...
end
13
Principales objetivos
¨ Apoyo para desarrollar aplicaciones Web:
¤ Aplicaciones B2B sin navegador Web
Oficina de viaje
Línea aérea
Banco
Hoteles Acme
14
Principales objetivos
¨ Apoyo para desarrollar aplicaciones Web:
¤ Páginas Web dinámicas más simples
} ASP.NET
} Separación clara de HTML y código
} Orientado a objetos
} Basado en Eventos
} Gestión de estado
15
Principales objetivos
¨ Facilidades para el despliegue:
¤ Seguridad
n Firmacon clave pública
n Derecho de acceso basado en códigos
Pre-‐beta (alfa)
11-‐07-‐2000
17 http://en.wikipedia.org/wiki/.NET_Framework
Entornos de desarrollo
¨ V 1.0
¤ Además de las ideas originales muchas sugerencias aportadas por los
desarrolladores y usuarios han sido añadidas
11-‐07-‐2000 13-‐02-‐2002
18
Entornos de desarrollo
¨ V 1.1
¤ Se ofrece como paquete redistribuible (~jre) o como kit de desarrollo de
aplicaciones (~jdk)
¤ Fuerte actualización, ofrecida de serie en WS2003
n IPv6, soporte nativo para ODBC, oracle, mobile ASP.NET, etc.
19
Entornos de desarrollo
¨ V 2.0
¤ Numerosos cambios en el API
¤ Soporte para 64 bits (x64 + IA64)
¤ Soporte para programación genérica en el CLR
¤ Etc.
20
Entornos de desarrollo
¨ V 3.0
¤ WPF (Windows Presentation Foundation)
¤ WCF (Windows Communication Foundation)
¤ WF (Windows Workflow Foundation)
¤ InfoCard (Windows CarSpace)
Versión 3.0
06-‐11-‐2006
21
Entornos de desarrollo
¨ V 3.5
¤ LINQ (Language Integrated Query)
¤ ASP.NET Ajax
¤ Etc.
06-‐11-‐2006 19-‐11-‐2007
22
Entornos de desarrollo
¨ V 4.0 (beta 2)
¤ Extensiones para programación paralela
n Memoria transaccional por software
¤ Diversas mejoras en los lenguajes:
n lambda, parámetros opcionales, …
¤ Etc.
23
Entornos de desarrollo:
¨ Definido como:
“un sistema de desarrollo .NET multiplataforma de código abierto”
¨ Principales características:
¤ Multi-plataforma:
n Ejecuta en Linux, OS X, BSD y Microsoft Windows,
incluyendo x86, x86-64, ARM, s390, PowerPC y muchos más
¤ Multi-lenguaje:
n Desarrollo en C# 3.0 (incluyendo LINQ),VB 8, Java, Python, Ruby, Eiffel, F#, Oxygene y
más
24 httphttp://www.mono-project.com/Main_Page
Entornos de desarrollo
¨ V 1.0
¤ Herramientas de desarrollo (compilador C#, CLI, etc.)
¤ Bibliotecas que implementan el perfil .NET 1.1
¤ Bibliotecas de terceros (Gtk#, Mono, etc.)
¤ Etc.
Versión 1.0
30-‐06-‐2004
25 http://arstechnica.com/old/content/2004/06/3949.ars
Entornos de desarrollo
¨ V 2.10.6
¤ Optimizaciones: uso de instrucciones SIMD, hilos sin espera activa, …
¤ C# 3.0, LINQ, ADO.NET 2.0, ASP.NET 2.0, Windows.Forms 2.0, …
¤ Corrección de errores
30-‐06-‐2004 … 14-‐10-‐2011
26 httphttp://www.mono-project.com/Main_Page
Entornos preinstalados
27
Entornos a instalar
28
Contenidos
29
Esqueleto de .NET
30
Biblioteca de Clases
31
Biblioteca de Clases Base
¨ System
¤ Se incluye los servicios básicos como String, DateTime, Boolean, así como excepciones, arrays, etc.
¨ System.Collections
¤ Define mucho de los contenedores o colecciones, como listas, colas, pilas, etc.
¨ System.Diagnostics
¤ Posibilita generar trazas, usar contadores, etc.
¨ System.Globalization
¤ Ofrece apoyo para internalización.
¨ System.IO
¤ Permite lectura y escritura de diferentes flujos, como ficheros.
¨ System.Net
¤ Ofrecen una interfaz para distintos protocolos de red.
¨ System.Reflection
¤ Ofrece la posibilidad de gestionar las capacidades de reflexión.
¨ System.Runtime
¤ Permite la configuración del comportamiento del CLR.
¨ System.Security
¤ Ofrece mecanismos de seguridad.
¨ System.Text
¤ Apoyo para el uso de expresiones regulares, y formas eficientes de uso de Strings.
¨ System.Threading
¤ Facilita la programación multihilo.
32
Uso del CLR
33
Uso del CLR
34
Estructura del CLR
Cargador de clases
Verificador
Compilador
JIT Econo-JIT
OptJIT
35
Estructura del CLR
36
Diagrama interno de un
.NET PE
¨ .NET Portable Executable file:
¤ Fichero de formato PE
¤ Derivado formato Microsoft Common Object File Format (COFF)
¨ Cabecera: nombre del assembly, versión, cultura y clave pública.
Cabecera PE/COFF
Cabecera CLR
37
Diagrama interno de un
Assembly .NET.
38
Contenidos
39
Entorno para el ejemplo
MS Windows XP/Vista/7 con .Net Framework 3.5
netenv.bat
@echo off
Echo
Echo Línea de mandatos para el .NET Framework 3.5
Echo.
@SET FrameworkDir=C:\WINDOWS\Microsoft.NET\Framework
@SET FrameworkVersion=v3.5
@set PATH=%FrameworkDir%\v3.5;%FrameworkDir%\%FrameworkVersion%;%PATH%
@set LIBPATH=%FrameworkDir%\v3.5;%FrameworkDir%\%FrameworkVersion%;%LIBPATH%
cmd
40
Ejemplo en C#
MS Windows XP/Vista/7 con .Net Framework 3.5
} Código del ejemplo:
hola.cs
using System;
class MainClass
{
static void Main(string[] args)
{
Console.WriteLine ("Hola desde C#");
}
}
41
Ejemplo en C#
MS Windows XP/Vista/7 con .Net Framework 3.5
¨ Compilación del ejemplo:
42
Ejemplo en Visual Basic .NET
MS Windows XP/Vista/7 con .Net Framework 3.5
} Código del ejemplo:
hola.vb
Imports System
43
Ejemplo en Visual Basic .NET
MS Windows XP/Vista/7 con .Net Framework 3.5
¨ Compilación del ejemplo:
44
Ejemplo en C++
MS Windows XP/Vista/7 con SDK para .Net Framework 3.5
void main( )
{
Console::WriteLine("Hola desde C++");
}
45
Ejemplo en C++
MS Windows XP/Vista/7 con SDK para .Net Framework 3.5
46
Contenidos
47
Ejemplo en C#
MS Windows XP/Vista/7 con .Net Framework 3.5
} Código del ejemplo:
hola.cs
using System;
class MainClass
{
static void Main (string[] args)
{
Console.WriteLine ("Hola desde C#");
}
}
48
Ejemplo en C#
MS Windows XP/Vista/7 con .Net Framework 3.5
¨ Compilación como ejecutable:
49
Ejemplo en C#
MS Windows XP/Vista/7 con .Net Framework 3.5
¨ Inspección de assembly:
50
Ejemplo en C#
MS Windows XP/Vista/7 con .Net Framework 3.5
¨ Inspección de assembly:
51