PDF de programación - Reflexionando sobre Microsoft .net

Imágen de pdf Reflexionando sobre Microsoft .net

Reflexionando sobre Microsoft .netgráfica de visualizaciones

Publicado el 28 de Marzo del 2019
568 visualizaciones desde el 28 de Marzo del 2019
284,9 KB
17 paginas
Creado hace 19a (16/03/2005)
Universidad de Oviedo

Departamento de Informática

Reflexionando sobre
Reflexionando sobre

Microsoft .net
Microsoft .net

Francisco Ortín Soler,
Universidad de Vigo
Ourense, Marzo de 2005

Lenguajes y Sistemas Informáticos

¿¿QuQuéé es .net?
es .net?

Introducción

• El desarrollo de aplicaciones software es una

tarea en sí compleja
La apertura de éstas a entornos distribuidos

(Internet) la hace todavía más compleja

• Microsoft .net es una plataforma que ofrece la

infraestructura para resolver los problemas
comunes del desarrollo de aplicaciones
(distribuidas)

Francisco Ortín Soler
Marzo 2005

1

.net Framework
Framework
.net

Introducción

• .net Framework proporciona soluciones

prefabricadas para el desarrollo de aplicaciones
distribuidas. Consta de:
1. Common Language Runtime (CLR)

Proporciona el entorno de ejecución de todas

las aplicaciones del sistema

Proporciona una capa intermedia entre el

sistema operativo y las aplicaciones

Su diseño se basa en el concepto de máquina

virtual o abstracta

2. Librerías de clases: Base Class Libraries (BCL),

WinForms, Win32, ADO.NET...

3. Plataforma de Aplicaciones Web: ASP.NET y

Francisco Ortín Soler
Marzo 2005

Introducción

Servicios Web

CLRCLR

• La utilización del CLR aporta las siguientes

ventajas:
1. Disponibilidad de las características de cualquier

lenguaje: La elección del lenguaje estará
condicionada por el dominio del problema, no
por otras características –librerías, eficiencia,
frameworks... ¿Puedo utilizar el API de Java desde
otros lenguajes?

2. Heterogeneidad: Internet es una arquitectura

heterogénea, las aplicaciones deberían poder
ejecutarse de forma independiente a la plataforma

3. Interoperabilidad de aplicaciones orientadas a

objetos, independientemente de los lenguajes
de programación seleccionados (sistema de tipos
común)

4. Gestión automática de memoria: la gestión de

memoria es compleja en aplicaciones de servidor

Francisco Ortín Soler
Marzo 2005

2

CLR (II)
CLR (II)

Introducción

5. El mantenimiento de aplicaciones da lugar a
versiones de componentes OO utilizados por
diversas aplicaciones. La coexistencia de
distintas versiones de componentes demandada
por distintos clientes debe ser gestionada sin
incoherencias (DLL hell)

6. Las aplicaciones distribuidas por redes son cada vez

más un canal de adquisición y ejecución de
software. La limitación de acceso a recursos por
aplicaciones posee mayor veracidad que un sistema
“todo o nada” de certificados

7. Organización de las funciones del sistema

operativo mediante jerarquías (espacios de
nombres)

8. Debe mantenerse “compatibilidad hacia atrás” para

crear e interactuar con código existente (legacy
code)

Francisco Ortín Soler
Marzo 2005

Expresividad de los Lenguajes
Expresividad de los Lenguajes

Introducción

• Siempre puede aparecer la controversia acerca de

qué lenguaje de programación utilizar

• Lo ideal es que la elección de un lenguaje estuviera
condicionada al dominio del problema (parcial o
total) a resolver

• Las facetas propias de:

Librerías
Gestión de memoria
Eficiencia
Tamaño de los programas a utilizar
Componentes
Portabilidad
Distribución
Persistencia
estarán ligadas al entorno de ejecución (al CLR),
no al lenguaje

Francisco Ortín Soler
Marzo 2005

3

Entorno Computacional ÚÚniconico
Entorno Computacional

Introducción

¡Todos se
ejecutan sobre
el mismo
entorno de
ejecución: el
CLR!

Python

Orientado a
Objetos

VBS VBA VB.NET

C++

JScript

Procesamiento
del Lenguaje

Perl

Dinámico/
Scripting

Haskell
Script

Paradigma

Funcional
/Lógico

C#

Estático

Prolog

Haskell

ML

Francisco Ortín Soler
Marzo 2005

Introducción

Solucióónn
Soluci

Pascal

C#

Mercury

Python

Scheme

Cobol

Mondrian

Oberon

Objetivos Principales:
• Ejecución de aplicaciones
Lenguajes de Programación
• Generación de código nativo (JIT)
• Gestión de Memoria (GC)
• Gestión de versiones (componentes)
• Seguridad (acceso recursos)
SML
JScript
• Manejo de excepciones
• Único Sistema de tipos
• Independencia de la plataforma
• Interoperabilidad con COM

Compilación

Eiffel

VB

Haskell

Código Intermedio: IL (Intermediate Language), MSIL (Microsoft...), CIL (Common...)

Ejecución

CLR

Sistema Operativo

Francisco Ortín Soler
Marzo 2005

4

DemoDemo

Introducción

• HolaVB.vb
• HolaCS.cs
• HolaIL.il
• ILDASM (Intemediate Language Disassembler)
• Comparación de código generado

Francisco Ortín Soler
Marzo 2005

Eficiencia
Eficiencia

Introducción

• La utilización de un único motor computacional (CLR)

proporciona multitud de ventajas, pero un claro
inconveniente: la eficiencia

• La interpretación es más cara que la ejecución nativa,

puesto que existe un nivel computacional más

• ¿Es el CLR un intérprete? NO
• En lugar de interpretar el código, el CLR (Compilador JIT):

Compila dinámicamente el código a su representación

nativa en la plataforma de ejecución

Optimiza el código generado (e.g., inlining)

Aplicación

Código
Portable

Compilador

JIT

0110001

Compilación

Ejecución

Francisco Ortín Soler
Marzo 2005

5

Contenido
Contenido

• Introducción
• SSCLI (Rotor)
• Reflectividad
• Incluyendo Reflectividad Estructural
• Desarrollo del Proyecto
• Documentación

Francisco Ortín Soler
Marzo 2005

Implementaciones Libres
Implementaciones Libres

SSCLI (Rotor)

• Existen diversas implementaciones libres del CLI (Common

Francisco Ortín Soler
Marzo 2005

6

Language Infrastructure) ECMA-335 y de C# (ECMA-334)
Formato del fichero exe (metadatos y código IL)
El sistema de tipos común
La especificación extensible (atributos) de metadatos
El lenguaje intermedio
Acceso a la plataforma host (PAL)
La librería básica de clases (BCL)
Sintaxis y semántica de C#

• Shared Source CLI (SSCLI, aka Rotor)

Implementación de Microsoft libre para investigación y

docencia (Windows, FreeBSD y Mac OS x)

• Mono (www.mono-project.com)

Implementación libre (liderada por Novell) de los dos
estándares ECMA para Linux, Windows, BSD y Solaris
Además ofrece otros componentes del .net Framework

(ADO.net, Windows Forms, ASP.NET)
• DotGNU Portable.NET (www.dotgnu.org)

Implementación de ECMA 335 y 334 para Linux, Windows,

[Net,Free]BSD, Solaris y Mac OS X

Componentes de Rotor
Componentes de Rotor

SSCLI (Rotor)

Francisco Ortín Soler
Marzo 2005

Request forfor Proposals
Proposals
Request

SSCLI (Rotor)

• Microsoft ha lanzado dos “peticiones de ideas” de utilización de

Rotor en el campo de la investigación y docencia
En abril de 2002 pone a disposición su código fuente y hace

una llamada de peticiones (RFP 1)
Premia a 43 proyectos (con fondos económicos) para

desarrollar un proyecto de 18 meses
2 de estos proyectos son españoles

— Enric Pastor, U. Politécnica de Cataluña, “.NET (Rotor) in

embedded processors”

— Marian Díaz, U. Oviedo, “Adding low-level pure

capability-based protection to the CLR for supporting
flexible and secure embedded and mobile applications”

En noviembre de 2003 se lanza el RFP2

En febrero de 2004 premia 38 proyectos,
2 españoles

— Darío Álvarez, U. Oviedo, “On the cost of securing

applications: Performance and feasibility of capability-
based security in the Rotor platform”

— Francisco Ortín, U. Oviedo, “Extending Rotor with

Structural Reflection to support Reflective Languages”

Francisco Ortín Soler
Marzo 2005

7

Proyecto RFP2
Proyecto RFP2

SSCLI (Rotor)

• El proyecto Extending Rotor with Structural

Reflection to support Reflective Languages tiene
como principal objetivo
Añadir al motor computacional de .net (Rotor)

reflectividad estructural para
Aumentar la adaptabilidad de la plataforma

(nuevas funcionalidades de la BCL, ADO.NET,
AOP dinámica…)

Dar un soporte nativo (no interpretado) a los,

cada vez más utilizados, lenguajes dinámicos
(Python, Ruby, Dylan)

Aumentar la eficiencia de las implementaciones

existentes, gracias a la utilización del JIT
compiler

Permitir la interacción directa con cualquier

lenguaje de programación “X.net”

Francisco Ortín Soler
Marzo 2005

Reflectividad (Reflexióón)n)
Reflectividad (Reflexi

Reflectividad

• Capacidad de un sistema computacional para modificar y actuar

acerca de sí mismo
El dominio computacional de un sistema es ampliado con su

propia representación

• La reflectividad puede producirse en tiempo de compilación (AOP)

o en tiempo de ejecución

• Niveles:

Introspección. Conocimiento dinámico de la estructura de

una aplicación (Java, C# o RTTI del C++)
Ejemplo: Conocer en tiempo de ejecución todos los métodos
de una clase e invocar a aquellos que comiencen con test
(JUnit)

Reflectividad estructural. Modificación dinámica de la

estructura de una aplicación (SmallTalk, Python)
Ejemplo: Añadir a un objeto un método descrito por el

programador en tiempo de ejecución (Smalltalk)

Reflectividad computacional. Modificación dinámica de la

semántica del sistema (MOPs, MetaXa, nitrO)

Francisco Ortín Soler
Marzo 2005

8

Introspeccióón en .Net
n en .Net
Introspecci

Reflectividad

• La plataforma .net incluye en su BCL dos espacios de

nombres dedicados a introspección
System.Reflection: Introspección dinámica de los
ensamblados, clases, objetos, métodos, atributos y
propiedades

class ClassSuma

{

public static int sumar(int a,int b) { return a+b; }
public static void testSuma() {

int a=4,b=-4;
Debug.Assert(a+b==sumar(a,b));

}
[STAThread] static void Main() { pruebas(typeof(ClassSuma)); }
public static void pruebas(Type clase) {

MethodInfo[]methods=clase.GetMethods();
int n=0;
for (int i=0;i<met
  • Links de descarga
http://lwp-l.com/pdf15604

Comentarios de: Reflexionando sobre Microsoft .net (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad