Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Contenidos
Introduccin .NET Framework CLR, CLI, CTS Assembly, Namespace, App Domain IDE Visual Studio
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
Strong data typing Garbage collected memory management Exception based error handling Virtual machine architecture Libreras de base potentes
.NET Framework
Es una plataforma de software desarrollada por Microsoft, disponible principalmente en sistemas operativos Windows Comprende
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
El desarrollo inicial del .NET framework tuvo lugar a finales de los 90 estando a principios del 2000 disponibles las primeras betas disponibles
CLS
.NET soporta mltiples lenguajes
C#, VB.NET, C++, Cobol, Haskell
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
12
CTS
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
15
.NET Framework
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
17
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
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
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
CLR
Compilacin Just in Time
Los lenguajes de la plataforma .NET compilan en assemblies, que contienen
Cdigo intermedio (IL)
Metadata
22
CLR
Compilacin Just in Time
Los lenguajes de la plataforma .NET compilan en assemblies, que contienen
Cdigo intermedio (MSIL)
Metadata
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
EXE/ DLL
Tiempo de ejecucin
24
Intermediate Language
#using <mscorlib.dll>
25
Intermediate Language
using System;
public class MainApp { public static void Main( ) { Console.WriteLine("C# Hello, World!"); } }
csc hello.cs
26
Intermediate Language
Imports System
Public Module MainApp Public Sub Main( ) Console.WriteLine ("VB Hello, World!") End Sub End Module
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
28
29
Compilacin JIT
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
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
32
o
o o
Common Type System Metadata Common Language Specification Virtual Execution System
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
35
.NET Framework
La biblioteca de clases provee una gran variedad de funcionalidades, entre las que se incluyen
o
o
o o
36
37
COM+ Services
Soporte para interoperar con aplicaciones COM+ Es posible invocar lgica COM+ desde .NET
TLBIMP MyCOMlib.tlb /out:MyCOMlib.dll
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
39
Elementos de .NET
Algunos elementos bsicos de .NET
Namespaces Assemblies y deployment Clases
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#."); } } }
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;
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
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
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
Anatoma de un assembly
Assembly Manifest
Module Metadata IL
Tipos
50
Aplicacin .NET
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
52
1. Determina version buscada del assembly 2. Comprueba que la assembly no haya sido linkeada antes, si lo fue reusa la ya cargada
Elementos de .NET
Classes
Se proveen los conceptos tradicionales de los lenguajes OO Encapsulamiento, Herencia, Polimorfismo, Sobrecarga, etc.
54
Elementos de .NET
Classes
//C# MessageBox.Show(42.ToString()); MessageBox.Show("HelloWorld".GetType().ToString());
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
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
58
La Capa de Presentacin
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)
60
61
Interfaz de Servicios
Tecnologias .NET Servicios
62
63
64
65
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
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
68
Transaccionalidad
Base de datos
ADO.NET
Transacciones distribuidas
COM+ Services (aka Enterprise Services)
Nuevo soporte
System.Transactions
69
71
Herramientas asociadas
Visual Studio 2012 SQL Server 2012 Expression Blend Biztalk Microsoft Azure
72