Está en la página 1de 72

Taller de Sistemas de Informacin 1

.NET Framework Clase 3

Contenidos
Introduccin .NET Framework CLR, CLI, CTS Assembly, Namespace, App Domain IDE Visual Studio

INCO - Facultad de Ingeniera Montevideo, Uruguay

Introduccin
Como era el mundo sin .NET? Corria el ao 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, Exception Handling, VM, etc)
Microsoft Visual Basic 6 era el lider en aplicaciones de escritorio, con arquitectura cliente-servidor La propuesta tecnolgica de Microsoft para el desarrollo de sistemas distribuidos se llamaba COM+ Java era el rey en aplicaciones de middleware, en la implementacin de sistemas en N capas
INCO - Facultad de Ingeniera Montevideo, Uruguay 3

Lecciones aprendidas del pasado


Good artists copy, great artists steal

Strong data typing Garbage collected memory management Exception based error handling Virtual machine architecture Libreras de base potentes

INCO - Facultad de Ingeniera Montevideo, Uruguay

.NET Framework
Es una plataforma de software desarrollada por Microsoft, disponible principalmente en sistemas operativos Windows Comprende

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


Una biblioteca de clases base orientada a hacerle la vida ms fcil a un programador, brindando herramientas para enfrentar las problemticas ms comunes en programacin Un conjunto de compiladores para una serie de lenguajes soportados Una maquina virtual que administra la ejecucin de programas escritos para esta plataforma
INCO - Facultad de Ingeniera Montevideo, Uruguay 5

o o

.NET Framework
Microsoft presenta en Nov 2000 la primer beta pblica (Enero 2002 RTM) Es una plataforma que incorpora los principales aspectos de Java (VM, GC, EH) e introduce algunas novedades:

Es una plataforma que haca nfasis en el multilenguaje (buena estrategia de captacin de developers) Era totalmente orientado a objetos, todo los tipos en los lenguajes .NET son un objeto, desde el principio, incluyendo los tipos bsicos Muy buen soporte a nivel de IDE para arquitecturas distribuidas orientadas a servicios, desde muy temprano
INCO - Facultad de Ingeniera Montevideo, Uruguay 6

Versiones y estado actual

El desarrollo inicial del .NET framework tuvo lugar a finales de los 90 estando a principios del 2000 disponibles las primeras betas disponibles

INCO - Facultad de Ingeniera Montevideo, Uruguay

Arquitectura del Framework .NET

INCO - Facultad de Ingeniera Montevideo, Uruguay

INCO - Facultad de Ingeniera Montevideo, Uruguay

Common Language Specification


Common Language Specification Cualquier lenguaje que cumple esta especificacin, es un lenguaje .NET Cuando se cumple con la especificacin
Podemos aprovechar completamente la Base Class Library Utilizamos un sistema de tipos unificado, el Common Type System (CTS)

El CLS es estandarizado por el ECMA


INCO - Facultad de Ingeniera Montevideo, Uruguay 10

CLS
.NET soporta mltiples lenguajes
C#, VB.NET, C++, Cobol, Haskell

Cada lenguaje de estos es transformado en un cdigo estndar, intermedio denominado


Microsoft Intermediate Language (IL)

A este cdigo intermedio, debe sumrsele un cierto conjunto de datos extra, denominados metadata Como este cdigo intermedio es estndar, las diferencias a nivel de implementacin, se pierden al llegar al CLR
INCO - Facultad de Ingeniera Montevideo, Uruguay 11

Common Language Specification

INCO - Facultad de Ingeniera Montevideo, Uruguay

12

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 Reference types: Pasados por referencia, almacenados en el heap
INCO - Facultad de Ingeniera Montevideo, Uruguay 13

CTS

INCO - Facultad de Ingeniera Montevideo, Uruguay

14

CTS
No define sintaxis o palabras clave Solo un conjunto de estructuras que puede ser reutilizada por mltiples lenguajes Cada lenguaje puede definir su sintaxis. Pero si trabaja sobre el CLR, debe usar tipos definidos en el CTS
De esta forma se garantiza la correcta interoperabilidad de los lenguajes

INCO - Facultad de Ingeniera Montevideo, Uruguay

15

.NET Framework

INCO - Facultad de Ingeniera Montevideo, Uruguay

16

CLR
Es el ambiente en que ejecuta el cdigo administrado (managed) .NET Provee los siguientes servicios bsicos
Administracin de memoria Compilacin Just in Time Tipado seguro Seguridad

INCO - Facultad de Ingeniera Montevideo, Uruguay

17

Common Language Runtime (CLR)

INCO - Facultad de Ingeniera Montevideo, Uruguay

18

CLR
Administracin de memoria
La administracin de memoria esta basada en el concepto de garbage collection Los objetos dereferenciados no son inmediatamente eliminados Los objetos que usan recursos non-managed deben ser liberados manualmente
HEAP
obj 3 obj 2 obj 1

Los nuevos objetos son agregados en los espacios libres


INCO - Facultad de Ingeniera Montevideo, Uruguay 19

CLR
Administracin de memoria
La administracin de memoria esta basada en el concepto de garbage collection Los objetos dereferenciados no son inmediatamente eliminados Los objetos que usan recursos non-managed deben ser liberados manualmente
HEAP
obj 3 obj 2 obj 1

HEAP
obj 3 obj 2 obj 1 obj 6 obj 5 obj 4

Los nuevos objetos son agregados en los espacios libres

Los objetos sin referencias, no son eliminados


20

INCO - Facultad de Ingeniera Montevideo, Uruguay

CLR
Administracin 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 correspondientes
HEAP
obj 3 obj 2 obj 1

HEAP
obj 3 obj 2 obj 1 obj 6 obj 5 obj 4

HEAP
obj 6 obj 3 obj 1 obj 7

Los nuevos objetos son agregados en los espacios libres

Los objetos sin referencias, no son eliminados

Se eliminan los objetos no alcanzables


21

INCO - Facultad de Ingeniera Montevideo, Uruguay

CLR
Compilacin Just in Time
Los lenguajes de la plataforma .NET compilan en assemblies, que contienen
Cdigo intermedio (IL)

Metadata

El CLR usa el IL y la metadata para lograr una ejecucin administrada

INCO - Facultad de Ingeniera Montevideo, Uruguay

22

CLR
Compilacin Just in Time
Los lenguajes de la plataforma .NET compilan en assemblies, que contienen
Cdigo intermedio (MSIL)

Metadata

El CLR usa el IL y la metadata para lograr una ejecucin administrada


Compilador IL + metadata Cdigo fuente Tiempo de compilacin
INCO - Facultad de Ingeniera Montevideo, Uruguay 23

EXE/ DLL

CLR
Compilacin Just in Time
Los lenguajes de la plataforma .NET compilan en assemblies, que contienen
Cdigo intermedio (MSIL)

Metadata

El CLR usa el IL y la metadata para lograr una Metodo no compilado es ejecucin administrada invocado
Compilador IL + metadata Cdigo fuente Tiempo de compilacin
INCO - Facultad de Ingeniera Montevideo, Uruguay

Compilador JIT
Validaciones

Execution Managed Native Code

EXE/ DLL

Tiempo de ejecucin

24

Intermediate Language
#using <mscorlib.dll>

using namespace System;


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

cl hello.cpp /CLR /link /entry:main

INCO - Facultad de Ingeniera Montevideo, Uruguay

25

Intermediate Language
using System;

public class MainApp { public static void Main( ) { Console.WriteLine("C# Hello, World!"); } }
csc hello.cs

INCO - Facultad de Ingeniera Montevideo, Uruguay

26

Intermediate Language
Imports System

Public Module MainApp Public Sub Main( ) Console.WriteLine ("VB Hello, World!") End Sub End Module

vbc /t:exe /out:hello.exe hello.vb

INCO - Facultad de Ingeniera Montevideo, Uruguay

27

Intermediate Language
.method private hidebysig static void Main() cil managed { .entrypoint // Code size 11 (0xb) .maxstack 8 IL_0000: ldstr "Hello, world!" IL_0005: call void [mscorlib]System.Console::WriteLine(string) IL_000a: ret } // end of method HelloWorld::Main

INCO - Facultad de Ingeniera Montevideo, Uruguay

28

Modelo de ejecucin de .NET


Cdigo fuente
VB Compiler C# Compiler Assembly IL Code C++ Compiler Assembly IL Code

Cdigo Assembly Managed IL Code

Common Language Runtime


JIT Compiler
Native Code

Operating System Services

INCO - Facultad de Ingeniera Montevideo, Uruguay

29

Compilacin JIT

INCO - Facultad de Ingeniera Montevideo, Uruguay

30

Caractersticas de diseo

Portabilidad
o

El diseo del framework permite que tericamente sea agnstico a la plataforma Las implementaciones comerciales del framework incluyen a las plataformas Windows, Windows CE y Xbox 360 A su vez, Microsoft someti al ECMA las especificaciones del CLI (CTS, CIL, Base library), C# y C++/CLI, hacindolas potencialmente estndares abiertos
INCO - Facultad de Ingeniera Montevideo, Uruguay 31

Common Language Infrastructure

Es una especificacin abierta (ECMA-335, ISO/IEC 23271) desarrollada por Microsoft que describe el cdigo ejecutable y el ambiente de ejecucin de una serie de runtimes, como ser:
o o

Microsoft .NET Framework Mono Portable.NET

INCO - Facultad de Ingeniera Montevideo, Uruguay

32

Common Language Infrastructure


La especificacin permite que multiples lenguajes usados en diferentes plataformas, sin necesidad de ser reescritos Describe los siguientes aspectos

o
o o

Common Type System Metadata Common Language Specification Virtual Execution System

INCO - Facultad de Ingeniera Montevideo, Uruguay

33

Metadata
Junto con el CTS, forman el corazn del CLI Los compiladores compatibles con el CLI, generan metadata, la cual es almacenada en el archivo ejecutable construido La informacin almacenada permite:

o o

Administrar la ejecucin del cdigo Instalar el cdigo, resolver problemas de versiones Interoperar entre lenguajes
INCO - Facultad de Ingeniera Montevideo, Uruguay 34

Base Class Library

INCO - Facultad de Ingeniera Montevideo, Uruguay

35

.NET Framework

La biblioteca de clases provee una gran variedad de funcionalidades, entre las que se incluyen
o

o
o o

Interfaz de usuario Acceso a datos Conectividad Aplicaciones web Seguridad

INCO - Facultad de Ingeniera Montevideo, Uruguay

36

Base Class Library


System Namespaces

INCO - Facultad de Ingeniera Montevideo, Uruguay

37

COM+ Services
Soporte para interoperar con aplicaciones COM+ Es posible invocar lgica COM+ desde .NET
TLBIMP MyCOMlib.tlb /out:MyCOMlib.dll

Es posible exponer lgica .NET en el catlogo de servicios COM


TLBEXP MyCOMlib.dll /out:MyCOMlib.tlb

Tiene un costo en performance


INCO - Facultad de Ingeniera Montevideo, Uruguay 38

COM+

Interoperabilidad
o

La interaccin entre aplicaciones nuevas y viejas es en general necesaria El framework provee la capacidad de ejecutar aplicaciones que ejecutan fuera del mismo System.Runtime.InteropServices, System.EnterpriseServices, PInvoke son mecanismos que brindan diferentes formas de acceso

INCO - Facultad de Ingeniera Montevideo, Uruguay

39

Elementos de .NET
Algunos elementos bsicos de .NET
Namespaces Assemblies y deployment Clases

INCO - Facultad de Ingeniera Montevideo, Uruguay

40

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 subdivisin lgica de la funcionalidad, en la cual todos los nombres deben ser nicos Packages en Java

Esta organizado como una estructura jerrquica de nombres, que organiza los elementos de un programa .NET
INCO - Facultad de Ingeniera Montevideo, Uruguay 41

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 class NamespaceTest { public static void Main() { Console.WriteLine("Ejemplo de un namespace en un programa C#."); } } }

INCO - Facultad de Ingeniera Montevideo, Uruguay

42

Elementos de .NET
Namespaces
Para utilizar un elemento en un namespace, existen dos opciones
Incluimos el namespace en nuestro cdigo
A travs de la sentencia Using Using System; Using System.Collections;

Referenciado un objeto a travs de su nombre completo


El nombre completo es la concatenacin de la jerarqua de namespaces, seguida del nombre de la clase ns_exterior.ns_interior.NamespaceTest

INCO - Facultad de Ingeniera Montevideo, Uruguay

43

Elementos de .NET
Assemblies Todo cdigo ejecutado por .NET, se encuentra dentro de un assembly Todas las funcionalidades de seguridad, resolucin de namespaces y versionado, se definen por assembly Es la unidad de deployment de la plataforma Contiene metadata (manifest) que describe el contenido dentro del assembly

INCO - Facultad de Ingeniera Montevideo, Uruguay

44

Elementos de .NET
Assemblies
Los assemblies usados por una nica aplicacin, se denominan privados
Por ejemplo, una DLL que contenga la lgica de negocio de una aplicacin especifica

Los assemblies de propsito general, usados por mltiples aplicaciones, se denominan pblicos
Se colocan en un repositorio denominado GAC Global Assembly Cache
INCO - Facultad de Ingeniera Montevideo, Uruguay 45

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. 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 Existe una extensin del shell (explorer) creada para visualizar el contenido del mismo
INCO - Facultad de Ingeniera Montevideo, Uruguay 46

Elementos de .NET
Assemblies Los assemblies evitan el problema conocido como DLL Hell
Cada aplicacin referencia assemblies en su propio directorio de instalacin 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


Numero de versin: major.minor.build.version strong name o shared name

INCO - Facultad de Ingeniera Montevideo, Uruguay

47

Elementos de .NET
Assemblies
Un Strong Name usa criptografa de clave publica para crear un nombre que sea nico entre los assemblies de un sistema El manifiesto de un assembly, contiene la clave publica de un par publico/privado La combinacin de
Nombre de archivo Versin Un extracto de la clave publica Producen el Strong Name
INCO - Facultad de Ingeniera Montevideo, Uruguay 48

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 automticamente 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 cdigo, dentro del archivo AssemblyInfo.vb


<Assembly: AssemblyKeyFileAttribute(keys.snk)>

Al realizar luego el proceso de build, se realiza el firmado del componente automticamente


INCO - Facultad de Ingeniera Montevideo, Uruguay 49

Anatoma de un assembly
Assembly Manifest
Module Metadata IL

Tipos

INCO - Facultad de Ingeniera Montevideo, Uruguay

50

Aplicacin .NET

INCO - Facultad de Ingeniera Montevideo, Uruguay

51

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 El estndar define el concepto de application domain
o

Un proceso puede tener mas de un application domain Los assemblies se cargan en application domains

INCO - Facultad de Ingeniera Montevideo, Uruguay

52

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 (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 segn el criterio,
[application base] / [assembly name].dll [application base] / [assembly name] / [assembly name].dll [application base] / [culture] / [assembly name].dll [application base] / [culture] / [assembly name] / [assembly name].dll
INCO - Facultad de Ingeniera Montevideo, Uruguay 53

Elementos de .NET
Classes
Se proveen los conceptos tradicionales de los lenguajes OO Encapsulamiento, Herencia, Polimorfismo, Sobrecarga, etc.

Toda clase extiende System.Object


Incluye mtodos bsicos como ToString() y GetType()

INCO - Facultad de Ingeniera Montevideo, Uruguay

54

Elementos de .NET
Classes
//C# MessageBox.Show(42.ToString()); MessageBox.Show("HelloWorld".GetType().ToString());

'VB MessageBox.Show(42.ToString()) MessageBox.Show("Hello World".GetType().ToString())

INCO - Facultad de Ingeniera Montevideo, Uruguay

55

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 agrupacin lgica Dos clases pueden tener el mismo nombre, si estn en namespaces diferentes
ASSEMBLY: System.Windows.Forms.DLL

ListBox

NAMESPACE: System.Windows.Forms

INCO - Facultad de Ingeniera Montevideo, Uruguay

56

Configuraciones XML
Survival Guide
Configuraciones viven en archivos xml (appconfig.xml, webconfig.xml) Son archivos xml, que utlizan namespaces para compartimentar configuraciones de distintos aspectos Permite almacenar
configuraciones key-value (Java properties) Connection strings a bases de datos

Solo se toma el config del contexto corriente de ejecucin


INCO - Facultad de Ingeniera Montevideo, Uruguay 57

Diseo de aplicaciones y servicios

INCO - Facultad de Ingeniera Montevideo, Uruguay

58

La Capa de Presentacin

INCO - Facultad de Ingeniera Montevideo, Uruguay

59

La Capa de Presentacin
Tecnologas .NET de UI

Windows Form (Desktop) ASP.NET (Web) ASP.NET MVC (Web) Windows Presentation Foundation (Desktop) Silverlight (Mobile UI)

INCO - Facultad de Ingeniera Montevideo, Uruguay

60

La Capa Lgica/del Negocio

INCO - Facultad de Ingeniera Montevideo, Uruguay

61

Interfaz de Servicios
Tecnologias .NET Servicios

Web Services MSMQ Remoting In Proc Windows Communication Foundation

INCO - Facultad de Ingeniera Montevideo, Uruguay

62

Flujos de trabajo empresariales


Lgica Ad Hoc .NET Orquestaciones BizTalk Windows Workflow Foundation COTS Workflow .NET

INCO - Facultad de Ingeniera Montevideo, Uruguay

63

La Capa de Acceso a Datos

INCO - Facultad de Ingeniera Montevideo, Uruguay

64

La Capa de Acceso a Datos


Entity Framework ADO.NET LINQ To SQL DataSets + TableAdapters

INCO - Facultad de Ingeniera Montevideo, Uruguay

65

Cross Cutting Concerns

INCO - Facultad de Ingeniera Montevideo, Uruguay

66

Seguridad
ASP.NET 2.0 Membership
Modelo de providers
SQL Server Active Directory

Autenticacin, y autorizacin

Enterprise Library
Security Application Block Cryptography Application Block

INCO - Facultad de Ingeniera Montevideo, Uruguay

67

Configuracin
Namespace System.Configuration Archivos xml de configuracion, aka App.config Modelo extensible para la definicion de formatos personalizados de configuracin Maneja una seccion de propsito general de nombre appsettings Cuenta con soporte para encriptar el contenido

INCO - Facultad de Ingeniera Montevideo, Uruguay

68

Transaccionalidad
Base de datos
ADO.NET

Transacciones distribuidas
COM+ Services (aka Enterprise Services)

Nuevo soporte
System.Transactions

INCO - Facultad de Ingeniera Montevideo, Uruguay

69

IDE .NET Visual Studio


Es un entorno WYSIWYG para el desarrollo de formularios Windows, y Web Maneja la nocin de Proyectos Los mismos se pueden agrupar en carpetas Viene en mas de un sabor:
Express
Standard Edition Professional Edition Tools for Office

Team Suite, Sw Architects, Developers, Testers, TS Server


INCO - Facultad de Ingeniera Montevideo, Uruguay 70

IDE .NET Visual Studio

INCO - Facultad de Ingeniera Montevideo, Uruguay

71

Herramientas asociadas
Visual Studio 2012 SQL Server 2012 Expression Blend Biztalk Microsoft Azure

INCO - Facultad de Ingeniera Montevideo, Uruguay

72

También podría gustarte