2.- introducción a la plataforma .net.v8sabia.tic.udc.es/docencia/is/old/2006-2007/docs/... · 1...
TRANSCRIPT
1
1. Introducción a la plataforma .NET
Integración de SistemasDiseño e implementación con .NET
ContenidoIntroducción
.NET Framework
Acceso a Bases de Datos con ADO .NET
Windows Forms
Aplicaciones Web: ASP.NET
Herramientas de desarrollo
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 no es un Servidor de Aplicaciones
¿Qué es .NET?
Plataforma de Desarrollo compuesta deEntorno de Ejecución (Runtime)
Bibliotecas de Funcionalidad (Class Library)
Lenguajes de Programación
Compiladores
Herramientas de Desarrollo (IDE & Tools)
Documentación y Guías de Arquitectura
3
Java & .NET: entornos de ejecución
JavaCódigo Java se compila a bytecodeBytecode originalmente orientado a la interpretaciónJava Virtual Machine (JVM) ejecuta bytecode
.NET FrameworkCódigo C#, VB .NET, C++, J#, etc. se compila a Microsoft Intermediate Language (MSIL)MSIL se compila a medida que se va necesitando durante la ejecución (Just-In-Time Compilation)
Se evita la sobrecarga de la interpretaciónión
¿Por qué surge?La programación Windows y el propio S.O. estaba alcanzando alto nivel de complejidad
Interfaces de los API’s del SO para los diferentes lenguajesMultitud de servicios duplicadosPocas posibilidades de reutilización del código
Infierno de las DLL Win32Problemas si dos aplicaciones usan misma librería, pero diferentes versiones
SOLUCION: Plataforma .NETMantiene compatibilidad hacia atrásHace posible interoperatividad entre lenguajesHace posible convivencia diferentes versiones de la misma librería
4
Línea del tiempo de .NETVisual Studio 6.0Visual BasicVBAVisual FoxProVBScriptC++J++JScriptASP
Visual Studio .NET 2003.NET Framework 1.1.NET Compact FrameworkJ#
Visual Studio “Orcas”.NET Framework “Orcas”.NET Compact Framework “Orcas”
2000 2001 2002 2003 2004 2005 2006 y más
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 .NETPlataforma de ejecución intermedia
Aplicaciones se compilan a lenguaje MSIL (Microsoft Intermediate Language)Código MSIL se ejecuta contra Entorno de Ejecución (Runtime)100% Orientada a Objetos ⇒ no existen tipos primitivos
Multi-lenguaje
Permite 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.)
Se integra fácilmente con aplicaciones existentes Desarrolladas en plataformas MicrosoftDesarrolladas en otras plataformas
5
Plataforma de ejecución intermedia
Entorno de Desarrollo
Mic
roso
ft .N
ET
Librerías de Funcionalidad
Lenguajes de Programación
Entorno de Ejecución
Sistema Operativo (Familia Windows)
Aplicación .NET
ContenidoIntroducción
.NET FrameworkArquitecturaCLRClass LibraryCLSCLICTSModelo de Ejecución
Acceso a Bases de Datos con ADO .NET
Windows Forms
Aplicaciones Web: ASP.NET
Herramientas de desarrollo
6
.NET FrameworkPaquete 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 y Windows XP SP2
¿Dónde instalar el .NET Framework?
.NET Compact Framework
*
*
AplicaciónMóvil
Aplicación de Consola
Aplicación Web
Aplicación de Escritorio
ServidorCliente
* Sólo si la aplicación es distribuida
7
ContenidoIntroducción
.NET FrameworkArquitecturaCLRClass LibraryCLSCLICTSModelo de Ejecución
Acceso a Bases de Datos con ADO .NET
Windows Forms
Aplicaciones Web: ASP.NET
Herramientas de desarrollo
Arquitectura del .NET Framework
Windows COM+ Services
Common Language Runtime
Base Class Library
ADO.NET y XML
ASP.NET Windows Forms
Common Language Specification
VB C++ C# J# …
.NET
Fra
mew
ork
Red
istr
ibut
able
.NE
T Fr
amew
ork
SD
K
.NET
Fra
mew
ork
Cla
ssLi
brar
y
8
Arquitecturas de ejecución de aplicaciones
ContenidoIntroducción
.NET FrameworkArquitecturaCLRClass LibraryCLSCLICTSModelo de Ejecución
Acceso a Bases de Datos con ADO .NET
Windows Forms
Aplicaciones Web: ASP.NET
Herramientas de desarrollo
9
CLR – Common Language RuntimeEl CLR es el motor de ejecución (Runtime) de .NET
CaracterísticasCompilación Just-In-Time (JIT) del MSIL a código nativoGestión automática de memoria (Garbage Collector)Gestión de errores consistente (Excepciones)
Cualquier error no gestionado es capturado por el CLR y no afecta a otras aplicaciones que se estén ejecutando
Ejecución basada en componentes (Assemblies o ensamblados)Gestión de Seguridad
Permite establecer políticas de seguridadMultithreading
Proporciona mecanismos de sincronización y acceso concurrente a recursos compartidos
CLR – Common Language Runtime
Class Loader
GC, Stack Walk, Code Manager
IL N
ativ
eC
ode
Com
pile
rs
Exe
cutio
nS
uppo
rt
Sec
urity
Base Classes
Com
mon
Lang
uage
Run
time
10
La Memoria y los Tipos de DatosEl CLR administra dos segmentos de memoria: Stack (Pila) y Heap(Montón)
Los tipos valor (i.e: enteros, caracteres, boleanos, etc.) se almacenan en el Stack
Los tipos referencia (i.e: strings, clases definidas por el usuario, etc.) se almacenan 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
¿Qué es un Assembly o Ensamblado?
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 .exe
Aplicación .NET se compone de uno o más Ensamblados
Ensamblados pueden ser privados (opción por defecto) o compartidos (se instalan en la Global AssemblyCache)
11
Ensamblados
Ensamblados .NET vs. COMUtilizando COM se deben registrar los módulos en el registro de Windows para que las aplicaciones los localicen
Con .NET los ensamblados privados no precisan de registro y basta con distribuirlos junto a la aplicación
Ventajas:Eliminación de problemas por conflicto de versiones (Infierno DLL)Dejan de existir posibles entradas huérfanas por una mala desinstalación en el registro
Ensamblados. Ubicación
Al ejecutar una aplicación, ¿dónde busca el Class Loader los ensamblados necesarios?
En el directorio de la aplicación, si son ensamblados privados
Buena opción si los ensamblados sólo serán utilizados por esa aplicación
En la Global Assembly Cache (GAC), si son ensamblados compartidos
12
Ensamblados. 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á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 gracias a la asociación de una clave pública RSA
Es posible distinguir entre versiones de un mismo ensamblado y éstas pueden convivir sin ningún conflicto
Cada aplicación utiliza la versión de la librería que necesite
Actualizaciones y desinstalaciones más simples
Ensamblados. Global Assembly Cache (GAC)
Panel de Control > Herramientas Administrativas > .NET Framework Configuration Administrative tool
13
Ensamblados. Global Assembly Cache (GAC)
Ensamblados - Metadata
Describe con detalle la estructura de un Ensamblado
Se genera automáticamente al compilar el Ensamblado y se almacena en su interior
MSIL + METADATA = Ensamblado
Es utilizada por el CLR al cargar y ejecutar el Ensamblado
Se puede convertir a un Schema XML y se puede leer desde un Schema XML
14
Ensamblados - Metadata
Metadata
Código CompiladoMSIL
Recursos
MiBiblioteca.DLL
Descripción de TiposClasesClases BaseInterfaces ImplementadasAtributos de las ClasesMétodos de las Clases
NombreVersiónCultura[Clave Pública]
Manifiesto del Ensamblado
Dependencias EnsambladosPermisos de SeguridadTipos Externos
Ensamblados - Metadata
Herramienta MSIL Dissasembler, incluida en el .NET Framework SDK
15
ContenidoIntroducción
.NET FrameworkArquitecturaCLRClass LibraryCLSCLICTSModelo de Ejecución
Acceso a Bases de Datos con ADO .NET
Windows Forms
Aplicaciones Web: ASP.NET
Herramientas de desarrollo
Arquitectura del .NET Framework
Windows COM+ Services
Common Language Runtime
Base Class Library
ADO.NET y XML
ASP.NET Windows Forms
Common Language Specification
VB C++ C# J# …
.NET
Fra
mew
ork
Red
istr
ibut
able
.NE
T Fr
amew
ork
SD
K
.NET
Fra
mew
ork
Cla
ssLi
brar
y
16
.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#, VB .NET, etc.)
Es extensible y totalmente orientada a objetos
.NET Framework Class Library
System
System.Data System.Xml
System.Web
GlobalizationGlobalization
DiagnosticsDiagnostics
ConfigurationConfiguration
CollectionsCollections
ResourcesResources
ReflectionReflection
NetNet
IOIO
ThreadingThreading
TextText
ServiceProcessServiceProcess
SecuritySecurity
CommonCommon
OLE DBOLE DB
SqlClientSqlClient
ODBCODBC
XPathXPath
XSLTXSLT
RuntimeRuntimeInteropServicesInteropServices
RemotingRemoting
SerializationSerialization
SerializationSerialization
ConfigurationConfiguration SessionStateSessionState
CachingCaching SecuritySecurity
ServicesServicesDescriptionDescription
DiscoveryDiscovery
ProtocolsProtocols
UIUIHtmlControlsHtmlControls
WebControlsWebControls
System.Drawing
ImagingImaging
Drawing2DDrawing2D
TextText
PrintingPrinting
System.Windows.FormsDesignDesign ComponentModelComponentModel
17
ContenidoIntroducción
.NET FrameworkArquitecturaCLRClass LibraryCLSCLICTSModelo de Ejecución
Acceso a Bases de Datos con ADO .NET
Windows Forms
Aplicaciones Web: ASP.NET
Herramientas de desarrollo
Arquitectura del .NET Framework
Windows COM+ Services
Common Language Runtime
Base Class Library
ADO.NET y XML
ASP.NET Windows Forms
Common Language Specification
VB C++ C# J# …
.NET
Fra
mew
ork
Red
istr
ibut
able
.NE
T Fr
amew
ork
SD
K
.NET
Fra
mew
ork
Cla
ssLi
brar
y
18
Common Language Specification (CLS)
Especificación que estandariza una serie de características soportadas por el CLR
Contrato entre diseñadores de lenguajes de programación y autores de librerías
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
Ej.: aplicación VB .NET puede incorporar nuevas partes escritas en C#
Microsoft provee implementaciones de 4 lenguajes compatibles conCLS, junto con sus compiladores
Microsoft Visual C# .NETMicrosoft Visual Basic .NETMicrosoft Visual J# .NETMicrosoft Visual C++ .NET
CLS - Elección del lenguaje.NET posee un único runtime (el CLR) y un único conjunto de librerías para todos los lenguajes
Todos los lenguajes proporcionados por Microsoft tienen la misma potencia y capacidad de acceso a los recursos y servicios que expone el .NET Framework
El lenguaje a utilizar, en general, dependerá de la experiencia previa con otros lenguajes o de gustos personales
Si se conoce Java, Delphi, C++, etc. C#Si se conoce Visual Basic o VBScript VB .NET
Los tipos de aplicaciones .NET son independientes del lenguaje que se elija
19
CLS – Listado de lenguajes compatibles
AdaAPLBasic (Visual Basic)C#CC++DelphiJavaCOBOLComponent Pascal(Queensland U Tech)ECMAScript (JScript)Eiffel (Monash U.)Fortran
Haskell (Utrecht U.)JavaScriptLisplcc (MS Research Redmond)Mondrian (Utrecht)ML (MS Research Cambridge)Mercury (Melbourne U.) Oberon (Zurich University)Oz (Univ of Saarlandes)PerlPrologPythonScheme (Northwestern U.)SmallTalk
ContenidoIntroducción
.NET FrameworkArquitecturaCLRClass LibraryCLSCLICTSModelo de Ejecución
Acceso a Bases de Datos con ADO .NET
Windows Forms
Aplicaciones Web: ASP.NET
Herramientas de desarrollo
20
Common Language Infrastructure (CLI)Especificación que describe un entorno para la ejecución de aplicaciones, cuyos objetivos principales son:
Permitir que aplicaciones escritas en distintos lenguajes de alto nivel puedan ejecutarse en múltiples plataformas, sin necesidad de recompilarExponer todas las entidades de programación a través de un único sistema unificado de tipos (CTS)Proveer un conjunto de Librerías Básicas (BCL)
Patrocinada por Microsoft, Intel, HP, IBM y Fujitsu, entre otras
Estandarizada por ECMA en 2001 (ECMA-335) y ratificada por ISO en 2003 (ISO/IEC 23271:2003)
El .NET Framework y el .NET Compact Framework son implementaciones de la especificación CLI
Sub-Especificaciones del CLILenguajes de alto nivel
Se ajustan a las reglas de la …
CLS (Common Language Specification)Y utilizan las clases de la …
BCL (Base Class Library)Cuyos tipos básicos forman el …
CTS (Common Type System)Y se ejecutan bajo el control de y usan los servicios del …
CLR (Common Language Runtime)Que está acoplado al y utiliza los servicios del …
Sistema Operativo
21
ContenidoIntroducción
.NET FrameworkArquitecturaCLRClass LibraryCLSCLICTSModelo de Ejecución
Acceso a Bases de Datos con ADO .NET
Windows Forms
Aplicaciones Web: ASP.NET
Herramientas de desarrollo
Common Type System (CTS)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 de valor y de referencia
22
Common Type System (CTS)
Uso del CTS (Common Type System)Recoge la definición de todos los tipos y sus operaciones de todos los lenguajes
Para la cooperación entre lenguajes se debe ajustar al CLS
CLS (Common Language Specification), subconjunto de la CTS común a todos los lenguajes
Common Type System (CTS)CTS (Common Type System) y CLS (CommonLanguage Specitication) permiten generar un mismo código MSIL, independientemente del lenguaje de alto nivel utilizado
Gracias a CLS se puede utilizar código en otro lenguaje como si fuera del mismo.
Ej. Heredar desde C# una clase implementada en VisualBasic.NET
Una librería puede internamente no cumplir con CLS, pero si de cara al exterior, los tipos expuestos lo cumplen, se puede considerar que lo cumple
23
ContenidoIntroducción
.NET FrameworkArquitecturaCLRClass LibraryCLSCLICTSModelo de Ejecución
Acceso a Bases de Datos con ADO .NET
Windows Forms
Aplicaciones Web: ASP.NET
Herramientas de desarrollo
Modelo de ejecución del CLR
VB.NETCódigoFuente
Compilador VB.NET
C++ .NETC#
Sistema Operativo (Windows)
Common Language Runtime
Compilador JIT
Código Nativo
CódigoGestionado
ComponenteNo Gestionado
CompiladorC#
CompiladorC++ .NET
EnsambladoCódigo MSIL
EnsambladoCódigo MSIL
EnsambladoCódigo MSIL
24
Modelo de ejecución del CLR
Debug EngineDebug Engine
CompiladorCompiladorJITJIT
EnsambladoEnsambladoen la en la mmááquinaquina
destinodestinoEnsambladoEnsamblado
Desarrollo Instalación
InstalaciInstalacióónn
Ejecución
AssemblyAssemblyLoaderLoaderSeguridadSeguridadClass Class
LoaderLoader
.exe .exe NativoNativo++
TablaTabla GC GC
Code Code ManagerManager
Garbage CollectorGarbage Collector
ControladorControlador ExcepcionesExcepciones
SoporteSoporte MultiThreadMultiThread
COM InteropCOM Interop
Policy<?xml version="1.0" encoding="utf-8" ?><configuration>
<mscorlib><security>
<policy><PolicyLevel version="1">
<CodeGroup class="UnionCodeGroup"version="1"PermissionSetName="Nothing"Name="All_Code"Description="Code group
grants no permissions and forms the root of the code group tree.">
<IMembershipCondition class="AllMembershipCondition"
version="1"/><CodeGroup class="UnionCodeGroup"
version="1"PermissionSetName="FullTrust"
Compilación y Ejecución
Compilación Just In Time (JIT)Compila el código al vuelo según se necesiteExiste un compilador JIT para cada dispositivo y/o sistemaCódigo una vez compilado, no se vuelve a compilarNo se compila todo el código almacenado en memoria, sino sólo el que se ejecutaExiste la posibilidad de hacer código nativo, en el caso de que la aplicación solo vaya a ser ejecutada en un entorno determinado (dispositivo, sistema, etc.).
Llamados pre-jitter pueden ser ejecutados desde la línea de comandos
25
Compilación y Ejecución
Compilación JIT (cont.)Dos tipos de compiladores JIT
Econo JITMuy rápido, pero código generado no optimizadoEl código puede descartarse y regenerarse
Estándar compiler:Más lento, pero código optimizadoIncluye verificación código MSIL
Application DomainsProcesos virtuales dentro del CLR
Se ejecutan dentro de un proceso del Sistema OperativoUn proceso puede contener varios Application DomainsMás eficiente que múltiples procesos del SOMás eficiente en el intercambio de contexto de ejecución
Todos los ensamblados que conforman una aplicación siempre son cargados en un Application Domain
Aislamiento entre aplicaciones garantizaUna 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
26
Application Domains - CLR Host
Código Gestionado
CLRCLR Host
AppDomain 1
Código Gestionado
AppDomain N
Funcionamiento: Resumen
Desarrollo(VisualStudio .NET)
Ejecución(Plataforma .NET)
Análisis y diseño
Código fuente
Compilador
Código MSIL(Ensamblado)
Verificación
Compilación(JIT)
Código Nativo
Ejecución(CLR)
27
ContenidoIntroducción
.NET Framework
Acceso a Bases de Datos con ADO .NET
Windows Forms
Aplicaciones Web: ASP.NET
Herramientas de desarrollo
Acceso a Datos: ADO .NET
System.Data
OleDbSqlClient
OracleClientCommon
Odbc SqlTypes
System.XmlSerialization
XPathXSLT
Schema
28
ADO .NET - Arquitectura
ADO .NET - DataSet
DataSet
DataTableDataTable
DataTable
DataRowDataRow
DataColumnDataColumn
RelationsRelations
DataRelationDataRelationXML SchemasXML Schemas
29
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)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 DataReader4) Cerrar DataReader5) Cerrar Conexión
30
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 escenarios
En un escenario desconectado, los recursos no se mantienen en el servidor 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
Acceso a Bases de Datos Relacionales: Entorno Desconectado
31
ContenidoIntroducción
.NET Framework
Acceso a Bases de Datos con ADO .NET
Windows Forms
Aplicaciones Web: ASP.NET
Herramientas de desarrollo
Windows Forms
Una clase base común: Control
Representa 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
Eventos accesibles mediante delegates
32
System.DrawingDrawing2DImaging
PrintingText
System.Windows.FormsDesign ComponentModel
Windows Forms
ContenidoIntroducción
.NET Framework
Acceso a Bases de Datos con ADO .NET
Windows Forms
Aplicaciones Web: ASP.NET
Herramientas de desarrollo
33
Aplicaciones Web: ASP.NET
Versión para la plataforma .NET de la tecnología ASP (Active Server Pages)
Tres partes muy diferenciadas:Web Forms
Server Controls
Web Services
System.Web
CachingConfiguration
Services UI
SessionState
HtmlControls
WebControls
Description
Discovery
Security
Protocols
Aplicaciones Web: ASP.NET
34
Arquitectura de aplicaciones Web con ASP.NET
VistaVista
Lógica NegocioLógica Negocio
DatosDatos
Graphic Files
Graphic Files
UI Pages(.htm)
UI Pages(.htm)
XML Web Services(.asmx)
XML Web Services(.asmx)
User Controls(.ascx)
User Controls(.ascx)
Code-Behind File(.aspx.vb or .aspx.cs)
Code-Behind File(.aspx.vb or .aspx.cs)
ProxyProxy ADO.NETADO.NET
.NET Objects
.NET Objects
Data Source
COM+ServicesCOM+
ServicesCOM
ObjectsCOM
Objects
RCWRCW
Web Form (.aspx)
Web Form (.aspx)
ContenidoIntroducción
.NET Framework
Acceso a Bases de Datos con ADO .NET
Windows Forms
Aplicaciones Web: ASP.NET
Herramientas de desarrollo
35
Novatos
Entusiastas
Estudiantes
Hobbyists
Part-Timers
Profesionales
Consultores
Desarrolladores
Arquitectos
Testers
VB6 Devs
Herramientas de desarrollo: Visual Studio 2005
Herramientas de desarrollo gratuitas
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
Visual Studio 2005 Express Editions
36
SQL Server 2005 ExpressLa nueva versión de MSDE
Es gratuito
Preparado para trabajar integrado con .NET 2.0
Tamaño máximo de base: 4 Gb
Max. Conexiones Concurrentes: no tiene
Incluye una interfaz de administración y un editor de consultas
Mayor integración con Visual Studio 2005
Recursos libres
http://csharp-source.net/IDEsLibrerías, Fuentes, etc.
SharpDevelophttp://www.icsharpcode.net/OpenSource/SD/Soporte:
C#Visual Basic .NET
37
Sharp Develop
Mono Project
http://www.mono-project.com
IncluyeCLI: Common Language InfrastructureLibrería clases sobre CLRCompilador C#
Entornos ejecución:Linux, Unix, SolarisMacOS XWindows
38
Mono develop
http://www.monodevelop.org