1. introducción a la plataforma -...

27
1 1. Introducción a la plataforma .NET Integración de Sistemas Integración de Sistemas Diseño e implementación con .NET Contenido Introducción NET F k .NET Framework Acceso a datos con ADO .NET Windows Forms Aplicaciones Web: ASP.NET Herramientas de desarrollo

Upload: vankhanh

Post on 02-Nov-2018

219 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 1. Introducción a la plataforma - sabia.tic.udc.essabia.tic.udc.es/docencia/is/old/2007-2008/docs/transparencias/01... · El CLR es un entorno de ejecución que puede ser usado por

1

1. Introducción a la plataforma .NET

Integración de SistemasIntegración de SistemasDiseño e implementación con .NET

Contenido

Introducción

NET F k.NET Framework

Acceso a datos con ADO .NET

Windows Forms

Aplicaciones Web: ASP.NET

Herramientas de desarrollo

Page 2: 1. Introducción a la plataforma - sabia.tic.udc.essabia.tic.udc.es/docencia/is/old/2007-2008/docs/transparencias/01... · El CLR es un entorno de ejecución que puede ser usado por

2

¿Qué no es .NET?

.NET no es un Sistema Operativo

.NET no es un Lenguaje de Programación

.NET no es un Entorno de Desarrollo

NET S id d A li i.NET no es un Servidor de Aplicaciones

¿Qué es .NET?

Plataforma de Desarrollo compuesta deEntorno de Ejecución (CLR)Entorno de Ejecución (CLR)

Bibliotecas de Funcionalidad (Class Library)

Lenguajes de Programación

Compiladores

Herramientas de Desarrollo (IDE & Tools)

Documentación y Guías de Arquitectura

Page 3: 1. Introducción a la plataforma - sabia.tic.udc.essabia.tic.udc.es/docencia/is/old/2007-2008/docs/transparencias/01... · El CLR es un entorno de ejecución que puede ser usado por

3

Línea del tiempo de .NET

Visual Studio 6.0Visual BasicVBAVBAVisual FoxProVBScriptC++J++JScriptASP

Visual Studio .NET 2003.NET Framework 1.1.NET Compact FrameworkJ#

Visual Studio 2008.NET Framework 3.5.NET Compact Framework 3.5

2000 2001 2002 2003 2004 2005 2006 2008

Visual Studio 2005 (“Whidbey”).NET Framework 2.0 (“Whidbey”).NET Compact Framework 2.0 (“Whidbey”)

Visual Studio .NET 2002.NET Framework 1.0Visual Basic .NETC#

Características de .NET

Plataforma independiente del lenguaje

Múltiples lenguajes (C#, VB .NET, COBOL, Perl, Phython, Eiffel, etc.)

Código fuente se compila a MSIL (Microsoft Intermediate Language)MSIL se compila antes de ser ejecutado (no es interpretado)Sentencias MSIL manipulan tipos de datos comunes, compartidos por todos los lenguajes de .NET

Juntos forman el Common Type System (CTS)

Todos los lenguajes proporcionados por Microsoft tienen la misma potencia y capacidad de acceso a los recursos y servicios que expone el .NET Framework

No condiciona la elección del lenguaje

Page 4: 1. Introducción a la plataforma - sabia.tic.udc.essabia.tic.udc.es/docencia/is/old/2007-2008/docs/transparencias/01... · El CLR es un entorno de ejecución que puede ser usado por

4

Características de .NET

Plataforma de ejecución intermediaEl Common Language Runtime (CLR) es el responsable de cargar g g ( ) p gy ejecutar una aplicación .NET

Utiliza compilación Just-In-Time (JIT) para traducir MSIL a código máquina

Código .NET siempre es compilado, nunca interpretadoNo usa máquina virtual para ejecutar aplicacionesCódigo es compilado JIT la primera vez que se llamaProceso de compilación genera fichero ejecutable en formato portable executable (PE) Implicaciones:executable (PE). Implicaciones:

CLR nunca sabe, ni le importa, que lenguaje fue usado para crear la aplicación o componente

Para que el código funcione en otra plataforma basta reemplazar el compilador JIT

Características de .NET

Plataforma 100% Orientada a Objetos ⇒ no existen tipos primitivos

P it l d ll d li i i lPermite el desarrollo de aplicaciones empresariales

Modelo de programación único para todo tipo de aplicaciones (consola, Web, aplicaciones móviles, etc.) y dispositivos de hardware (PC, PDA, SmartPhone, etc.)

Código gestionadoAdemás de compilar, CLR gestiona las aplicaciones, haciéndose responsable dde:

Cargar, verificar y ejecutar código, la recolección de basura (Garbage Collector), proteger las aplicaciones unas de otras, hacer cumplir las restricciones de seguridad, proporcionar servicios de depuración e incluir soporte para versiones y desarrollo

Además del MSIL, compiladores generan MetadataMetadata describe tiposComponentes .NET son autodescriptivos

Page 5: 1. Introducción a la plataforma - sabia.tic.udc.essabia.tic.udc.es/docencia/is/old/2007-2008/docs/transparencias/01... · El CLR es un entorno de ejecución que puede ser usado por

5

Características de .NETModelo de ejecución

Todos los lenguajes son compilados a ILExtraído de: Grimes, F. (2002). Microsoft. Net for Programmers: Manning.

MSIL vs. Java bytecode

Java bytecode específicamente diseñado para soportar lenguaje Java, mientras MSIL diseñado para soportar múltiples lenguajesp p p g j

Java Virtual Machine diseñada para permitir Java bytecodeinterpretado o compilado, mientras MSIL fue diseñado explícitamente para compilación JIT (Just-In-Time Compilation)

Page 6: 1. Introducción a la plataforma - sabia.tic.udc.essabia.tic.udc.es/docencia/is/old/2007-2008/docs/transparencias/01... · El CLR es un entorno de ejecución que puede ser usado por

6

Common Type System (CTS)

El Common Type System (CTS) o Sistema de Tipo Común es el conjunto de reglas que han de j g qseguir las definiciones de tipos de datos para que el CLR las acepte

Define un conjunto común de tipos de datos orientados a objetos

Todo lenguaje de programación .NET debe implementar los tipos definidos por el CTS

Todo tipo hereda directa o indirectamente del tipo System.Object

Define tipos valor y tipos referencia

Tipos valor vs. Tipos referenciaCLR administra dos segmentos de memoria: Stack (Pila) y Heap (Montón)

Ti l (i t tTipos valor (i.e: enteros, caracteres, boleanos, etc.) se almacenan en el Stack

Tipos referencia (i.e: strings, clases definidas por el usuario, etc.) en el Heap

El Stack es liberado automáticamente una vez finaliza el procedimiento o el bloque de código, mientras que el Heap es administrado por el GC

Ti f i d l ti lTipo referencia puede ser nulo, tipo valor no

Posible crear nuevos objetos valor (e.g. C# struct)

Para preservar filosofía “Todo es un objeto”, .NET provee un tipo referencia correspondiente a cada tipo valor

Page 7: 1. Introducción a la plataforma - sabia.tic.udc.essabia.tic.udc.es/docencia/is/old/2007-2008/docs/transparencias/01... · El CLR es un entorno de ejecución que puede ser usado por

7

Assemblies

Un Assembly o Ensamblado es la unidad mínima de ejecución, distribución, instalación y versionado de aplicaciones .NET

Normalmente extensión dll o exeNormalmente, extensión .dll o .exe

Todo código ejecutable debe formar parte de un Assembly

Contienen:Código MSILManifest (Manifiesto)

METADATA: información sobre sí mismos y los recursos de los que dependen (son autodescriptivos)

Aplicación .NET se compone de uno o más ensamblados

Pueden ser privados (opción por defecto) o compartidos (se instalan en la Global Assembly Cache)

Assemblies

Combinando módulos gestionados en AssembliesExtraído de: Richter, J. (2003). Applied Microsoft. NET framework programming: Microsoft Press.

Page 8: 1. Introducción a la plataforma - sabia.tic.udc.essabia.tic.udc.es/docencia/is/old/2007-2008/docs/transparencias/01... · El CLR es un entorno de ejecución que puede ser usado por

8

Assemblies

Herramienta MSIL Dissasembler (ildasm.exe), incluida en el .NET Framework SDK

Assemblies. Global Assembly Cache (GAC)

Es un repositorio centralizado de ensamblados en el cual se instalan todos los ensamblados que serán utilizados por múltiples aplicaciones en la misma máquinamisma máquina

Para registrar un ensamblado en la GAC es necesario utilizar la herramienta gacutil.exe, incluida en el .NET Framework SDK

Obligatorio un nombre distinto para cada libreríaSe consigue con tecnología de cifrado de clave pública

Es posible distinguir entre versiones de un mismo ensamblado y éstas pueden convivir sin ningún conflictop g

Cada aplicación utiliza la versión de la librería que necesiteSoluciona problema DLL Hell

Actualizaciones y desinstalaciones más simples

Page 9: 1. Introducción a la plataforma - sabia.tic.udc.essabia.tic.udc.es/docencia/is/old/2007-2008/docs/transparencias/01... · El CLR es un entorno de ejecución que puede ser usado por

9

Assemblies. Global Assembly Cache (GAC)

Panel de Control > Herramientas Administrativas > .NET Framework Configuration Administrative toolg

Assemblies. Global Assembly Cache (GAC)

Page 10: 1. Introducción a la plataforma - sabia.tic.udc.essabia.tic.udc.es/docencia/is/old/2007-2008/docs/transparencias/01... · El CLR es un entorno de ejecución que puede ser usado por

10

Contenido

Introducción

NET F k.NET Framework

Acceso a datos con ADO .NET

Windows Forms

Aplicaciones Web: ASP.NET

Herramientas de desarrollo

.NET Framework

Paquete de software fundamental de la plataforma .NET. Incluye:Entorno de ejecución (Runtime)

Bibliotecas de funcionalidad reutilizable (Class Library)

Tres variantes principales:.NET Framework Redistributable Package (R + CL)

.NET Framework SDK (R + CL + compiladores, depuradores, etc.)

.NET Compact Framework

Distribución libre y gratuita

Instalado por defecto en Windows 2003 Server, Windows XP SP2 y Vista

Page 11: 1. Introducción a la plataforma - sabia.tic.udc.essabia.tic.udc.es/docencia/is/old/2007-2008/docs/transparencias/01... · El CLR es un entorno de ejecución que puede ser usado por

11

Arquitectura del .NET Framework

VB C++ C# J#

ADO.NET y XML

ASP.NET Windows Forms

Common Language Specification

VB C++ C# J# …

ram

ewor

k rib

utab

le

T Fr

amew

ork

SD

K

T Fr

amew

ork

ass

Libr

ary

Windows COM+ Services

Common Language Runtime

Base Class Library

.NET

Fr

Red

istr

.NE

T

.NET Cla

Arquitectura del .NET FrameworkCommon Language Runtime

El CLR es un entorno de ejecución que puede ser usado por distintos lenguajes de programación

El CLR es el responsable de cargar y ejecutar una aplicación .NETUtiliza compilación Just-In-Time (JIT) para traducir MSIL a código máquina

Además de compilar, CLR gestiona las aplicaciones, haciéndose responsable de:

Cargar, verificar y ejecutar código, la recolección de basura (GarbageC ll ) l li i d h li lCollector), proteger las aplicaciones unas de otras, hacer cumplir las restricciones de seguridad, proporcionar servicios de depuración e incluir soporte para versiones y desarrollo

La gestión del código por parte del CLR proporciona una capa extra que desacopla la aplicación del SO

Page 12: 1. Introducción a la plataforma - sabia.tic.udc.essabia.tic.udc.es/docencia/is/old/2007-2008/docs/transparencias/01... · El CLR es un entorno de ejecución que puede ser usado por

12

Arquitectura del .NET Framework.NET Framework Class Library

Conjunto de Tipos básicos (clases, interfaces, etc.) que vienen incluidos en el .NET Framework

Los tipos están organizados en jerarquías lógicas de nombres, denominados namespaces

Los tipos son independientes del lenguaje de programación de alto nivel que se desee utilizar (C# VBprogramación de alto nivel que se desee utilizar (C#, VB .NET, etc.)

Es extensible y totalmente orientada a objetos

Arquitectura del .NET Framework.NET Framework Class Library

System.WebS iS i UIUI

System.Windows.FormsD iD i C tM d lC tM d l

System.Data System.XmlOLE DBOLE DB ODBCODBC XSLTXSLT SerializationSerialization

ConfigurationConfiguration SessionStateSessionState

CachingCaching SecuritySecurity

ServicesServicesDescriptionDescription

DiscoveryDiscovery

ProtocolsProtocols

UIUIHtmlControlsHtmlControls

WebControlsWebControls

System.Drawing

ImagingImaging

Drawing2DDrawing2D

TextText

PrintingPrinting

DesignDesign ComponentModelComponentModel

System

GlobalizationGlobalization

DiagnosticsDiagnostics

ConfigurationConfiguration

CollectionsCollections

ResourcesResources

ReflectionReflection

NetNet

IOIO

ThreadingThreading

TextText

ServiceProcessServiceProcess

SecuritySecurity

CommonCommon SqlClientSqlClient XPathXPath

RuntimeRuntimeInteropServicesInteropServices

RemotingRemoting

SerializationSerialization

Page 13: 1. Introducción a la plataforma - sabia.tic.udc.essabia.tic.udc.es/docencia/is/old/2007-2008/docs/transparencias/01... · El CLR es un entorno de ejecución que puede ser usado por

13

Arquitectura del .NET FrameworkCommon Language Specification

El CLS define el mínimo conjunto de características que todos los lenguajes deben soportar, si pretenden ajustarse al CLR y soportar operatividad multilenguajemultilenguaje

Todos los componentes desarrollados y compilados de acuerdo con la especificación CLS pueden interactuar entre sí, independientemente del lenguaje de programación de alto nivel en el que fueron escritos

El CLR/CTS soporta muchas más características que el subconjunto definido por el CLS

Si la operatividad multilenguaje no es un objetivo, se pueden desarrollar tipos más ricos, limitados solo por el conjunto de características del lenguaje

El CLS define reglas a las que se deben adherir los tipos y los métodos visibles externamente, para que éstos sean accesibles desde cualquier lenguaje de programación CLS-compatible

Las reglas del CLS no afectan a código que es accesible sólo desde el asembly en que se defineLibrerías que se adhieren al CLS se dicen CLS-compliant

Arquitectura del .NET FrameworkCommon Language Specification

El CLR/CTS ofrece un conjunto de características

Al l j b j d l CLR/CTSAlgunos lenguajes exponen un gran subconjunto del CLR/CTS

El CLS define el mínimo conjunto de características que todos los lenguajes deben soportar

Los lenguajes ofrecen un subconjunto del CLR/CTS y un superconjunto del CLS (pero no necesariamente el mismo superconjunto)

Extraído de: Richter, J. (2003). Applied Microsoft. NET framework programming: Microsoft Press.

Page 14: 1. Introducción a la plataforma - sabia.tic.udc.essabia.tic.udc.es/docencia/is/old/2007-2008/docs/transparencias/01... · El CLR es un entorno de ejecución que puede ser usado por

14

Arquitectura del .NET FrameworkCommon Language Specification. Lenguajes compatibles

AdaAPL

Haskell (Utrecht U.)JavaScript

Basic (Visual Basic)C#CC++DelphiJavaCOBOL

Lisplcc (MS Research Redmond)Mondrian (Utrecht)ML (MS Research Cambridge)Mercury (Melbourne U.) Oberon (Zurich University)Oz (Univ of Saarlandes)

Component Pascal(Queensland U Tech)ECMAScript (JScript)Eiffel (Monash U.)Fortran

PerlPrologPythonScheme (Northwestern U.)SmallTalk

CLR Hosting & Application Domains

Una aplicación .NET necesita una pieza de código llamada RuntimeHost para ejecutarsep j

El Runtime Host carga el Runtime (CLR) en un proceso, crea Application Domains dentro del proceso y carga y ejecuta el código del usuario dentro de esos Application Domains

CLRCLR Host

Código Gestionado

CLRAppDomain 1

Código Gestionado

AppDomain N

Page 15: 1. Introducción a la plataforma - sabia.tic.udc.essabia.tic.udc.es/docencia/is/old/2007-2008/docs/transparencias/01... · El CLR es un entorno de ejecución que puede ser usado por

15

CLR Hosting & Application Domains

Los Application Domains son procesos virtuales dentro del CLRSe ejecutan dentro de un proceso del Sistema OperativoUn proceso puede contener varios Application DomainsMás eficiente que múltiples procesos del SO

Todos los ensamblados que conforman una aplicación siempre son cargados en un Application Domain

Los Application Domains proporcionan un aislamiento entre aplicaciones, que garantiza:

Una aplicación pueda ser detenida independientemente del restoUna aplicación no pueda acceder directamente a código en ejecución de otra aplicaciónUn fallo en una aplicación no afecte al resto de aplicaciones

Funcionamiento: Resumen

Desarrollo EjecuciónDesarrollo(VisualStudio .NET)

Ejecución(Plataforma .NET)

Análisis y diseño

Código fuente

Compilador

Verificación

Compilación(JIT)

Código Nativop

Código MSIL(Ensamblado)

Código Nativo

Ejecución(CLR)

Page 16: 1. Introducción a la plataforma - sabia.tic.udc.essabia.tic.udc.es/docencia/is/old/2007-2008/docs/transparencias/01... · El CLR es un entorno de ejecución que puede ser usado por

16

Contenido

Introducción

NET F k.NET Framework

Acceso a datos con ADO .NET

Windows Forms

Aplicaciones Web: ASP.NET

Herramientas de desarrollo

Acceso a datos con ADO.NET

System.Data

OleDbSqlClient

OracleClientCommon

Odbc SqlTypes

System.XmlSerialization

XPathXSLT

Schema

Page 17: 1. Introducción a la plataforma - sabia.tic.udc.essabia.tic.udc.es/docencia/is/old/2007-2008/docs/transparencias/01... · El CLR es un entorno de ejecución que puede ser usado por

17

ADO.NET - Arquitectura

ADO.NET - DataSet

DataSet DataTableDataSet

DataTableDataTable

DataTable

DataRowDataRow

DataColumnDataColumn

RelationsRelations

DataRelationDataRelationXML SchemasXML Schemas

Page 18: 1. Introducción a la plataforma - sabia.tic.udc.essabia.tic.udc.es/docencia/is/old/2007-2008/docs/transparencias/01... · El CLR es un entorno de ejecución que puede ser usado por

18

Acceso a Bases de Datos Relacionales: Entorno Conectado

Los usuarios están constantemente conectados a la fuente de datos

Ventajas:Mayor seguridadMejor control de concurrenciaLos datos se mantienen actualizados

Desventajas:Se requiere una conexión constante (consume recursos del servidor)q ( )Escalabilidad limitada por cantidad de conexiones

Acceso a Bases de Datos Relacionales: Entorno Conectado

En un escenario conectado, los recursos se mantienen en el servidor hasta que la conexión se cierra

Pasos1) Abrir Conexión2) Ejecutar Comando3) Procesar Filas en DataReader

C d4) Cerrar DataReader

5) Cerrar Conexión

Page 19: 1. Introducción a la plataforma - sabia.tic.udc.essabia.tic.udc.es/docencia/is/old/2007-2008/docs/transparencias/01... · El CLR es un entorno de ejecución que puede ser usado por

19

Acceso a Bases de Datos Relacionales: Entorno Desconectado

Una parte de los datos del repositorio central se copia y modifica en forma local, para luego sincronizarse con éste

VentajasForma cómoda de trabajar, si los datos únicamente se necesitan para lectura

DesventajasLos datos no están sincronizadosSólo es válido para ciertos escenariosp

En un escenario desconectado, los recursos no se mantienen en el servidor mientras los datos se procesan

Acceso a Bases de Datos Relacionales: Entorno Desconectado

mientras los datos se procesan

Pasos1) Abrir Conexión2) Llenar DataSet mediante DataAdapter3) Cerrar Conexión4) Procesar DataSet5) Abrir Conexión6) Actualizar fuente de datos mediante

DataAdapter7) Cerrar Conexión

Page 20: 1. Introducción a la plataforma - sabia.tic.udc.essabia.tic.udc.es/docencia/is/old/2007-2008/docs/transparencias/01... · El CLR es un entorno de ejecución que puede ser usado por

20

Contenido

Introducción

NET F k.NET Framework

Acceso a datos con ADO .NET

Windows Forms

Aplicaciones Web: ASP.NET

Herramientas de desarrollo

Windows Forms

Una clase base común: ControlRepresenta un elemento de la interfaz gráfica

Resto de elementos derivan de ControlFormulario Windows (Form)Básicos (TextBox) y extendidos (DataGrid)

Funcionalidad encapsulada en propiedades y eventos

Page 21: 1. Introducción a la plataforma - sabia.tic.udc.essabia.tic.udc.es/docencia/is/old/2007-2008/docs/transparencias/01... · El CLR es un entorno de ejecución que puede ser usado por

21

System Windows Forms

Windows Forms

System.Drawing

System.Windows.FormsDesign ComponentModel

System.DrawingDrawing2DImaging

PrintingText

Contenido

Introducción

NET F k.NET Framework

Acceso a datos con ADO .NET

Windows Forms

Aplicaciones Web: ASP.NET

Herramientas de desarrollo

Page 22: 1. Introducción a la plataforma - sabia.tic.udc.essabia.tic.udc.es/docencia/is/old/2007-2008/docs/transparencias/01... · El CLR es un entorno de ejecución que puede ser usado por

22

Aplicaciones Web: ASP.NET

Versión para la plataforma .NET de la tecnología ASP (Active Server Pages)(Active Server Pages)

Tres partes muy diferenciadas:Web Forms

Server Controls

Web ServicesWeb Services

System.Web

Aplicaciones Web: ASP.NET

System.WebServices UI

HtmlControls

WebControls

Description

Discovery

Protocols

CachingConfiguration SessionState

Security

Protocols

Page 23: 1. Introducción a la plataforma - sabia.tic.udc.essabia.tic.udc.es/docencia/is/old/2007-2008/docs/transparencias/01... · El CLR es un entorno de ejecución que puede ser usado por

23

Arquitectura de aplicaciones Web con ASP.NET

VistaUI Pages

(.htm)Web Form

(.aspx)

Lógica Negocio

Graphic Files

( )

User Controls(.ascx)

Code-Behind File(.aspx.vb or .aspx.cs)

Proxy ADO.NET RCW

( p )

Datos

XML Web Services(.asmx)

.NET Objects

Data Source

COM+Services

COMObjects

Contenido

Introducción

NET F k.NET Framework

Acceso a datos con ADO .NET

Windows Forms

Aplicaciones Web: ASP.NET

Herramientas de desarrollo

Page 24: 1. Introducción a la plataforma - sabia.tic.udc.essabia.tic.udc.es/docencia/is/old/2007-2008/docs/transparencias/01... · El CLR es un entorno de ejecución que puede ser usado por

24

Testers

Herramientas de desarrollo: Visual Studio 2005

Part Timers

Profesionales

Consultores

Desarrolladores

Arquitectos

VB6 Devs

Novatos

Entusiastas

Estudiantes

Hobbyists

Part-Timers

Herramientas de desarrollo gratuitas

Visual Studio 2005 Express Editions

Diseñadas para estudiantes y principiantes

Hay varias ediciones, según el tipo de aplicación y el lenguaje

Características avanzadas, por ejemplo:RefactoringCode SnippetsDiseñadores WYSIWYGDepuradoresIntellisense

Page 25: 1. Introducción a la plataforma - sabia.tic.udc.essabia.tic.udc.es/docencia/is/old/2007-2008/docs/transparencias/01... · El CLR es un entorno de ejecución que puede ser usado por

25

SQL Server 2005 Express

La nueva versión de MSDE

Es gratuito

Preparado para trabajar integrado con .NET 2.0

Tamaño máximo de base: 4 Gb

Máximo conexiones concurrentes: no tiene

Incluye una interfaz de administración y un editor de consultas

Mayor integración con Visual Studio 2005

Recursos libres

Open Source Software in C#phttp://csharp-source.net/IDEsLibrerías, Fuentes, etc.

SharpDevelop. The Open Source Development Environment for .NET

http://www.icsharpcode.net/OpenSource/SD/Soporte:Soporte:

C# Visual Basic .NET

Page 26: 1. Introducción a la plataforma - sabia.tic.udc.essabia.tic.udc.es/docencia/is/old/2007-2008/docs/transparencias/01... · El CLR es un entorno de ejecución que puede ser usado por

26

Sharp Develop

Mono Project

http://www.mono-project.comhttp://www.mono project.com

IncluyeCLI: Common Language InfrastructureLibrería clases sobre CLRCompilador C#

Entornos ejecución:Linux, Unix, SolarisMacOS XWindows

Page 27: 1. Introducción a la plataforma - sabia.tic.udc.essabia.tic.udc.es/docencia/is/old/2007-2008/docs/transparencias/01... · El CLR es un entorno de ejecución que puede ser usado por

27

Mono develop

http://www.monodevelop.org