Grupo de Arquitectura de Computadores,
Comunicaciones y Sistemas
Desarrollo de Aplicaciones Distribuidas
AUTORES:
Alejandro Calderón Mateos
Javier García Blas
David Expósito Singh
Laura Prada Camacho
Departamento de Informática
Universidad Carlos III de Madrid
Julio de 2012
DESARROLLO DE APLICACIONES DISTRIBUIDAS
CON .NET:
INTRODUCCIÓN A .NET
Contenidos
1. Introducción a .NET
2. Anatomía de .NET:
1. Bibliotecas de clases base
2. CLR
3. .NET PE + Assembly
3. Ejemplo de aplicación
¤ Hola desde…
2
Contenidos
1. Introducción a .NET
2. Anatomía de .NET:
1. Bibliotecas de clases base
2. CLR
3. .NET PE + Assembly
3. Ejemplo de aplicación
¤ Hola desde…
3
¿Qué es .NET?
¨ Una nueva plataforma software para escritorio y para Web
Aplicaciones no
gestionadas
Sistema Operativo (Windows, Linux, Unix, …)
4 An Overview of the .NET Technology - Hanspeter Mössenböck
¿Qué es .NET?
¨ Una nueva plataforma software para escritorio y para Web
Aplicaciones
gestionadas
Aplicaciones no
gestionadas Class library
Common
Language
Runtime
Sistema Operativo (Windows, Linux, Unix, …)
} Common Language Runtime:
interoperabilidad, seguridad, recolección de basura, versionado, etc.
} Class library:
GUI, colecciones, hilos, red, reflexión, XML, etc.
5 An Overview of the .NET Technology - Hanspeter Mössenböck
¿Qué es .NET?
¨ Una nueva plataforma software para escritorio y para Web
Aplicaciones Aplicaciones Web
gestionadas
Aplicaciones no Web Forms
gestionadas Web Services
Class library
[Link]
Common
Language
Runtime Servidor Web (IIS)
Sistema Operativo (Windows, Linux, Unix, …)
} [Link], Web Forms:
Interfaz gráfica Web (orientada a objetos, basada en eventos e independiente de navegador)
} Web Services:
Servicios distribuidos sobre RPC (SOAP y HTTP).
6 An Overview of the .NET Technology - Hanspeter Mössenböck
¿Qué es .NET?
¨ Una nueva plataforma software para escritorio y para Web
Aplicaciones Aplicaciones Web
gestionadas
Aplicaciones no Web Forms
gestionadas Web Services
Class library
[Link]
Common
Language
Runtime Servidor Web (IIS)
Sistema Operativo (Windows, Linux, Unix, …)
} .NET framework:
} Utilidades: Visual Studio .NET, ildasm, gacutil, etc.
} Servidores: SQL server, BizTalk server, Exchange server, etc.
} Servicios: My Services, Passport service, etc.
7 An Overview of the .NET Technology - Hanspeter Mössenböck
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
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 ([Link])
• compilado (C#, C++,[Link], 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# [Link]
JScript [Link]
Managed C++ [Link]
[Link] [Link]
10
Principales objetivos
¨ Apoyo para multitud de lenguajes de programación:
Lenguajes de .NET ofrecidos por otros proveedores:
Lenguaje Link
APL [Link]
COBOL [Link]
Component Pascal [Link]
Delta Forth [Link]
Eiffel# [Link]
Fortran [Link] [Link]
Haskell [Link]
Mercury [Link]
Mondrian [Link]
Oberon [Link]
Perl [Link]
Python [Link]
RPG [Link]
Scheme [Link]
Smalltalk [Link]
Standard ML [Link]
TMT Pascal [Link]
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
[Link]
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 } [Link];
...
end
13
Principales objetivos
¨ Apoyo para desarrollar aplicaciones Web:
¤ Aplicaciones B2B sin navegador Web
Oficina de viaje
Línea aérea
Cadena de hoteles Hoteles Droid
Banco
Hoteles Acme
¤ Basadas en estándares:
n HTTP
n SOAP
n XML
14
Principales objetivos
¨ Apoyo para desarrollar aplicaciones Web:
¤ Páginas Web dinámicas más simples
} [Link]
} Separación clara de HTML y código
} Orientado a objetos
} Basado en Eventos
} Gestión de estado
} Interfaz con elementos personalizables
} Eficiente
} Etc.
15
Principales objetivos
¨ Facilidades para el despliegue:
¤ Seguridad
n Firmacon clave pública
n Derecho de acceso basado en códigos
¤ Ejecución side-by-side
n Findel infierno de las DLL
n Versionado (pueden coexistir diferentes bibliotecas)
¤ Instalación con impacto nulo
n No entradas en el registro, desinstalación limpia, etc.
¤ Diferentes clientes
n Ordenadores, móviles, sistemas embebidos, etc.
16
Entornos de desarrollo
¨ V 0.x
¤ Presentación de la nueva plataforma
Pre-‐beta
(alfa)
11-‐07-‐2000
17 [Link]
Entornos de desarrollo
¨ V 1.0
¤ Además de las ideas originales muchas sugerencias aportadas por los
desarrolladores y usuarios han sido añadidas
Pre-‐beta
(alfa)
Versión
1.0
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 [Link], etc.
Pre-‐beta
(alfa)
Versión
1.0
Versión
1.1
11-‐07-‐2000
13-‐02-‐2002
24-‐04-‐2003
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.
Pre-‐beta
(alfa)
Versión
1.0
Versión
1.1
Versión
2.0
11-‐07-‐2000
13-‐02-‐2002
24-‐04-‐2003
07-‐11-‐2005
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)
¤ [Link] Ajax
¤ Etc.
Versión
3.0
Versión
3.5
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.
Versión
3.0
Versión
3.5
Versión
4.0
06-‐11-‐2006
19-‐11-‐2007
12-‐4-‐2010
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
¤ Compatible binario:
n Construido según la especificación del estándar ECMA de CLI y C#
¤ Compatible con el API de Microsoft .NET:
n Ejecuta aplicaciones [Link], [Link] y [Link] 2.0 sin recompilación
¤ Código abierto:
n El entorno de desarrollo, compilador y bibliotecas se distribuyen bajo licencias aprobadas
por OSI y están disponibles para licencias duales
24 http[Link]
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 [Link]
Entornos de desarrollo
¨ V 2.10.6
¤ Optimizaciones: uso de instrucciones SIMD, hilos sin espera activa, …
¤ C# 3.0, LINQ, [Link] 2.0, [Link] 2.0, [Link] 2.0, …
¤ Corrección de errores
Versión
1.0
…
Versión
2.10.6
30-‐06-‐2004
…
14-‐10-‐2011
26 http[Link]
Entornos preinstalados
¨ .NET Framework V 2.0
¤ Incluido de serie en Visual Studio 2005 y Microsoft SQL Server 2005
¤ El SDK (~JDK) y el paquete redistribuible (~JRE) pueden obtenerse
desde la Web de Microsoft
¨ .NET Framework V 3.0
¤ Incluido de serie en Windows Vista y Windows Server 2008
¤ C# y [Link], usando el CLR de .NET Framework 2.0
¨ .NET Framework V 3.5
¤ Incluido de serie en Windows 7
¤ C# y [Link]
27
Entornos a instalar
¨ .NET Framework V 3.5
¤ Descarga desde: [Link]
¤ Instala el Framework en entornos no disponible por defecto.
¨ Windows SDK para .NET Framework 3.5
¤ Descarga desde: [Link]
¤ Añade documentación, ejemplos y herramientas para el desarrollo
28
Contenidos
1. Introducción a .NET
2. Anatomía de .NET:
1. Bibliotecas de clases base
2. CLR
3. .NET PE + Assembly
3. Ejemplo de aplicación
¤ Hola desde…
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.
¨ [Link]
¤ Define mucho de los contenedores o colecciones, como listas, colas, pilas, etc.
¨ [Link]
¤ Posibilita generar trazas, usar contadores, etc.
¨ [Link]
¤ Ofrece apoyo para internalización.
¨ [Link]
¤ Permite lectura y escritura de diferentes flujos, como ficheros.
¨ [Link]
¤ Ofrecen una interfaz para distintos protocolos de red.
¨ [Link]
¤ Ofrece la posibilidad de gestionar las capacidades de reflexión.
¨ [Link]
¤ Permite la configuración del comportamiento del CLR.
¨ [Link]
¤ Ofrece mecanismos de seguridad.
¨ [Link]
¤ Apoyo para el uso de expresiones regulares, y formas eficientes de uso de Strings.
¨ [Link]
¤ Facilita la programación multihilo.
32
Uso del CLR
33
Uso del CLR
34
Estructura del CLR
Ficheros PE .NET (metadata e IL)
Herramienta virtual de ejecución CRL
Cargador de clases
Verificador
Compilador
JIT Econo-JIT
OptJIT
Soporte y gestión de la ejecución
Recolector de basura, seguridad, gestión de excepciones
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
Metadata Datos CLR Código IL
Native Image Section
.data, .rdata, .rscr, .text
37
Diagrama interno de un
Assembly .NET.
38
Contenidos
1. Introducción a .NET
2. Anatomía de .NET:
1. Bibliotecas de clases base
2. CLR
3. .NET PE + Assembly
3. Ejemplo de aplicación
¤ Hola desde…
39
Entorno para el ejemplo
MS Windows XP/Vista/7 con .Net Framework 3.5
[Link]
@echo off
Echo
Echo Línea de mandatos para el .NET Framework 3.5
Echo.
@SET FrameworkDir=C:\WINDOWS\[Link]\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:
[Link]
using System;
class MainClass
{
static void Main(string[] args)
{
[Link] ("Hola desde C#");
}
}
41
Ejemplo en C#
MS Windows XP/Vista/7 con .Net Framework 3.5
¨ Compilación del ejemplo:
C:\Temp> csc [Link]
Microsoft (R) Visual C# 2008 Compiler version 3.5.30729.4926
for Microsoft (R) .NET Framework version 3.5
Copyright (C) Microsoft Corporation. All rights reserved.
¨ Ejecución del ejemplo:
C:\Temp> hola
Hola desde C#
42
Ejemplo en Visual Basic .NET
MS Windows XP/Vista/7 con .Net Framework 3.5
} Código del ejemplo:
[Link]
Imports System
Public Module modmain
Sub Main( )
[Link] ("Hola desde [Link]")
End Sub
End Module
43
Ejemplo en Visual Basic .NET
MS Windows XP/Vista/7 con .Net Framework 3.5
¨ Compilación del ejemplo:
C:\Temp> vbc /t:exe /out:[Link] [Link]
Microsoft (R) Visual Basic Compiler version 9.0.30729.715
Copyright (c) Microsoft Corporation. All rights reserved.
¨ Ejecución del ejemplo:
C:\Temp> hola
Hola desde [Link]
44
Ejemplo en C++
MS Windows XP/Vista/7 con SDK para .Net Framework 3.5
} Código del ejemplo:
[Link]
#using <[Link]>
using namespace System;
void main( )
{
Console::WriteLine("Hola desde C++");
}
Tutorial C++: [Link]
45
Ejemplo en C++
MS Windows XP/Vista/7 con SDK para .Net Framework 3.5
¨ Compilación del ejemplo:
C:\Temp> [Link] /V:ON /E:ON./K "C:\Program Files\Microsoft SDKs\
Windows\v6.1\bin\[Link]" /Release
C:\Temp> color
C:\Temp> cl [Link] /clr /link /entry:main
¨ Ejecución del ejemplo:
C:\Temp> hola
Hola desde C++
46
Contenidos
1. Introducción a .NET
2. Anatomía de .NET:
1. Bibliotecas de clases base
2. CLR
3. .NET PE + Assembly
3. Ejemplo de aplicación
¤ Hola desde…
¤ Generación de DLL e inspección…
47
Ejemplo en C#
MS Windows XP/Vista/7 con .Net Framework 3.5
} Código del ejemplo:
[Link]
using System;
class MainClass
{
static void Main (string[] args)
{
[Link] ("Hola desde C#");
}
}
48
Ejemplo en C#
MS Windows XP/Vista/7 con .Net Framework 3.5
¨ Compilación como ejecutable:
C:\Temp> csc /out:[Link] [Link]
Microsoft (R) Visual C# 2008 Compiler version 3.5.30729.4926
for Microsoft (R) .NET Framework version 3.5
Copyright (C) Microsoft Corporation. All rights reserved.
¨ Compilación como DLL:
C:\Temp> csc /out:[Link] /t:library [Link]
Microsoft (R) Visual C# 2008 Compiler version 3.5.30729.4926
for Microsoft (R) .NET Framework version 3.5
Copyright (C) Microsoft Corporation. All rights reserved.
49
Ejemplo en C#
MS Windows XP/Vista/7 con .Net Framework 3.5
¨ Inspección de assembly:
C:\Temp> ildasm [Link]
50
Ejemplo en C#
MS Windows XP/Vista/7 con .Net Framework 3.5
¨ Inspección de assembly:
C:\Temp> ildasm [Link]
51