Introduccin a 'NET - PowerPoint PPT Presentation

1 / 84
About This Presentation
Title:

Introduccin a 'NET

Description:

Ejecutar software en cualquier lenguaje sobre cualquier dispositivo (tel fonos, ... Unos servidores: .NET Enterprise Servers. Motivaciones (Programaci n) ... – PowerPoint PPT presentation

Number of Views:83
Avg rating:3.0/5.0
Slides: 85
Provided by: Marb
Category:

less

Transcript and Presenter's Notes

Title: Introduccin a 'NET


1
Introducción a .NET
  • Miguel Ángel Ramos Barroso

(2 horas aproximadamente)
2
Qué no es .NET?
  • El asesino de Java
  • El asesino de Linux
  • El asesino de Windows
  • MS apropiándose de Internet
  • Un complot para dominar el mundo

3
Qué es .NET?
  • Una visión
  • Ejecutar software en cualquier lenguaje sobre
    cualquier dispositivo (teléfonos, PDAs, Tablet
    PCs)
  • Usar Internet para hacer los negocios más
    eficientes y proporcionar servicios a los
    consumidores
  • Nuevo modelo para compartir componentes
  • Concepto y modelo de programación Servicio Web
    XML
  • Nuevas formas de interactuar con PCs (uso de la
    voz, reconocimiento de escritura)

4
Qué es .NET?
  • Una plataforma software
  • Nuevo nivel .NET Framework
  • Nueva herramienta Visual Studio.NET
  • Unos servidores .NET Enterprise Servers

5
Motivaciones (Programación)
  • Motivado por el grado de complejidad que estaba
    tomando la programación Windows y el propio S.O.
  • Interfaces de los APIs para los diferentes
    lenguajes
  • Multitud de servicios duplicados
  • Pocas posibilidades de reutilización del código

6
Motivaciones (Despliegue)
Eliminar el infierno de las DLL
Win32 Conflictos entre las aplicaciones con una
librería en común en diferentes versiones
7
En una frase
  • .NET es el conjunto de nuevas tecnologías en las
    que Microsoft ha estado trabajando durante los
    últimos años con el objetivo de obtener una
    plataforma sencilla y potente para distribuir el
    software en forma de servicios que puedan ser
    suministrados remotamente y que puedan
    comunicarse y combinarse unos con otros de manera
    totalmente independiente de la plataforma,
    lenguaje de programación y modelo de componentes
    con los que hayan sido desarrollados.

8
Plataforma.NET
9
Qué necesitamos
  • Si queremos desarrollar aplicaciones para .NET
  • Microsoft .NET Framework SDK
  • Si sólo queremos ejecutar aplicaciones .NET
  • Microsoft .NET Framework Redistributable
  • Donde obtenerlos
  • msdn.microsoft.com/net/
  • Versiones
  • .NET Framework
  • v1.0, 1.1
  • v2.0
  • .NET Compact Framework
  • v1.0 y v2.0

10
NET Framework
11
NET Framework
12
Common Language Runtime
13
Common Language Runtime (CLR)
  • Es el motor de ejecución de las aplicaciones .NET
    Framework.
  • Administración del código (carga y ejecución) -gt
    Código gestionado.
  • Aislamiento de la memoria de la aplicación.
    -gtAppDomains.
  • Comprobación de la seguridad de los tipos.

14
Componentes del CLR
.NET Framework Class Library Support
Thread Support
COM Marshaler
Security Engine
Debug Engine
MSIL to Native Compilers
Code Manager
Garbage Collector
Class Loader
15
Qué no es el CLR
  • Las aplicaciones .NET no son interpretadas por
    una maquina virtual El CLR compila el código
    MSIL a código máquina nativo.
  • El CLR no está limitado a la plataforma
    Microsoft Es técnicamente posible portar el
    CLR a otras plataformas hardware, así como a
    otros SO.
  • Proyecto Mono http//www.go-mono.com/

16
Shared Source CLI (Rotor)
  • Ejemplo de implementación completa de los
    estándares ECMA/ISO
  • 334 Lenguaje C
  • 335 Common Language Infraestructure (CLI)
  • http//msdn.microsoft.com/net/sscli
  • Descargar configurar entorno buildall irse a
    tomar un café
  • Distribución de código fuente, no comercial
  • Modificable, Fácil de redistribuir y compartir
    cambios
  • Implementación independiente plataforma
  • Compilar/ejecutar en FreeBSD, Windows XP
  • y MAC OS X

17
Estadísticas
  • Sobre 16MB de descarga (comprimido .tgz)
  • 3,6 millones de líneas de código
  • 27 MB de código C y C
  • 8 MB de código C
  • Un puñado de código en ensamblador ?
  • 6000 ficheros fuente, 1200 clases
  • Después de compilar
  • Sobre 20 DLLs
  • Sobre 20 EXEs
  • 4 grandes áreas en el código
  • Compilador y herramientas
  • Frameworks
  • Runtime
  • Capa de portabilidad, tests, e
    infraestructura para compilar

18
Qué implementa SSCLI
VS.NET
System.Web
System.WinForms
ECMA-334
UI
SessionState
C
Design
ComponentModel
HtmlControls
Caching
JScript
Security
WebControls
System.Drawing
Configuration
VB
System.Web.Services
VC/MC
Drawing2D
Printing
Protocols
Imaging
Text
Debugger
Description
Discovery
Designers
System.Data (ADO.NET)
System.Xml
ADO
SQL
SDK Tools
Design
Adapters
CorDBG
System
ECMA-335
ILAsm
Collections
IO
Security
Runtime
InteropServices
Configuration
Net
ServiceProcess
ILDbDump
Remoting
Diagnostics
Reflection
Text
SN
Serialization
Globalization
Resources
Threading
ILDAsm
Common Language Runtime
MetaInfo
JIT
GC
App Domain Loader
PEVerify
MSIL
Common Type System
Class Loader
Platform Abstraction Layer
Networking
Boot Loader
Sync
Threads
Timers
Filesystem
19
Proyecto Mono
  • Implementación open source del .NET Framework
  • Compilador de C, VB.NET, CLR, librería de
    clases, etc.
  • Pretende llevar .NET a
  • Linux/x86, Linux/PPC, S390, StrongARM, SPARC,
    HPPA, SPARC v9
  • Implementa ADO.NET, ASP.NET, etc.
  • Información del proyecto
  • www.go-mono.com
  • Allí podeis descargar todo el
  • código fuente

20
El despliegue
21
  • Código intermedio en un lenguaje tipo
    ensamblador orientado a objetos IL

modo independiente de la plataforma de
representar código gestionado
22
Módulo
  • Un archivo DLL o EXE Windows PE (Portable
    Executable)
  • Contiene código en lenguaje intermedio (IL),
    metadatos y opcionalmente el manifiesto del
    assembly

23
Módules o Modules
  • Los módulos son ficheros que pueden ser de dos
    tipos
  • ficheros o módulos de recursos(ficheros.gif,
    .html, etc.).
  • ficheros o módulos de código compilado(código
    MSIL).
  • En la plataforma .NET se distinguen tres tipos de
    módulos de código compilado
  • Ejecutables (ficheros.exe) .
  • Librerías de enlace dinámico (ficheros.dll).
  • Módulos que conforman un ensamblado
    (ficheros.netmodule)

24
Módulo
25
Módulo
  • Metadatos datos sobre los datos
  • Los metadatos proporcionan información adicional
    a los tipos declarados en el IL y son usados por
    el CLR
  • El CLR usa varios compiladores para traducir IL a
    código nativo en tiempo de ejecución o JIT
  • Un módulo de código compilado se compone de
  • Cabecera de CLR que le informa de si es un módulo
    gestionado, la versión del CLR que necesita, su
    firma digital...
  • Los metadatos que son información sobre los tipos
    definidos en su código.
  • Código IL.

26
Assembly
  • Un concepto que introduce .NET
  • Unidad primaria de implantación.
  • Autodescriptivo e independiente de la plataforma.
  • Compuesto de un manifiesto y uno o más módulos.
  • Todo el programa, con sus archivos de recursos
    (imágenes, páginas HTML, etc) es agrupado en un
    solo bloque llamado ensamblado.
  • Tienen forma de .exe o de .dll y contienen todos
    los datos necesarios para la aplicación. El .exe
    ya no es sólo el código.
  • Además, contiene datos que lo describen e indican
    qué elementos tiene en su interior ? Metadatos.

27
Assembly
Identidad (nombre, versión...) Nombres de los
ficheros del ensamblado Clave hash de todos los
ficheros Detalles sobre los tipos definidos en el
ensamblado (accesibilidad desde otros...) Nombres
y hashes de otros ensamblados Permisos de
seguridad Una lista de los tipos de datos
exportados desde otros ficheros
  • Manifiesto
  • Contiene la identidad del assembly
  • Nombre textual y número de versión
  • Si es público, también contiene la clave pública
    garantiza unicidad e identifica la fuente
  • Responsable de declarar la seguridad que requiere
  • Lista de de todos los tipos expuestos y recursos
    (GIFs, JPGs) en otros assemblies dependientes
  • El CLR lo usará para localizarlos

28
Assembly
  • Al contener todos los datos sobre sí mismos, no
    es necesario que registren nada ? Una copia del
    directorio es suficiente para ejecutar la
    aplicación. Sin instalaciones.
  • Cada vez que se se cree una librería se creará su
    ensamblado y tendrá sus propias políticas de
    seguridad
  • Visores de ensamblado
  • ILDASM (Herramienta de Microsoft)
  • Visor extendido http//www.codeproject.com/dotnet
    /asmex.asp

29
Ensamblado o Assembly
  • Dos tipos de ensamblado
  • Privados Solo es usado por una aplicación que se
    encuentra en la misma subcarpeta. Es el tipo que
    crea el compilador por defecto.
  • También llamadas weakly named assemblies
  • Públicos o compartidos Son ensamblados creados
    para ser usados por cualquier aplicación. Se
    almacenan en la caché global de ensamblado.
  • Deben ser strongly named (contiene la clave
    pública y firma digital del que publica).

30
La compilación
31
.net Framework
Código Fuente
Visual Basic
C
C
Unmanaged component
Compiler
Compiler
Compiler
Código Gestionado
Assembly IL code
Assembly IL code
Assembly IL code
Common language runtime
JIT compiler
Native code
Operating system services
32
Compilación y ejecución de código
Compilación
Código (IL)
Código fuente
Metadatos
Antes de la instalación o la primera vez que se
invoca a cada método
33
Jitter Normal
  • Es el que se suele usar por defecto, y sólo
    compila el código MSIL a código nativo a medida
    que va siendo necesario.
  • Así se ahorra tiempo y memoria al evitarse tener
    que compilar innecesariamente código que nunca se
    ejecute.

34
Jitter Normal
  • El cargador de clases del CLR sustituye
    inicialmente las llamadas a métodos de las nuevas
    clases que vaya cargando por llamadas a funciones
    auxiliares (stubs) que se encarguen de compilar
    el verdadero código del método.
  • Una vez compilado, la llamada al stub es
    sustituida por una llamada directa al código ya
    compilado, con lo que posteriores llamadas al
    mismo no necesitarán compilación.

35
Jitter Económico
  • Funciona de forma similar al jitter normal solo
    que no realiza ninguna optimización de código al
    compilar sino que traduce cada instrucción MSIL
    por su equivalente en el código máquina sobre la
    que se ejecute.
  • Se utiliza en dispositivos empotrados con poca
    memoria y potencia de CPU.
  • Aunque genere código más ineficiente es menor el
    tiempo y memoria que necesita para compilar.

36
Jitter Económico
  • Para ahorrar memoria este jitter puede descargar
    código ya compilado que lleve cierto tiempo sin
    ejecutarse y sustituirlo de nuevo por el stub
    apropiado.
  • Por estas razones, este es el jitter usado por
    defecto en Windows CE, sistema operativo que se
    suele incluir en los dispositivos empotrados
    antes mencionados.

37
Prejitter
  • Permite compilar completamente cualquier
    ejecutable o librería (cualquier ensamblado en
    general) que contenga código gestionado y
    convertirlo a código nativo.
  • De este modo posteriores ejecuciones del mismo se
    harán usando esta versión ya compilada y no se
    perderá tiempo en hacer la compilación dinámica.

Ngen.exe
38
Compilación dinámica
  • La compilación dinámica supone que la aplicación
    se ejecute más lentamente.
  • Es una solución más eficiente que la utilizada en
    Java donde se interpreta cada código.
  • Permite que el jitter tenga más información sobre
    la máquina que un compilador tradicional pudiendo
    optimizar el código generado para ella (usando
    instrucciones para PentiumIV, registros extra...)

39
Ejemplo de Multi assembly
40
Multi-file Assembly
  • Vamos a crear un assembly que consiste de dos
    clases
  • SimpleMath en VB.NET con métodos Add y Substract
  • ComplexMath en C con método Square
  • Físicamente la assembly consistirá de
  • Simple.netmodule con SimpleMath
  • Complex.netmodule con ComplexMath
  • Math.dll que contiene el manifiesto

41
Multi-file Assembly
  • Pasos para crear la assembly
  • Crear Complex.cs (4-multifileassembly\Weak)
  • Compilarlo csc /targetmodule complex.cs
  • Crear Simple.vb con vbc /targetmodule simple.vb
  • Crear una assembly con AL (Assembly Linker) como
  • al /targetlibrary /outMath.dll simple.netmodule
    complex.netmodule
  • Crear MathDemo.cs
  • Compilar MathDemo con csc /targetexe
    /referencemath.dll mathdemo.cs
  • Ejecutar mathdemo.exe

42
Código gestionado y no gestionado
43
Managed / Unmanaged
  • Cuando se compila un lenguaje en .NET pueden
    generarse 2 tipos de código
  • Código gestionado (Managed) ? generado en la
    mayoría de los casos. Código que el entorno de
    ejecución puede controlar.
  • Código no gestionado (Unmanaged) ? generado
    cuando se utiliza p/Invoke (llamadas a dlls de
    windows..) o se usan componentes COM. Código que
    el entorno no puede controlar.

44
Managed Code
  • Al compilarse un lenguaje en .NET no se genera
    código máquina, sino que se genera código
    intermedio (MSIL).
  • Es interpretado por el entorno de ejecución y
    traducido por éste a instrucciones máquina
  • Además de esta traducción se añaden otros
    servicios como la recolección de basura, gestión
    de hilos de ejecución o servicios de seguridad.
  • El entorno de ejecución (CLR) controla este
    código y le aporta servicios extra.

45
Unmanaged Code
  • No siempre es posible generar código gestionado.
  • En ocasiones (usando p/Invoke o COM) ha de
    generarse por fuerza código no gestionado.
  • Se traduce directamente a código máquina y no es
    ejecutado por el entorno de ejecución.
  • Al no pasar por el CLR no puede disfrutar de sus
    servicios recolector de basura, servicios de
    seguridad, etc.
  • Una aplicación puede combinar código gestionado y
    no gestionado.

46
Managed VS Unmanaged
  • Por tanto, mientras el código gestionado disfruta
    de todos los servicios, el código gestionado no
    lo hace
  • No es posible emplear los mecanismos de seguridad
    que ofrece .NET dentro del código no gestionado
  • El código no gestionado es totalmente externo y
    menos fiable de por sí

47
Common Type System (CTS)
48
Common Type System (CTS)
  • El Sistema Común de Tipos o CTS, es el mecanismo
    del CLR que permite definir el modo en que los
    tipos serán creados y manipulados por el entorno
    de ejecución de .NET Framework.
  • No se encarga directamente de su ejecución sino
    que el CTS le dice al CLR cómo quiere que sea
    ejecutado el código.

49
Algunas Funcionalidades del CTS
  • Integración de código escrito en diferentes
    lenguajes.
  • Optimización del código en ejecución.
  • Un modelo de tipos orientado a objeto, que
    soporta múltiples lenguajes.
  • Una serie de normas que aseguran la
    intercomunicación entre objetos.

50
Qué es un tipo?
  • No se trata sólo del conjunto de tipos de datos
    con que podemos declarar variables en nuestro
    código.
  • Se extiende a cualquier elemento que pueda ser
    ejecutado dentro del entorno.
  • Todas las implementaciones de clases, interfaces,
    estructuras, etc., ya sean nativas de la
    plataforma o creadas por el programador, se
    pueden considerar tipos válidos de .NET.
  • Todos los tipos que manipulamos dentro de .NET
    Framework son objetos.

51
Categorías de tipos
  • Tipos por valor. Un tipo creado por valor,
    almacena un dato que puede ser accedido de forma
    directa. Los tipos por valor se organizan a su
    vez en varios subgrupos, como son los tipos de
    datos nativos de la plataforma .NET, tipos de
    datos creados por el programador y tipos
    enumerados.

52
Categorías de tipos
  • Tipos por referencia. Un tipo creado por
    referencia, contiene la dirección de memoria en
    donde reside un dato. Para acceder a dicho dato,
    lo hacemos de forma indirecta utilizando esa
    dirección de memoria o referencia. Los tipos por
    referencia se organizan a su vez en varios
    subgrupos, como son las clases propias de la
    plataforma, las clases creadas por el
    programador, interfaces, delegates, etc.

53
Tipos por valor
54
Tipos por referencia
55
Valor vs. Referencia
  • El CTS clasifica los tipos en dos bloques
  • Por valor Se almacenan en la pila. Todos los
    datos de tipo por valor descienden de
    System.ValueTypes el cuál desciende de
    System.Object.
  • Por referencia Se almacenan en el Heap (montón
    de datos). Todos los datos de los tipos por
    referencia descienden directamente de
    System.Object.

56
Clasificación de tipos del CTS
57
Valor vs. Referencia
  • Diferencias
  • Liberación de memoria
  • Los tipos por referencia hay que eliminarlos
    explícitamente del montón (GC).
  • Asignación
  • La asignación de tipos por referencia copia
    direcciones de memoria.
  • Comparación de igualdad
  • La comparación de tipos por referencia compara
    direcciones de memoria.

58
.NET built-in types I
59
.NET built-in types II
60
.NET built-in types III
  • Como vemos CTS es un sistema de tipos
    independiente del lenguaje de programación
  • No todos los tipos son soportados en cada
    lenguaje, por ejemplo Date
  • En esos casos se puede usar el tipo .NET
    directamente
  • System.DateTime d System.DateTime.Now
  • CLS define un subconjunto de tipos de CTS que
    pueden ser usadas cuando se definen librerías
    multi-lenguaje
  • Tipos no compatibles con CLS no son soportados
    por algunos lenguajes
  • Importante añadir atributo CLSCompliant a código
    para que el compilador verifique los tipos usados

61
Tipos personalizados
  • EL Common Type System no sería muy flexible si no
    permitiese al programador crear sus propios tipos
    de datos.
  • Podremos definir tipos de datos personalizados
    tanto por valor como por referencia.

62
C class y struct I
  • Generalmente creamos un tipo personalizado a
    través de una clase
  • public class Persona
  • public Persona(string nombre, string
    apellido1, int edad)
  • Nombre nombre
  • Apellido1 apellido1
  • Edad edad
  • public readonly string Nombre
  • public readonly string Apellido1
  • public readonly int Edad
  • public bool Equals(Persona temp)
  • if (temp.Nombre this.Nombre
    temp.Apellido1 this.Apellido1 temp.Edad
    this.Edad)
  • return true
  • else
  • return false

63
C class y struct II
  • Podemos crear nuevos tipos por valor a través de
    struct
  • public struct Point
  • public Point(int x, int y)
  • this.x x
  • this.y y
  • private int x
  • private int y
  • ...
  • Point p new Point(10,20)

64
Concepto boxing/unboxing
  • Para asegurar que todo sea un objeto, .NET
    ofrece un tipo por referencia por cada tipo por
    valor
  • A esto se le denomina boxed type del tipo por
    valor
  • int i 123
  • object o i
  • CLR creará un nuevo objeto conteniendo una copia
    de i en el heap, una referencia al objeto se
    guardará en o.
  • Para hacer un unbox de un tipo por referencia se
    usa casting
  • int i (int)o
  • Se generará InvalidCastException si se trata de
    hacer un unbox de un tipo incompatible
  • v.Add(3) // se permite gracias al concepto de
    boxing
  • v.Add(new Int32(3))

65
System.Object
  • Es la clase base de la cual todos los tipos por
    referencia de .NET derivan
  • Provee los siguientes métodos
  • Equals verifica si dos instancias son iguales
    (implementación por defecto evalúa igualdad por
    referencia)
  • Finalize ejecutado automáticamente cuando un
    objeto es destruido. En c este método no aparece
    y se usa NombreObjeto como en C
  • GetHashCode produce un código hash del objeto,
    usado para guardar un objeto en una HashTable
  • GetType devuelve el tipo de un objeto, posible a
    través de capacidades de Metadata en .NET
  • ReferenceEquals verifica si dos instancias son
    idénticas
  • ToString devuelve una representación en forma de
    string del objeto

66
Librería de clases
67
Clases de la plataforma .NET
  • La librería de clases (FCL) es una librería
    formada por cientos de tipos que permiten acceder
    a los servicios ofrecidos por el CLR y a sus
    funcionalidades más frecuentemente usadas.
  • Además el programador puede crear nuevas clases
    que extiendan su funcionalidad y se integren
    perfectamente con el resto de las clases de la
    FCL.

68
Clases de la plataforma .NET
  • Esta librería de clases está en MSIL luego
    cualquier lenguaje cuyo compilador genere MSIL
    podrá usarla.
  • Con esta librería podemos crear todo tipo de
    aplicaciones aplicaciones de consola, de
    ventanas, servicios Web, ASP.NET...

69
Clases de la plataforma .NET
  • Dada la amplitud de la FCL, ha sido necesario
    organizar las clases en ella incluida en espacios
    de nombres que agrupen clases con funcionalidades
    similares.
  • El espacio de nombres System es el espacio raíz
    del que cuelgan todos los demás.

70
Clases de la plataforma .NET
  • Espacios de nombres más usados
  • System Contiene tipos de datos muy usados, datos
    básicos, tablas, excepciones... Es el raíz.
  • System.Object Soporta toda la jerarquía de las
    clases de .NET.
  • System.Collections Colecciones de datos de uso
    común como pilas, colas, listas...
  • System.Data Manipulación de base de datos. Forma
    la denominada arquitectura ADO.NET.

71
Clases de la plataforma .NET
  • System.IO Manipulación de ficheros.
  • System.Reflection Acceso a los metadatos que
    acompañan a los módulos de código.
  • System.Math Funciones logarítmicas,
    trigonométricas...
  • System.XML Acceso a datos en formato XML.
  • Sytem.Web Aplicaciones Web.

72
Common Language Specification
73
CLS (Common Language Specification)
  • Conjunto de características comunes, que deben
    cumplir todos los lenguajes de la plataforma,
    para poder integrarse entre sí.
  • Independiente del lenguaje.
  • Integración entre lenguajes.
  • Abierto a nuevos lenguajes.

74
Lenguajes .NETMúltiples lenguajes soportados
  • .NET es neutral con respecto al lenguaje
  • Microsoft suministra
  • Visual C .NET, Visual Basic .NET, Visual C
    .NET,
  • JScript, Visual J .NET
  • Terceros suministran
  • COBOL, RPG, APL, Perl, Pascal, Smalltalk, Eiffel,
    Fortran, Haskell, Mercury, Oberon, Oz, Python,
    Scheme, Standard ML, LEA, hasta 26 lenguajes

75
Lenguajes .NETCLS
CLR
FujitsuCOBOLExtensions
C
MicrosoftManaged CExtensions
COBOL
CLS
  • Los lenguajes no tienen que exponer toda la
    funcionalidad definida por el CLR

76
Ejemplo - C Gestionado
  • using ltmscorlib.dllgt
  • using namespace System
  • __gc public class HelloWorldCPP
  • public
  • void SayHelloCPP()
  • ConsoleWriteLine("Hello World from C!")

77
Ejemplo Visual Basic
Imports System Imports HelloWorldCPP Public
Class HelloWorldVB Inherits HelloWorldCPP Sub
SayHelloVB() Console.WriteLine ("Hello
World from Visual Basic!") End Sub End Class
78
Ejemplo COBOL
000010 CLASS-ID. HelloWorldCOB INHERITS
HelloWorldVB. 000020 ENVIRONMENT DIVISION. 000030
CONFIGURATION SECTION. 000040 REPOSITORY. 000050
CLASS HelloWorldVB AS "HelloWorldVB" 000060
OBJECT. 000070 PROCEDURE DIVISION. 000080
METHOD-ID. SayHelloCOB. 000090 PROCEDURE
DIVISION. 000100 DISPLAY "Hello World from
COBOL!". 000110 END METHOD SayHelloCOB. 000120
END OBJECT. 000130 END CLASS HelloWorldCOB.
79
Ejemplo C
using System class HelloWorldCS HelloWorldCOB
public void SayHelloCS() String
message "Hello World from C!"
Console.WriteLine(message)
80
Ejemplos C
public static int Main() HelloWorldCS h
new HelloWorldCS() h.SayHelloCPP()
h.SayHelloVB() h.SayHelloCOB()
h.SayHelloCS() return 0
81
Ejemplos
82
Demo
83
Hello World
  • using System
  • public class HelloWorld
  • public static void Main()
  • System.Console.WriteLine("Hello!")

84
Compilando y ejecutando C
  • Create Notepad Hello.cs
  • The C source code
  • Compile CSC Hello.cs
  • Produces Hello.exe
  • This is a portable executable
  • Run Hello.exe
  • Where is the CLR?
  • MSCOREE.DLL
  • System.DLL

85
Qué hay en el IL?
  • class public auto ansi beforefieldinit HelloWorld
    extends mscorlibSystem.Object
  • .method public hidebysig static void Main()
    cil managed
  • .entrypoint
  • .maxstack 1
  • IL_0000 ldstr "Hello!
  • IL_0005 call void mscorlib
    System.ConsoleWriteLine(string)
  • IL_000a ret
  • .method public hidebysig specialname
    rtspecialname instance void .ctor() cil managed
  • .maxstack 1
  • IL_0000 ldarg.0
  • IL_0001 call instance void
    mscorlibSystem.Object.ctor()
  • IL_0006 ret

86
Desensamblando IL
  • Disassemble
  • ILDASM Hello.EXE /outHello.IL
  • Notepad Hello.IL
  • Compile IL
  • DEL Hello.EXE
  • ILDASM Hello.IL
  • Run Hello.EXE
  • Look at the Manifest
  • Run ILDASM (with no parameters)
  • Open Hello.EXE

87
Enlaces de interés
  • GotDotNet The Microsoft .NET Framework
    Community
  • http//www.gotdotnet.com/
  • .NET home page
  • http//www.microsoft.com/net/
  • MSDN .NET Framework site
  • http//msdn.microsoft.com/netframework/
  • Website con ejemplos y ayuda en programación C
  • http//www.c-sharpcorner.com/
  • http//www.csharphelp.com/
  • http//www.csharp-station.com/
  • Implementación Open Source .NET (Proyecto mono)
  • http//www.go-mono.com/
  • Fundamental Class Library en la sección
    Reference de .NET Framework SDK Documentation

88
Dudas
Write a Comment
User Comments (0)
About PowerShow.com