• No se han encontrado resultados

tsi1-2-framework-net.pdf

N/A
N/A
Protected

Academic year: 2020

Share "tsi1-2-framework-net.pdf"

Copied!
71
0
0

Texto completo

(1)

Taller de Sistemas de

Información 1

(2)

Contenidos

• Introducción

• .NET Framework

• CLR, CLI, CTS

(3)

Introducción

¿Como era el mundo sin .NET?

• Corria el año 2000…

• XML se estaba popularizando

• La W3C trabajaba en las especificaciones de Web Services SOAP • Java era percibido como el lenguaje de “avanzada”, ya que

incorporaba una cantidad de conceptos (Garbage Collection, incorporaba una cantidad de conceptos (Garbage Collection, Exception Handling, VM, etc)

• Microsoft Visual Basic 6 era el rey en aplicaciones de escritorio, con arquitectura cliente-servidor

• La propuesta tecnológica de Microsoft para el desarrollo de sistemas distribuidos se llamaba COM+

(4)

Lecciones aprendidas del

pasado

Good artists copy, great artists steal…

Strong data typing

Garbage collected memory management

Exception based error handling

(5)

.NET Framework

Es una plataforma de software desarrollada

por Microsoft, disponible “principalmente” en

sistemas operativos Windows

Comprende

Comprende

o Una serie de especificaciones de infraestructura, lenguaje, y tipos que la

rigen

o Una biblioteca de clases base orientada a hacerle la vida más fácil a un

programador, brindando herramientas para enfrentar las problemáticas más comunes en programación

o Un conjunto de compiladores para una serie de lenguajes soportados o Una maquina virtual que administra la ejecución de programas escritos

(6)

.NET Framework

Microsoft presenta en Nov 2000 la primer

beta pública (Enero 2002 RTM)

Es una plataforma que incorpora los

principales aspectos de Java (VM, GC, EH) e

principales aspectos de Java (VM, GC, EH) e

introduce algunas novedades:

Es una plataforma que hacía énfasis en el multilenguaje (buena estrategia de captación de developers)

Era totalmente orientado a objetos, todo los tipos en los

lenguajes .NET son un objeto, desde el principio, incluyendo los tipos básicos

(7)

Versiones y estado actual

El desarrollo inicial del .NET framework tuvo

(8)
(9)
(10)

Common Language

Specification

Common Language Specification

Cualquier lenguaje que cumple esta

especificación, es un lenguaje .NET

Cuando se cumple con la especificación

Cuando se cumple con la especificación

Podemos aprovechar completamente la Base Class Library

Utilizamos un sistema de tipos unificado, el Common Type System (CTS)

(11)

CLS

.NET soporta múltiples lenguajes C#, VB.NET, C++, Cobol, Haskell

Cada lenguaje de estos es transformado en un código estándar, intermedio denominado

estándar, intermedio denominado

Microsoft Intermediate Language (IL)

A este código intermedio, debe sumársele un cierto conjunto de datos extra, denominados “metadata” Como este código intermedio es estándar, las

(12)
(13)

Common Type System (CTS)

Todos los lenguajes de la plataforma tienen los mismos tipos de datos primitivos

“int” en C# es lo mismo que “Integer” en VB.NET, o en Cobol, o en Haskell, etc.

Esto garantiza compatibilidad de tipos a nivel binario

Especialmente útil a la hora de comunicar elementos en diferentes lenguajes

Los tipos pueden ser

Value types: Pasados por valor, almacenados en el stack

(14)
(15)

CTS

No define sintaxis o palabras clave

Solo un conjunto de estructuras que puede ser

reutilizada por múltiples lenguajes

Cada lenguaje puede definir su sintaxis.

Cada lenguaje puede definir su sintaxis.

Pero si trabaja sobre el CLR, debe usar tipos

definidos en el CTS

(16)
(17)

CLR

Es el ambiente en que ejecuta el código

administrado (managed) .NET

Provee los siguientes servicios básicos

Administración de memoria Administración de memoria Compilación “Just in Time” Tipado seguro

(18)
(19)

CLR

Administración de memoria

La administración de memoria esta basada en el concepto de “garbage collection”

Los objetos dereferenciados no son inmediatamente eliminados

eliminados

Los objetos que usan recursos “non-managed” deben ser liberados manualmente

obj 1 obj 2 obj 3

Los nuevos objetos son agregados en los

(20)

CLR

Administración de memoria

La administración de memoria esta basada en el concepto de “garbage collection”

Los objetos dereferenciados no son inmediatamente eliminados

eliminados

Los objetos que usan recursos “non-managed” deben ser liberados manualmente

obj 1 obj 2 obj 3

Los nuevos objetos son agregados en los

espacios libres

(21)

CLR

Administración de memoria

Cuando la memoria se llena, el GC recorre la misma buscando objetos inalcanzables

Una vez encontrados, estos son “finalizados”, se

compacta la memoria y se actualizan los punteros compacta la memoria y se actualizan los punteros correspondientes

obj 1 obj 2 obj 3

Los nuevos objetos son agregados en los

espacios libres

Los objetos sin referencias, no son eliminados obj 1 obj 2 obj 3 obj 4 obj 5 obj 6 HEAP HEAP

(22)

CLR

Compilación Just in Time

Los lenguajes de la plataforma .NET compilan en assemblies, que contienen

Código intermedio (IL)

Metadata

(23)

CLR

Compilación Just in Time

Los lenguajes de la plataforma .NET compilan en assemblies, que contienen

Código intermedio (MSIL)

Metadata

(24)

CLR

Compilación Just in Time

Los lenguajes de la plataforma .NET compilan en assemblies, que contienen

Código intermedio (MSIL)

Metadata

El CLR usa el IL y la metadata para lograr una ejecución administrada Compilador Código fuente IL + metadata EXE/ DLL Tiempo de compilación Tiempo de ejecución Managed Native Code Compilador JIT Execution

Metodo no compilado es invocado

(25)

Intermediate Language

#using <mscorlib.dll>

using namespace System;

void main( ) void main( ) {

Console::WriteLine(L"C++ Hello, World!"); }

(26)

Intermediate Language

using System;

public class MainApp {

public static void Main( ) public static void Main( ) {

Console.WriteLine("C# Hello, World!"); }

}

(27)

Intermediate Language

Imports System

Public Module MainApp Public Sub Main( )

Console.WriteLine ("VB Hello, World!") Console.WriteLine ("VB Hello, World!") End Sub

End Module

(28)

.method private hidebysig static void Main() cil managed

{

.entrypoint

// Code size 11 (0xb)

Intermediate Language

// Code size 11 (0xb) .maxstack 8

IL_0000: ldstr "Hello, world!" IL_0005: call void

[mscorlib]System.Console::WriteLine(string) IL_000a: ret

(29)

Modelo de ejecución de .NET

VB

VB

C

Cóódigodigo fuente fuente Compiler Compiler C++ C++ C# C# Compiler Compiler Compiler Compiler C

Cóódigodigo Managed

Managed AssemblyAssemblyAssemblyAssemblyIL CodeIL CodeIL CodeIL Code AssemblyAssemblyAssemblyAssemblyIL CodeIL CodeIL CodeIL Code AssemblyAssemblyAssemblyAssemblyIL CodeIL CodeIL CodeIL Code

Operating System Services

Operating System Services

Common Language Runtime

Common Language Runtime

JIT Compiler

JIT Compiler

Native Code

(30)
(31)

Características de diseño

Portabilidad

o El diseño del framework permite que

teóricamente sea agnóstico a la plataforma

o Las implementaciones comerciales del framework o Las implementaciones comerciales del framework

incluyen a las plataformas Windows, Windows CE y Xbox 360

o A su vez, Microsoft sometió al ECMA las

especificaciones del CLI (CTS, CIL, Base library), C# y C++/CLI, haciéndolas potencialmente

(32)

Common Language

Infrastructure

Es una especificación abierta (ECMA-335,

ISO/IEC 23271) desarrollada por Microsoft

que describe el código ejecutable y el

ambiente de ejecución de una serie de

ambiente de ejecución de una serie de

runtimes, como ser:

o Microsoft .NET Framework o Mono

(33)

Common Language

Infrastructure

La especificación permite que multiples

lenguajes usados en diferentes plataformas,

sin necesidad de ser reescritos

Describe los siguientes aspectos

Describe los siguientes aspectos

o Common Type System o Metadata

(34)

Metadata

Junto con el CTS, forman el corazón del CLI

Los compiladores compatibles con el CLI,

generan metadata, la cual es almacenada en

el archivo ejecutable construido

el archivo ejecutable construido

La información almacenada permite:

o Administrar la ejecución del código

o Instalar el código, resolver problemas de

versiones

(35)
(36)

.NET Framework

La biblioteca de clases provee una gran

variedad de funcionalidades, entre las que se

incluyen

o Interfaz de usuario o Interfaz de usuario o Acceso a datos

o Conectividad

(37)

Base Class Library

(38)

COM+ Services

Soporte para interoperar con aplicaciones

COM+

Es posible invocar lógica COM+ desde .NET

TLBIMP MyCOMlib.tlb /out:MyCOMlib.dll

TLBIMP MyCOMlib.tlb /out:MyCOMlib.dll

Es posible exponer lógica .NET en el catálogo

de servicios COM

TLBEXP MyCOMlib.dll /out:MyCOMlib.tlb

(39)

COM+

Interoperabilidad

o La interacción entre aplicaciones nuevas y viejas

es en general necesaria

o El framework provee la capacidad de ejecutar o El framework provee la capacidad de ejecutar

aplicaciones que ejecutan fuera del mismo

o System.Runtime.InteropServices,

System.EnterpriseServices, PInvoke son

(40)

Elementos de .NET

Algunos elementos básicos de .NET

Namespaces

Assemblies y deployment Clases

(41)

Elementos de .NET

Namespaces

Mecanismo para organizar funciones y objetos

de la plataforma y del usuario

El concepto de namespace no es nuevo

Es una subdivisión lógica de la funcionalidad, en la Es una subdivisión lógica de la funcionalidad, en la

cual todos los nombres deben ser únicos Packages en Java

(42)

Elementos de .NET

Namespaces

// Declaracion de uso de un namespace using System;

// Namespace donde declaramos la clase NamespaceTest

namespace namespace_tsi1

{

// Clase que nos interesa // Clase que nos interesa class NamespaceTest {

public static void Main() {

Console.WriteLine("Ejemplo de un namespace en un programa C#."); }

(43)

Elementos de .NET

Namespaces

Para utilizar un elemento en un namespace,

existen dos opciones

Incluimos el namespace en nuestro código

A través de la sentencia Using Using System;

Using System;

Using System.Collections;

Referenciado un objeto a través de su nombre completo

El nombre completo es la concatenación de la jerarquía de namespaces, seguida del nombre de la clase

(44)

Elementos de .NET

Assemblies

Todo código ejecutado por .NET, se encuentra

dentro de un assembly

Todas las funcionalidades de seguridad,

resolución de namespaces y versionado, se

resolución de namespaces y versionado, se

definen por assembly

Es la unidad de deployment de la plataforma

Contiene metadata (manifest) que describe el

(45)

Elementos de .NET

Assemblies

Los assemblies usados por una única aplicación,

se denominan “privados”

Por ejemplo, una DLL que contenga la lógica de negocio de una aplicación especifica

negocio de una aplicación especifica

Los assemblies de propósito general, usados por

múltiples aplicaciones, se denominan

“públicos”

(46)

Elementos de .NET

Assemblies

El GAC es un directorio especial en la maquina

\winnt\assembly \windows\assembly

Los assemblies pueden colocarse en el GAC, removerse, visualizar propiedades, etc.

propiedades, etc.

Utilizamos un utilitario, de nombre GACUTIL.exe

Viene con el SDK de Microsoft Algunos comandos interesantes

gacutil /l

gacutil /i math.dll

gacutil /u math,ver=1.0.0.0

(47)

Elementos de .NET

Assemblies

Los assemblies evitan el problema conocido

como “DLL Hell”

Cada aplicación referencia assemblies en su propio directorio de instalación

Cuando el assembly es global, se hace referencia Cuando el assembly es global, se hace referencia

al mismo en el GAC

En el caso de que el assembly sea global,

interesan varios elementos

(48)

Elementos de .NET

Assemblies

Un “Strong Name” usa criptografía de clave

publica para crear un nombre que sea único

entre los assemblies de un sistema

El manifiesto de un assembly, contiene la clave

El manifiesto de un assembly, contiene la clave

publica de un par publico/privado

La combinación de

Nombre de archivo Versión

(49)

Elementos de .NET

Assemblies

Firmar el componente (assembly) es el proceso por el cual se le genera y asigna un strong name

Este proceso puede ser realizado automáticamente por VS.NET, si se proporcionan algunos datos por VS.NET, si se proporcionan algunos datos

Un archivo que contenga la clave publica y privada

Generado con la utilidad “sn.exe”, distribuida con el SDK

El nombre del archivo se especifica en el código, dentro del archivo AssemblyInfo.vb

<Assembly: AssemblyKeyFileAttribute(“keys.snk”)>

(50)

Anatomía de un assembly

Manifest Assembly

Module Metadata

Tipos Module

(51)
(52)

Application Domain

El application domain determina un contexto de

memoria donde se carga una assembly

En general se trabaja con un único application

domain por proceso

domain por proceso

El estándar define el concepto de application

domain

o Un proceso puede tener mas de un application domain

(53)

Runtime assembly resolution

Prevenga dolores de cabeza… para regalar y regalarse

1. Determina version buscada del assembly

2. Comprueba que la assembly no haya sido linkeada antes, si lo fue reusa la ya cargada

3. Busca la assembly en la Global Assembly Cache 3. Busca la assembly en la

(strong named assemblies only)

4. Chequea la existencia de elementos <codeBase>, en la configuracion, y si no los encuentra (por defecto no hay) busca la assembly según el criterio,

[application base] / [assembly name].dll

[application base] / [assembly name] / [assembly name].dll [application base] / [culture] / [assembly name].dll

(54)

Elementos de .NET

Classes

Se proveen los conceptos tradicionales de los lenguajes OO

Encapsulamiento, Herencia, Polimorfismo, Sobrecarga, etc.

Sobrecarga, etc.

Toda clase extiende System.Object

(55)

Elementos de .NET

Classes

//C#

MessageBox.Show(42.ToString());

MessageBox.Show("HelloWorld".GetType().ToString());

'VB

MessageBox.Show(42.ToString())

(56)

Elementos de .NET

Classes

Toda clase .NET esta almacenada en

Un Assembly

Es el archivo binario donde esta almacenada la clase EXE o DLL

Un Namespace

Una agrupación lógica

(57)
(58)
(59)

La Capa de Presentación

Tecnologías .NET de UI

Windows Form (Desktop)

ASP.NET (Web)

ASP.NET MVC (Web)

(60)
(61)

Interfaz de Servicios

Tecnologias .NET Servicios

Web Services

MSMQ

Remoting

In Proc

(62)

Flujos de trabajo

empresariales

Lógica Ad Hoc .NET

Orquestaciones BizTalk

(63)
(64)

La Capa de Acceso a Datos

Entity Framework

ADO.NET

LINQ To SQL

(65)
(66)

Seguridad

ASP.NET 2.0 Membership

Modelo de providers

SQL Server

Active Directory Active Directory

Autenticación, y autorización

Enterprise Library

Security Application Block

(67)

Configuración

Namespace System.Configuration

Archivos xml de configuracion, aka App.config

Modelo extensible para la definicion de formatos

personalizados de configuración

personalizados de configuración

Maneja una seccion de propósito general de

nombre appsettings

(68)

Transaccionalidad

Base de datos

ADO.NET

Transacciones distribuidas

COM+ Services (aka Enterprise Services) COM+ Services (aka Enterprise Services)

Nuevo soporte

(69)

IDE .NET Visual Studio

Es un entorno WYSIWYG para el desarrollo de

formularios Windows, y Web

Maneja la noción de Proyectos

Los mismos se pueden agrupar en carpetas

Los mismos se pueden agrupar en carpetas

Viene en mas de un sabor:

Express

Standard Edition Professional Edition Tools for Office

(70)
(71)

Herramientas asociadas

Visual Studio 2008

SQL Server 2008

Expression Blend

Biztalk

Referencias

Documento similar

D6minum Deum tuum adorabis, et mi soli servies. * E s tan grande el amor de Dios para con los hombres, que hecho hombre no se content6 con padecer los trabajos y las afrentas que

los hombres. Porque la insigne ohl';] de la encarnaciOll del Hijo y de la redencion del mundo, no podia darse á entender sino por unos hombres ilustrados por el Espíritu Santo. En

Compacto térmico incorporado (monoblock), persiana de lamas de aluminio inyectado, con accionamiento manual mediante cinta y recogedor.. Compacto térmico incorporado (monoblock),

Si la inclinación supera la latitud del lugar de lanzamiento (gura 2c) hay dos posibilidades en las que será necesario determinar el Azimut, Az adecuado para insertar directamente

Cedulario se inicia a mediados del siglo XVIL, por sus propias cédulas puede advertirse que no estaba totalmente conquistada la Nueva Gali- cia, ya que a fines del siglo xvn y en

2 así que se plantea el siguiente problema general, ¿De qué manera el uso de viguetas pretensadas con ladrillo tipo cerámico fanelli mejorará el tiempo de ejecución

Habiendo organizado un movimiento revolucionario en Valencia a principios de 1929 y persistido en las reuniones conspirativo-constitucionalistas desde entonces —cierto que a aquellas

De hecho, este sometimiento periódico al voto, esta decisión periódica de los electores sobre la gestión ha sido uno de los componentes teóricos más interesantes de la