Inicio Apuntes FPApuntes DAW Conceptos sobre Frameworks

Conceptos sobre Frameworks

Publicado por entreunosyceros
Publicado el: Última actualización:

AVISO: Esta entrada tiene más de dos años desde su publicación. Es posible que el contenido esté desactualizado.

Frameworkd

 ¿Qué es un framework?

La palabra inglesa «framework» (marco de trabajo) define, de manera general, un conjunto estándar de conceptos, prácticas y criterios para enfocar un tipo de problemática particular que sirve como referencia para enfrentar y resolver nuevos problemas similares.

En el desarrollo de software, un framework o infraestructura digital, es una estructura conceptual y tecnológica con un soporte definido, normalmente con módulos de software concretos.

Utilizando esta base, otro proyecto de software puede ser organizado de manera más sencilla y desarrollado más eficientemente. Es habitual que estos marcos de trabajo incluyan soporte de programas, bibliotecas y un lenguaje interpretado, entre otras herramientas, con el fin de ayudar a desarrollar y unir los diferentes componentes de un proyecto de desarrollo de software.

Resumiendo todos estos conceptos podemos decir que un framework es un esquema para el desarrollo y/o la implementación de una aplicación. Esta definición es quizás muy genérica, pero un framework también puede lo puede ser.

Los frameworks pueden ir desde el caso del paradigma MVC (Controlador => Modelo => Vista) en los que apenas se puede separar en la aplicación la gestión de los datos, las operaciones y la presentación, hasta el otro extremo en el que otros frameworks pueden llegar al detalle de definir los nombres de ficheros, su estructura, las convenciones de programación, etc …

Los frameworks no están ligados necesariamente a un lenguaje concreto, aun que así sea en muchas ocasiones.

Es posible que el Framework defina una estructura para una aplicación completa o bien sólo se centre en un aspecto de ella. Ruby on Rails ofrece un marco para el desarrollo completo de una aplicación web, mientras que JavaServer Faces está más orientado a la interfaz de usuario.

Introducción

Un framework está diseñado con la intención de facilitar el desarrollo de software, permitiendo a los diseñadores y programadores pasar más tiempo identificando requerimientos de software que tratando con los aburridos detalles de bajo nivel de proveer un sistema funcional. Algunas ventajas del uso de frameworks que vienen dadas por utilizar un estándar, podrían ser;

  • El programador no necesita plantearse una estructura global de la aplicación, sino que el Framework le proporciona un esqueleto o plantilla que hay que “rellenar”.

  • Facilita la colaboración sobre todo a la hora de entender el código realizado por otro programador. Todo lo que sea definir y estandarizar va a ahorrar tiempo y trabajo a los desarrollos colaborativos.

  • Es más fácil encontrar herramientas (utilidades, librerías) adaptadas al Framework concreto para facilitar el desarrollo.

Sin embargo, una queja común acerca de que el uso de Frameworks es que añaden código innecesario y que la superioridad de Frameworks competitivos y complementarios implican que parte del tiempo que se pasaba programando y diseñando ahora se gasta en aprender a usar los Frameworks. Esto produce usuarios (quizás) mejor formados, pero dilata demasiado el tiempo de desarrollo de las aplicaciones en algunos casos.

A la hora de utilizar un Framework se puede buscar información sobre los existentes para las diferentes plataformas y lenguajes. Quizás uno de sus principales problemas es que existan demasiadas posibilidades a la hora de realizar una elección, pero esta es una consecuencia de los estándares. Sin embargo, es imprescindible que la elección del Framework correcto venga marcada por:

  1. El tipo de aplicación a desarrollar.

  2. El lenguaje de programación y otras tecnologías concretas; bases de datos, sistema operativo, etc .. que se vayan o puedan utilizar en el proyecto.

¿Cómo funciona un framework?

Como ya he explicado en las anteriores líneas, existen multitud de Frameworks. Todo tienen un funcionamiento general bastante parecido, aun que después se diferencien en ciertas cosas según el tipo de propósito con el que hayan sido desarrollados.

– Definición .Net Framework:

El Microsoft .NET Framework, es un componente de software que puede ser o es incluido en los sistemas operativos Microsoft Windows. Provee soluciones pre-codificadas para requerimientos comunes de los programas y gestiona la ejecución de programas escritos específicamente para este Framework.

Microsoft busca que todas las aplicaciones creadas para la plataforma Windows, sean basadas en el .NET Framework. El objetivo de este Framework es crear un marco de desarrollo de software sencillo, reduciendo las vulnerabilidades y aumentando la seguridad de los programas desarrollados.

Las soluciones pre-codificadas que forman la biblioteca .NET, cubren un gran rango de necesidades de la programación de programas. Los programadores las emplean y combinan con sus propios códigos en sus programas. El framework incluye soluciones en áreas como: la interfaz de usuario, acceso a datos, conectividad a bases de datos, criptografía, desarrollo de aplicaciones web, algoritmos numéricos y comunicación de redes.

Con esta plataforma Microsoft se mete de lleno en el campo de los servicios web y establece al XML como norma en el transporte de información en sus productos y lo promociona como tal en los sistemas desarrollados utilizando sus herramientas.

– Información general acerca de .Net Framework:

Este Framework es un componente integral de Windows que admite la compilación y la ejecución de la siguiente generación de aplicaciones y servicios web XML. El diseño de .Net Framework está enfocado a cumplir los siguientes objetivos;

  • Proporciona un entorno coherente de programación orientada a objetos, en el que el código de los objetos se puede almacenar de forma local, ejecutar de forma local pero distribuida por internet o simplemente ejecutar de forma remota.

  • Proporcionar un entorno de ejecución de código que reduzca lo máximo posible la implementación de software y los conflicto de versiones.

  • Ofrecer un entorno de ejecución de código que promueva la ejecución segura del mismo, incluso del creado por terceras personas desconocidas que no son de plena confianza.

  • Proporciona un entorno de ejecución de código que elimine los problemas de rendimiento de los entorno en los que se utilizan scripts o intérpretes de comandos.

  • Ofrecer al programador una experiencia coherente entre tipo de aplicaciones muy diferentes, como las basadas en Windows o en la Web.

  • Basar toda la comunicación en estándares del sector para asegurar que el código de .Net Framework se puede integrar con otros tipos de código.

– Estructura general del Framework .NET:

Net Framework contiene tres componentes principales: Common Language Runtime (CLR), Common Language Specification (CLS) y la biblioteca de clases de .Net Framework.

Common Languaje Runtime es el fundamento de .Net Framework. Es el motor en tiempo de ejecución que se puede considerar como la pieza central que administra el código en tiempo de ejecución y proporciona servicios centrales, como la administración de memoria, la administración de subprocesos y la comunicación remota, al tiempo que aplica una seguridad estricta a los tipos y otras formas de especificación del código que promueven su seguridad y solidez.

El concepto de administración de código es un principio básico del motor en tiempo de ejecución. El código destinado al motor en tiempo de ejecución se denomina código administrado, a diferencia del resto de código, que se conoce como código no administrado.

La biblioteca de clases, es otro componente principal del .Net Framework ya que es una colección completa orientada a objetos de tipos reutilizables que se pueden emplear para desarrollar aplicaciones que abarcan desde las tradicionales herramientas de la interfaz gráfica del usuario (GUI) o de línea de comandos hasta las aplicaciones basadas en ASP.NET, como formularios Web Forms y los servicios web XML.

.Net Framework puede hospedarse como componentes no administrados que cargan Common Languaje Runtime en sus procesos e inician la ejecución de código administrado, con lo que se crea un entorno de software en el que se pueden utilizar características administradas y no administradas. En .Net Framework no sólo se ofrecen varios hosts de motor en tiempo de ejecución, sino que también se admite el desarrollo de estos hosts por parte de terceras personas.

En la siguiente imagen se muestra la relación de Common Languaje Runtime y la biblioteca de clases con las aplicaciones y el sistema en su conjunto. En la ilustración se representa igualmente cómo funciona el código administrado dentro de una arquitectura mayor.

En las siguientes líneas trataré de describir con más detalle los componentes y características principales de .Net Framework.

– Características de Common Language Runtime (CLR):

Common Language Runtime (CLR) administra la memoria, ejecución de subprocesos, ejecución de código, comprobación de la seguridad del código, compilación y demás servicios del sistema. Estas características son esenciales en el código administrado que se ejecuta en Common Language Runtime.

Refiriéndonos a la seguridad, los componentes administrados reciben diferentes grados de confianza, estos irán en función de una serie de factores entre los que se incluye su origen (como internet, redes empresariales o equipos locales). Esto significa que un componente administrado puede ser capaz o no de realizar operaciones de acceso a archivos, operaciones de acceso al Registro y otras funciones dedicadas, incluso si está siendo utilizando en la misma aplicación activa.

El motor en tiempo de ejecución impone la seguridad de acceso al código. Un ejemplo de esto podrían ser los usuarios que confían en que un archivo ejecutable incrustado en una página web que puede reproducir una animación en la pantalla o simplemente reproducir una canción, pero dicho usuario no puede tener acceso a los datos del archivo, sistemas de archivos o red. Por esto, las características de seguridad del motor en tiempo de ejecución permiten que el software legítimo implementado en internet sea muy variado.

El motor en tiempo de ejecución impone la solidez del código mediante la implementación de una infraestructura estricta de comprobación de tipos y código denominada CTS (Common Type System, Sistema de Tipos Común).

El CTS garantiza que todo el código administrado sea autodescriptivo. Los diversos compiladores de lenguaje de Microsoft y de otros fabricantes generan código administrado que se atienen a las características especificadas por el CTS. Esto significa que el código administrado puede consumir otros tipos de instancias administradas, al tiempo que exige fidelidad y seguridad en los tipos.

Además, el entorno administrado del motor en tiempo de ejecución elimina muchos problemas de software comunes como puede ser cuando el motor en tiempo de ejecución controla automáticamente la disposición de los objetos, administra las referencias a éstos y los libera cuando ya no se utilizan. Esta administración automática de la memoria soluciona los dos errores más comunes de las aplicaciones; la pérdida de memoria y las referencias no válidas a la memoria.

Los motores en tiempo de ejecución aumentan las productividad del programador ya que los desarrolladores pueden crear aplicaciones en el lenguaje que prefieran y seguir sacando el máximo provecho al motor en tiempo de ejecución, la biblioteca de clases y los componentes escritos en otros lenguajes por otros desarrolladores.

Los compiladores de lenguajes que se destinan a .Net Framework hacen que las características de este Framework estén disponibles para el código existente, escrito en dicho lenguaje. Esto facilita el proceso de migración entre aplicaciones.

A pesar de que el motor en tiempo de ejecución está diseñado para el software que vendrá, también es compatible con el software actual y el software antiguo. La operatividad entre el código administrado y no administrado permite que los desarrolladores continúen utilizando los componentes COM y las DLL que necesiten.

El motor en tiempo de ejecución está diseñado para mejorar el rendimiento de las aplicaciones. Aun que Common Languaje Runtime proporciona muchos servicios estándar de motor en tiempo de ejecución, el código administado nunca se interpreta.

Una característica denominada compilación JIT (Just In Time) permite ejecutar todo el código administrado en el lenguaje máquina nativo del sistema en el que se ejecuta dicho código. Mientras tanto, el administrador de memoria evita que esta se pueda fragmentar al tiempo que aumenta la zona de referencia de la memoria para mejorar aún más el rendimiento.

El Common Language Runtime (CLR) provee lo que se llama código administrado, es decir, un entorno que provee servicios automáticos al código que se ejecuta. Hay diferentes tipos como pueden ser:

  • Cargador de Clases: Cargar en memoria las clases.

  • Compilador MSIL a nativo: Transforma código intermedio de alto nivel del hardware que lo ejecuta a código de máquina del dispositivo que lo ejecuta.

  • Administrador de Código: Coordina toda la operación de los distintos subsistemas del Common Language Runtime.

  • Recolector de Basura: Elimina de memoria objetos no utilizados de manera automática o manual.

  • Motor de Seguridad: Es el encargado de administrar la seguridad del código que se ejecuta.

  • Motor de Depuración: Permite hacer un seguimiento de la ejecución del código aún cuando se utilicen lenguajes distintos.

  • Verificador de Tipos: Controla que las variables de la aplicación usen el área de memoria que tienen asignado.

  • Administrador de Excepciones: Maneja los errores que se producen durante la ejecución del código.

  • Soporte de multiproceso (threads): Permite ejecutar código en forma paralela.

  • Empaquetador de COM: Coordina la comunicación con los componentes COM para que puedan ser usados por el .NET Framework.

  • Soporte de la Biblioteca de Clases Base: Interfase con las clases base del .NET Framework.

Características de Common Language Specification (CLS) y lenguajes .NET

El Common Language Specification (CLS) es el encargado de definir los mínimos estándares que deben cumplir los lenguajes y desarrolladores, para que sus componentes y aplicaciones puedan ser utilizados con otros lenguajes compatibles con .NET.

El CLS permite a los desarrolladores crear aplicaciones en múltiples lenguajes con la seguridad de que no habrá problema alguno al momento de enfrentarse a los diferentes problemas, o al integrar los diferentes lenguajes.

El .NET Framework incluye cinco lenguajes de programación: Visual Basic .NET, Visual C++ .NET, C#, J# y JScript. No obstante, permite que otros lenguajes desarrollados por terceros puedan acoplarse fácilmente a la plataforma, y ya existe una gran variedad de ellos, entre los cuales podemos encontrar versiones de COBOL, FORTRAN, Ada, Pascal, Haskell, Eiffel, Delphi, etc.

El CLS tiene varias finalidades que son:

Independencia del lenguaje : El desarrollador ya no se ve obligado a programar en un lenguaje que no es de su agrado porque no provee funcionalidades las cuales no tiene su lenguaje preferido, porque .Net proporciona funcionalidades de modo independiente del lenguaje. Lo que quiere decir que podemos escribir programas en el lenguaje que más nos guste.

Integración entre Lenguajes: Ahora es posible desarrollar programas diferentes lenguajes e integrarse unos con otros siempre y cuando cumplan con las especificaciones del lenguaje.

Apertura a nuevos lenguajes: es posible agregar a .NET Framework nuevos lenguajes no solo los creados por Microsoft sino por otros fabricantes.

– Biblioteca de clases de .Net FrameWork:

La biblioteca de clases de .Net Framework es una colección de tipos reutilizables que se integran estrechamente con Common Language Runtime. Esta biblioteca está orientada a objetos, esto proporciona tipos en los que su propio código administrado puede derivar en funciones. Esto ocasiona que los tipos de .Net Framework sean sencillos de utilizar y reduce el tiempo asociado con el aprendizaje de las nuevas características de .Net Framework. Los componentes de terceros se pueden integrar sin dificultades con las clases de .Net Framework.

Las clases de colección de .Net Framework implementan un conjunto de interfaces que puede usar para desarrollar sus propias colecciones de clases, las cuales se combinarán con las clases de .Net Framework de manera sencilla.

Como en cualquier biblioteca de clases orientada a objetos, los tipos de .Net Framework permiten realizar diferentes tareas de programación comunes, como son; la administración de cadenas, recolección de datos, conectividad de bases de datos y acceso a archivos.

Además de estas tareas habituales, la biblioteca de clases incluye tipos adecuados para diversos escenarios de desarrollo especializados. Por ejemplo, puede utilizarse .Net Framework para desarrollar los siguientes tipos de aplicaciones y servicios:

  • Aplicaciones de consola.

  • Aplicaciones GUI de Windows (Windows Forms).

  • Aplicaciones de Windows Presentation Foundation (WPF).

  • Aplicaciones de ASP.NET.

  • Servicios de Windows.

  • Aplicaciones orientadas a servicios utilizando Windows Communication Foundation (WCF).

  • Aplicaciones habilitadas para el flujo de trabajo utilizando Windows WorkFlow Foundation (WF).

Estructura del framework .NET

La biblioteca de clases de .NET Framework es una biblioteca de clases, interfaces y tipos de valor que se incluye en Microsoft .NET Framework. Esta biblioteca brinda acceso a la funcionalidad del sistema y es la base sobre la que se crean las aplicaciones, los componentes y los controles de .NET Framework. La biblioteca de clases de .NET Framework proporciona los siguientes espacios de nombres.

– Espacios de nombres de las bibliotecas de . NET framework:

– Microsoft.Aspnet.Snapin

Contiene clases que permiten a la consola de administración de Microsoft® Internet Information Server configurar aplicaciones ASP.NET.

– Microsoft.Build.BuildEngine

Contiene las clases que representan el motor de MSBuild.

– Microsoft.Build.Framework

Contiene clases que constituyen las tareas, los registradores y los eventos de MSBuild.

– Microsoft.Build.Tasks

Contiene la implementación de todas las tareas que se suministran con MSBuild.

– Microsoft.Build.Tasks.Deployment.Bootstrapper

Contiene clases utilizadas internamente por MSBuild.

– Microsoft.Build.Tasks.Deployment.ManifestUtilities

Contiene clases utilizadas internamente por MSBuild.

– Microsoft.Build.Utilities

Proporciona clases auxiliares que puede utilizar para crear sus propios registradores y tareas de MSBuild.

– Microsoft.CSharp

Contiene clases para compilar y generar código mediante el lenguaje C#.

– Microsoft.JScript

Contiene clases que admiten la compilación y generación de código mediante el lenguaje JScript.

– Microsoft.SqlServer.Server

Contiene clases que son específicas de la integración del componente Common Language Runtime (CLR) de Microsoft .NET Framework en Microsoft SQL Server y en el entorno de ejecución de procesos del motor de bases de datos de SQL Server.

– Microsoft.VisualBasic

Contiene clases que admiten la compilación y generación de código mediante el lenguaje Visual Basic.

– Microsoft.VisualBasic.ApplicationServices

Contiene tipos que admiten el modelo de aplicaciones de Visual Basic y proporcionan acceso a la información de la aplicación.

– Microsoft.VisualBasic.CompilerServices

Contiene sólo los tipos de uso interno que admiten el compilador de Visual Basic. 

– Microsoft.VisualBasic.Devices

Contiene los tipos que admiten los objetos My relacionados con los dispositivos de Visual Basic.

– Microsoft.VisualBasic.FileIO

Contiene los tipos que admiten el objeto del sistema de archivos (FSO) My de Visual Basic.

– Microsoft.VisualBasic.Logging

Contiene los tipos que admiten los objetos de registro My de Visual Basic y proporciona un agente de escucha de registro simple que dirige los datos generados a un archivo.

– Microsoft.VisualBasic.MyServices

Contiene tipos que admiten My en Visual Basic.

– Microsoft.VisualBasic.MyServices.Internal

Contiene los tipos de sólo uso interno que admiten My en Visual Basic.

– Microsoft.Vsa

Contiene interfaces que permiten integrar secuencias de comandos para los motores de secuencias de comandos de .NET Framework en las aplicaciones, y compilar y ejecutar código en tiempo de ejecución.

– Microsoft.Win32

Proporciona dos tipos de clases: las que controlan los eventos desencadenados por el sistema operativo y las que manipulan el Registro del sistema.

– Microsoft.Win32.SafeHandles

Contiene clases que son derivaciones abstractas de las clases de identificador seguras y que proporcionan funcionalidad común y admiten los identificadores de archivos y del sistema operativo.

– Microsoft.WindowsCE.Forms

Contiene clases para el desarrollo de aplicaciones de Windows Forms para Pocket PC y Smartphone utilizando .NET Compact Framework.

– Microsoft.WindowsMobile.DirectX

Contiene clases para el desarrollo de aplicaciones DirectX en dispositivos con .NET Compact Framework. Requiere una versión futura de Windows Mobile que ejecute las aplicaciones.

– Microsoft.WindowsMobile.DirectX.Direct3D

Contiene clases para el desarrollo de las aplicaciones Direct3D en dispositivos con .NET Compact Framework. Requiere una versión futura de Windows Mobile que ejecute las aplicaciones.

– Sistema

Contiene clases fundamentales y clases base que definen los valores y tipos de datos de referencia, eventos y controladores de eventos, interfaces, atributos y excepciones de procesamiento comúnmente utilizados. Otras clases proporcionan servicios para convertir tipos de datos, manipular parámetros de métodos, realizar cálculos matemáticos, invocar programas remotos y locales, administrar el entorno de aplicaciones y supervisar aplicaciones administradas y no administradas.

– System.CodeDom

Contiene clases que se pueden utilizar para representar los elementos y la estructura de un documento de código fuente. Estos elementos pueden usarse para modelar la estructura de un documento de código fuente que se puede utilizar como código fuente en un lenguaje compatible mediante la funcionalidad que proporciona el espacio de nombres System.CodeDom.Compiler.

– System.CodeDom.Compiler

Contiene tipos para administrar la generación y compilación de código fuente en los lenguajes de programación compatibles. Cada generador de código puede generar código fuente en un lenguaje de programación determinado basado en la estructura de los modelos de código fuente CodeDOM (Code Document Object Model) que se componen de elementos proporcionados por el espacio de nombres System.CodeDom.

– System.Collections

Contiene interfaces y clases que definen diversas colecciones de objetos, tales como listas, colas, matrices de bits, tablas hash y diccionarios.

– System.Collections.Generic

Contiene interfaces y clases que definen colecciones genéricas, que permitirán a los usuarios crear colecciones con establecimiento inflexible de tipos que proporcionan mejor seguridad y rendimiento de tipos que las colecciones con establecimiento inflexible de tipos no genéricas.

– System.Collections.ObjectModel

Contiene clases que se pueden utilizar como colecciones en el modelo de objetos de una biblioteca reutilizable. Utilice estas clases cuando las propiedades o métodos devuelven colecciones.

– System.Collections.Specialized

Contiene colecciones especializadas y con establecimiento inflexible de tipos; por ejemplo, un diccionario de listas vinculadas, un vector de bits o colecciones que sólo contienen cadenas.

– System.ComponentModel

Proporciona clases que se utilizan para implementar el comportamiento de los componentes y controles en tiempo de diseño y en tiempo de ejecución. Este espacio de nombres incluye las clases e interfaces necesarias para implementar atributos, convertidores de tipos, enlaces a orígenes de datos y componentes de licencia.

– System.ComponentModel.Collections.Generic

Contiene clases que definen las colecciones genéricas utilizadas específicamente para admitir el comportamiento en tiempo de ejecución y en tiempo de diseño de componentes y controles.

– System.ComponentModel.Design

Contiene clases que los desarrolladores pueden utilizar para generar un comportamiento personalizado de los componentes en tiempo de diseño e interfaces de usuario para configurar los componentes en tiempo de diseño. El entorno en tiempo de diseño proporciona sistemas que permiten a los desarrolladores organizar los componentes y configurar sus propiedades.

– System.ComponentModel.Design.Data

Contiene clases para implementar el comportamiento en tiempo de diseño de los componentes relacionados con datos.

– System.ComponentModel.Design.Serialization

Proporciona tipos que admiten la personalización y el control de la serialización en tiempo de diseño.

– System.Configuration

Contiene los tipos que proporcionan el modelo de programación para controlar los datos de configuración.

– System.Configuration.Assemblies

Contiene clases que se utilizan para configurar un ensamblado.

– System.Configuration.Install

Proporciona clases que permiten escribir instaladores personalizados para los componentes propios. La clase Installer es la clase base para todos los instaladores personalizados de .NET Framework.

– System.Configuration.Provider

Contiene las clases base compartidas por aplicaciones de servidor y aplicaciones cliente para admitir un modelo conectable y agregar o quitar funcionalidad con facilidad.

– System.Data

Contiene clases que constituyen la mayoría de la arquitectura ADO.NET. La arquitectura ADO.NET permite crear componentes que administran eficazmente los datos procedentes de múltiples orígenes. En un escenario desconectado (como Internet), ADO.NET proporciona las herramientas necesarias para solicitar, actualizar y reconciliar los datos de sistemas de varios niveles. La arquitectura ADO.NET también se implementa en aplicaciones cliente, como Windows Forms, o en las páginas HTML creadas por ASP.NET.

– System.Data.Common

Contiene clases compartidas por los proveedores de datos de .NET Framework. Un proveedor de datos de .NET Framework describe una colección de clases que se utiliza para tener acceso a un origen de datos, como una base de datos, en el espacio administrado.

– System.Data.Design

Contiene clases que se pueden utilizar para generar un conjunto de datos de tipo personalizado.

– System.Data.Odbc

Contiene clases que encapsulan el proveedor de datos de .NET Framework para ODBC. El proveedor de datos de .NET Framework para ODBC describe una colección de clases que se utiliza para obtener acceso a un origen de datos ODBC en el espacio administrado.

– System.Data.OleDb

Contiene clases que encapsulan el proveedor de datos de .NET Framework para OLE DB. El proveedor de datos de .NET Framework para OLE DB describe una colección de clases que se utiliza para obtener acceso a un origen de datos OLE DB en el espacio administrado.

– System.Data.OracleClient

Contiene clases que encapsulan el proveedor de datos de .NET Framework para Oracle. El proveedor de datos de .NET Framework para Oracle describe una colección de clases que se utiliza para obtener acceso a un origen de datos de Oracle en el espacio administrado.

– System.Data.Sql

Contiene clases que admiten funcionalidad específica de SQL Server. Las extensiones API de esta clase se agregan al Proveedor de datos de .NET Framework para SQL Server (System.Data.SqlClient).

– System.Data.SqlClient

Contiene clases que encapsulan el Proveedor de datos de .NET Framework para SQL Server. El proveedor de datos de .NET Framework para SQL Server describe una colección de clases que se utiliza para obtener acceso a una base de datos de SQL Server en el espacio administrado.

– System.Data.SqlServerCE

Describe una colección de clases que se puede utilizar para obtener acceso a una base de datos de SQL Server CE de dispositivos basados en Windows CE en el entorno administrado. Mediante este espacio de nombres se pueden crear bases de datos de SQL Server CE en un dispositivo así como establecer conexiones a bases de datos de SQL Server que se encuentran en un dispositivo o un servidor remoto.

– System.Data.SqlTypes

Contiene clases para los tipos de datos nativos de SQL Server. Estas clases ofrecen una alternativa más rápida a otros tipos de datos. El uso de estas clases en este espacio de nombres ayuda a evitar errores de conversión de tipos causados en situaciones en las que podría producirse una pérdida de precisión. Dado que otros tipos de datos se convierten en segundo plano a SqlTypes y viceversa, la creación y el uso explícitos de objetos en este espacio de nombres conllevan también un código más rápido.

– System.Deployment

Contiene las clases necesarias para actualizar una aplicación ClickOnce, mediante programación, a su última versión.

– System.Diagnostics

Proporciona clases que permiten interactuar con procesos del sistema, registros de eventos y contadores de rendimiento. Este espacio de nombres también proporciona clases que permiten depurar la aplicación y realizar un seguimiento de la ejecución del código. Para obtener más información, vea las clases Trace y Debug.

– System.Diagnostics.CodeAnalysis

Contiene clases para la interacción con herramientas de análisis de código. Las herramientas de análisis de código se utilizan para comprobar si el código se ajusta a las convenciones de codificación, como son las reglas de nomenclatura o las de seguridad.

– System.Diagnostics.Design

Contiene clases que se pueden utilizar para ampliar la compatibilidad en tiempo de diseño de la supervisión y la instrumentación de las aplicaciones.

– System.Diagnostics.SymbolStore

Proporciona clases que permiten leer y escribir información de símbolos de depuración, como una línea de código fuente de las asignaciones del lenguaje intermedio de Microsoft (MSIL). Los compiladores para .NET Framework pueden almacenar la información de símbolos de depuración en los archivos de base de datos del programador (PDB). Los depuradores y las herramientas del analizador de código pueden leer la información de símbolos de depuración en tiempo de ejecución.

– System.DirectoryServices

Proporciona fácil acceso a Active Directory desde código administrado. El espacio de nombres contiene dos clases de componentes, DirectoryEntry y DirectorySearcher, que utilizan la tecnología ADSI (Interfaces de servicio de Active Directory). ADSI es el conjunto de interfaces que Microsoft proporciona como una herramienta flexible que permite trabajar con un gran número de proveedores de red. ADSI permite al administrador localizar y administrar con relativa facilidad los recursos de una red, independientemente del tamaño de esta última.

– System.DirectoryServices.ActiveDirectory

Proporciona un modelo de objetos de abstracción de alto nivel que genera tareas de servicio de directorio de Microsoft® Active Directory®. Los conceptos de servicio de directorio de Active Directory® como bosque, dominio, sitio, subred, partición y esquema forman parte del modelo de objetos.

– System.DirectoryServices.Protocols

Proporciona los métodos definidos en los estándares LDAP (Protocolo ligero de acceso a directorios) versión 3 (V3) y DSML (Directory Services Markup Language) versión 2 (V2).

– System.Drawing

Proporciona acceso a la funcionalidad básica de gráficos de GDI+. Los espacios de nombres System.Drawing.Drawing2D, System.Drawing.Imaging y System.Drawing.Text proporcionan funcionalidades más avanzadas.

– System.Drawing.Design

Contiene clases que amplían la lógica y el dibujo de las interfaces de usuario (UI) en tiempo de diseño. Se puede ampliar aún más esta funcionalidad en tiempo de diseño para crear elementos de cuadro de herramientas personalizados, editores de valores específicos de tipos que pueden editar y representar gráficamente valores de los tipos admitidos, o convertidores de tipos que pueden realizar conversiones de valores entre determinados tipos. Este espacio de nombres proporciona el marco de trabajo básico para desarrollar extensiones a la interfaz de usuario en tiempo de diseño.

– System.Drawing.Drawing2D

Proporciona funcionalidad bidimensional y de gráficos vectoriales avanzada. Este espacio de nombres incluye los pinceles degradados, la clase Matrix (que se utiliza para definir transformaciones geométricas) y la clase GraphicsPath.

– System.Drawing.Imaging

Proporciona funcionalidad avanzada de procesamiento de imágenes de GDI+. La funcionalidad gráfica básica se proporciona mediante el espacio de nombres System.Drawing.

– System.Drawing.Printing

Proporciona servicios relacionados con la impresión. Normalmente, se crea una nueva instancia de la clase PrintDocument, se establecen las propiedades que describen lo que se va a imprimir, y se llama al método Print para imprimir el documento.

– System.Drawing.Text

Proporciona funcionalidad tipográfica avanzada de GDI+. La funcionalidad gráfica básica se proporciona mediante el espacio de nombres System.Drawing. Las clases incluidas en este espacio de nombres permiten a los usuarios crear y utilizar colecciones de fuentes.

– System.EnterpriseServices

Proporciona una infraestructura importante para aplicaciones empresariales. COM+ proporciona una arquitectura de servicios para los modelos de programación de componentes implementados en un entorno empresarial. Este espacio de nombres proporciona objetos de .NET Framework con acceso a servicios COM+, por lo que los objetos de .NET Framework son más prácticos para las aplicaciones empresariales.

– System.EnterpriseServices.CompensatingResourceManager

Proporciona clases que permiten utilizar un Administrador de compensación de recursos (CRM) en código administrado. Un CRM es un servicio proporcionado por COM+ que permite incluir objetos no transaccionales en las transacciones del Coordinador de transacciones distribuidas de Microsoft (DTC). Aunque los CRM no ofrecen las funcionalidades de un administrador de recursos completo, proporcionan la atomicidad transaccional (comportamiento todo o nada) y la durabilidad por medio del registro de recuperación.

– System.EnterpriseServices.Internal

Proporciona compatibilidad de infraestructura para los servicios COM+. Las clases e interfaces en este espacio de nombres están diseñadas específicamente para admitir llamadas a System.EnterpriseServices desde las clases COM+ no administradas.

– System.Globalization

Contiene clases que definen datos relativos a la referencia cultural, tales como idioma, país o región, calendario, formatos de fecha, moneda y números, así como el criterio de ordenación para cadenas. Estas clases resultan útiles para escribir aplicaciones globalizadas (de uso internacional).

– System.IO

Contiene tipos que permiten la lectura y escritura sincrónicas y asincrónicas en archivos y secuencias de datos.

– System.IO.Compression

Contiene clases que proporcionan compresión y descompresión básicas para las secuencias.

– System.IO.IsolatedStorage

Contiene tipos que permiten crear y utilizar almacenes aislados. Estos almacenes permiten leer y escribir datos a los que los fragmentos de código de menos confianza no pueden tener acceso y permiten evitar la exposición de información confidencial que se pueda guardar en cualquier otro lugar del sistema de archivos. Los datos se almacenan en compartimientos aislados por el usuario actual y por el ensamblado en el que existe el código.

– System.IO.Ports

Contiene clases que controlan los puertos serie, proporcionando un marco de trabajo para E/S sincrónica y controlada por eventos, acceso para fijar e interrumpir los estados, acceso a las propiedades del controlador serie y enumeraciones para especificar las características de los puertos.

– System.Management

Proporciona acceso a un variado conjunto de datos y eventos de administración relativos al sistema, dispositivos y aplicaciones instrumentados para Windows Management Infrastructure (WMI).

– System.Management.Instrumentation

Proporciona las clases necesarias para instrumentar aplicaciones de administración y exponer sus datos y eventos de administración a posibles consumidores a través de WMI. De este modo, los consumidores como Microsoft Application Center o Microsoft Operations Manager podrán administrar fácilmente la aplicación, que se podrá supervisar y configurar mediante secuencias de comandos de administrador u otras aplicaciones, tanto administradas como no administradas.

– System.Messaging

Proporciona clases que permiten conectar con colas de mensajes de la red, supervisarlas, administrarlas y enviar, recibir o leer mensajes.

– System.Messaging.Design

Contiene clases que se pueden utilizar para ampliar la compatibilidad en tiempo de diseño de las clases System.Messaging.

– System.Net

Proporciona una interfaz de programación sencilla para muchos de los protocolos que se utilizan en las redes actuales. Las clases WebRequest y WebResponse constituyen la base de los «protocolos conectables», una implementación de servicios de red que permite desarrollar aplicaciones que usan recursos de Internet sin preocuparse por los detalles específicos de los protocolos individuales.

– System.Net.Cache

Define los tipos y las enumeraciones utilizadas para definir las directivas de la caché para los recursos obtenidos utilizando las clases WebRequest y HttpWebRequest.

– System.Net.Configuration

Contiene clases que utilizan las aplicaciones para obtener acceso mediante programación y actualizar las opciones de configuración para los espacios de nombres System.Net.

– System.Net.Mail

Contiene clases utilizadas para enviar correo electrónico a un servidor SMTP (Protocolo simple de transferencia de correo) para su entrega.

– System.Net.Mime

Contiene tipos utilizados para representar los encabezados MIME (Multipurpose Internet Mail Exchange). Estos tipos se utilizan con los tipos del espacio de nombres System.Net.Mail para especificar los encabezados Content-Type, Content-Disposition y Content-transfer-Encoding al enviar un correo electrónico mediante la clase SmtpClient.

– System.Net.NetworkInformation

Proporciona acceso a los datos de tráfico de la red, información de direcciones de red y notificación de cambios de dirección para el equipo local. El espacio de nombres también contiene las clases que implementan la utilidad Ping. Puede utilizar Ping y las clases relacionadas para comprobar si se puede conectar con un equipo a través de la red.

– System.Net.Sockets

Proporciona una implementación administrada de la interfaz de Windows Sockets (Winsock) para desarrolladores que necesitan controlar el acceso a la red.

– System.Reflection

Contiene clases e interfaces que proporcionan una vista administrada de los tipos cargados, métodos y campos, con la capacidad de crear e invocar dinámicamente los tipos.

– System.Reflection.Emit

Contiene clases que permiten a un compilador o una herramienta emitir metadatos así como lenguaje intermedio de Microsoft (MSIL) y, opcionalmente, generar un archivo PE en el disco. Los principales clientes de estas clases son los motores de secuencias de comandos y los compiladores.

– System.Resources

Proporciona clases e interfaces que permiten a los desarrolladores crear, almacenar y administrar varios recursos específicos de la referencia cultural utilizados en una aplicación.

– System.Resources.Tools

Contiene la clase StronglyTypedResourceBuilder, que proporciona compatibilidad para los recursos con nombre seguro. A partir de .NET Framework versión 2.0, esta característica en tiempo de compilación encapsula el acceso a los recursos creando clases que contienen un conjunto de propiedades de sólo lectura (get) estáticas, lo que facilita el consumo de recursos.

– System.Runtime

Contiene tipos avanzados que admiten diversos espacios de nombres tales como System, los espacios de nombres Runtime y los espacios de nombres Security.

– System.Runtime.ConstrainedExecution

Define un conjunto de tipos que enumeran y definen un contrato para la confiabilidad entre el autor de algún código y los desarrolladores que toman una dependencia de ese código.

– System.Runtime.Hosting

Contiene tipos avanzados que se utilizan en la activación de aplicaciones dentro de los dominios de aplicación.

– System.Runtime.CompilerServices

Proporciona funcionalidad a los programadores de compiladores que utilicen código administrado para especificar atributos en los metadatos que afectan al comportamiento de Common Language Runtime en tiempo de ejecución. Las clases en este espacio de nombres son sólo para los programadores de compiladores.

– System.Runtime.InteropServices

Proporciona una amplia variedad de miembros compatibles con la interoperabilidad COM y los servicios de invocación de plataforma. Si no conoce estos servicios, vea Interoperar con código no administrado.

– System.Runtime.InteropServices.ComTypes

Contiene métodos que son definiciones de las funciones COM para código administrado. Estas funciones reemplazan los métodos UCOM*, ahora obsoletos, en el espacio de nombres System.Runtime.InteropServices.

– System.Runtime.InteropServices.CustomMarshalers

Es compatible con la infraestructura de .NET y no está diseñado para que se utilice directamente desde el código.

– System.Runtime.InteropServices.Expando

Contiene la interfaz IExpando, que permiten modificar un objeto agregando o quitando sus miembros.

– System.Runtime.Remoting

Proporciona clases e interfaces que permiten a los desarrolladores crear y configurar aplicaciones distribuidas.

– System.Runtime.Remoting.Activation

Proporciona clases y objetos que admiten la activación de objetos remotos en el servidor o el cliente.

– System.Runtime.Remoting.Channels

Contiene clases que admiten y controlan canales y receptores de canales, que se utilizan como medio de transporte cuando un cliente llama a un método de un objeto remoto.

– System.Runtime.Remoting.Channels.Http

Contiene canales que utilizan el protocolo HTTP para llevar mensajes y objetos a ubicaciones remotas o viceversa. De forma predeterminada, los canales HTTP codifican las llamadas a objetos y métodos en formato SOAP para la transmisión, pero se pueden especificar otros receptores de formateadores de codificación y descodificación en las propiedades de configuración de un canal.

– System.Runtime.Remoting.Channels.Ipc

Define un canal de comunicación para la interacción remota que utiliza el sistema de comunicaciones entre procesos (IPC) del sistema operativo Windows. Dado que no utiliza la comunicación por red, el canal IPC es mucho más rápido que los canales HTTP y TCP, pero sólo se puede utilizar para la comunicación entre los dominios de aplicación del mismo equipo físico.

– System.Runtime.Remoting.Channels.Tcp

Contiene canales que utilizan el protocolo TCP para llevar mensajes y objetos a ubicaciones remotas o viceversa. De forma predeterminada, los canales TCP codifican las llamadas a objetos y métodos en formato binario para la transmisión, pero se pueden especificar otros receptores de formateadores de codificación y descodificación en las propiedades de configuración de un canal.

– System.Runtime.Remoting.Contexts

Contiene objetos que definen los contextos en los que residen todos los objetos. Un contexto es una serie ordenada de propiedades que define un entorno para los objetos que contiene. Los contextos se crean durante el proceso de activación de los objetos configurados para requerir determinados servicios automáticos, como la sincronización, las transacciones, la activación just-in-time (JIT), la seguridad, etc. En un contexto pueden residir varios objetos.

– System.Runtime.Remoting.Lifetime

Contiene clases que administran la duración de los objetos remotos. Tradicionalmente, la recolección distribuida de elementos no utilizados recurre a los recuentos de referencias y comandos ping para controlar la duración de los objetos. Esto funciona bien cuando hay pocos clientes por servicio, pero no se ajusta adecuadamente cuando hay miles de clientes por cada servicio. El servicio de duración remoto asocia una concesión a cada servicio y, cuando ésta vence, elimina el servicio. El servicio de duración puede desempeñar la función de un colector distribuido de elementos no utilizados tradicional y se adapta bien al aumentar el número de clientes por servidor.

– System.Runtime.Remoting.Messaging

Contiene clases que se utilizan para crear mensajes y procesarlos de forma remota. La infraestructura de interacción remota utiliza mensajes para comunicarse con objetos remotos. Los mensajes se utilizan para transmitir llamadas a métodos remotos, activar objetos remotos y comunicar información. Un objeto de mensaje lleva una serie de propiedades con nombre, entre las que se incluyen identificadores de acción, información de envío y parámetros.

– System.Runtime.Remoting.Metadata

Contiene clases y atributos que se pueden utilizar para personalizar la generación y el procesamiento de SOAP para objetos y campos. Las clases en este espacio de nombres se pueden utilizar para indicar el encabezado SOAPAction, el tipo de resultado, el nombre de elemento XML y el identificador URI del espacio de nombres XML del método.

– System.Runtime.Remoting.Metadata.W3cXsd2001

Contiene la definición de esquema XML (XSD) establecida por el Consorcio World Wide Web (W3C) en 2001. La especificación de W3C titulada «XML Schema Part2: Data types» identifica el formato y el comportamiento de varios tipos de datos. Este espacio de nombres contiene clases contenedoras para los tipos de datos que se ajustan a la especificación de W3C. Todos los tipos de fecha y hora se ajustan a la especificación de estándares ISO.

– System.Runtime.Remoting.MetadataServices

Contiene las clases utilizadas por la herramienta de línea de comandos Soapsuds.exe y el código de usuario para convertir metadatos a esquemas XML, o viceversa, para la infraestructura de interacción remota.

– System.Runtime.Remoting.Proxies

Contiene clases que controlan y proporcionan funcionalidad a los servidores proxy. Un servidor proxy es un objeto local que constituye una imagen de un objeto remoto. Los servidores proxy permiten a los clientes tener acceso a objetos más allá de los límites remotos.

– System.Runtime.Remoting.Services

Contiene clases de servicios que proporcionan funcionalidad a .NET Framework.

– System.Runtime.Serialization

Contiene clases que se pueden utilizar para serializar y deserializar objetos. La serialización es el proceso de convertir un objeto o un gráfico de objetos en una secuencia lineal de bytes para su almacenamiento o transmisión a otra ubicación. La deserialización es el proceso de volver a generar los objetos a partir de la información almacenada.

– System.Runtime.Serialization.Formatters

Proporciona enumeraciones, interfaces y clases comunes que utilizan los formateadores de serialización.

– System.Runtime.Serialization.Formatters.Binary

Contiene la clase BinaryFormatter, que se puede utilizar para serializar y deserializar objetos en formato binario.

– System.Runtime.Serialization.Formatters.Soap

Contiene la clase SoapFormatter, que se puede utilizar para serializar y deserializar objetos en formato SOAP.

– System.Security

Proporciona la estructura subyacente del sistema de seguridad de .NET Framework, incluidas clases base relativas a permisos.

– System.Security.Cryptography

Proporciona servicios criptográficos, incluidas la codificación y descodificación seguras de datos, así como muchas otras operaciones, como los cálculos hash, la generación de números aleatorios y la autentificación de mensajes.

– System.Security.Cryptography.Pkcs

Proporciona elementos de programación para las Normas de criptografía de clave pública (PKCS).

– System.Security.Cryptography.X509Certificates

Contiene la implementación de Common Language Runtime del certificado Authenticode X.509 v.3. Este certificado se firma con una clave privada que identifica de forma única y segura al propietario del certificado.

– System.Security.Cryptography.Xml

Contiene clases que admiten la creación y validación de firmas digitales XML. Las clases en este espacio de nombres implementan la recomendación del Consorcio World Wide Web, «XML-Signature Syntax and Processing», descrita en http://www.w3.org/TR/xmldsig-core/.

– System.Security.Permissions

Define clases que controlan el acceso a operaciones y recursos a partir de una directiva.

– System.Security.Policy

Contiene grupos de código, condiciones de pertenencia y evidencia. Estos tres tipos de clase se utilizan para crear las reglas que aplica el sistema de directivas de seguridad de .NET Framework. Las clases de evidencia son la entrada de la directiva de seguridad y las condiciones de pertenencia son los modificadores; juntas, crean instrucciones de directiva y determinan el conjunto de permisos concedido. Los niveles de directivas y los grupos de código constituyen la estructura de la jerarquía de directivas. Los grupos de código son la encapsulación de una regla y se organizan jerárquicamente en un nivel de directiva.

– System.Security.Principal

Define un objeto principal que representa el contexto de seguridad en el cual se ejecuta código.

– System.ServiceProcess

Proporciona clases que permiten implementar, instalar y controlar las aplicaciones de servicios para Windows. Los servicios son ejecutables de ejecución prolongada que no utilizan ninguna interfaz de usuario. La implementación de un servicio implica heredar de la clase ServiceBase y definir el comportamiento específico que se debe procesar cuando se pasen comandos para iniciar, detener, pausar y continuar, así como el comportamiento personalizado y las acciones que se deben realizar cuando se cierre el sistema.

– System.Text

Contiene clases que representan codificaciones de caracteres ASCII, Unicode, UTF-7 y UTF-8, clases base abstractas para realizar conversiones entre bloques de caracteres y bloques de bytes, así como una clase auxiliar que manipula objetos String y les aplica formato sin crear instancias intermedias de String.

– System.Text.RegularExpressions

Contiene clases que proporcionan acceso al motor de expresiones regulares de .NET Framework. El espacio de nombres proporciona funcionalidad de expresiones regulares que se puede utilizar desde cualquier plataforma o lenguaje que se ejecute con Microsoft .NET Framework.

– System.Threading

Proporciona clases e interfaces que habilitan la programación multiproceso. Además de las clases que permiten sincronizar las actividades de subproceso y obtener acceso a datos (Mutex, Monitor, Interlocked, AutoResetEvent, etc.), este espacio de nombres incluye una clase ThreadPool que permite utilizar un grupo de subprocesos proporcionados por el sistema, y una clase Timer que ejecuta los métodos de devolución de llamada en los subprocesos del grupo de subprocesos.

– System.Timers

Proporciona el componente Timer, que permite provocar un evento en un intervalo especificado.

– System.Transactions

Contiene clases que permiten al código participar en transacciones. Las clases admiten transacciones con varios participantes distribuidos, varias notificaciones de fase e inscripciones duraderas.

– System.Transactions.Configuration

Contiene clases que describen las opciones de configuración utilizadas por las clases System.Transactions.

– System.Transactions.Ltm

Contiene clases utilizadas por el administrador de transacciones sencillas para la administración de las transacciones.

– System.Transactions.Oletx

Contiene clases utilizadas por el administrador de transacciones OLE para la administración de las transacciones.

– System.Web

Proporciona clases e interfaces que permiten la comunicación entre explorador y servidor. Este espacio de nombres incluye la clase HTTPRequest, que proporciona información abundante sobre la solicitud HTTP actual, la clase HTTPResponse, que administra la salida HTTP al cliente, y el objeto HTTPServerUtility, que proporciona acceso a las utilidades y los procesos del servidor. System.Web también incluye clases para la manipulación de las cookies, la transferencia de archivos, la información sobre las excepciones y el control de la caché de resultados.

– System.Web.Administration

Contiene clases utilizadas por la herramienta Administración de sitios Web para administrar y configurar las aplicaciones ASP.NET en un servidor Web.

– System.Web.Caching

Proporciona clases para almacenar en caché los datos que se utilizan con frecuencia en el servidor. Incluye la clase Cache, un diccionario que permite almacenar objetos de datos arbitrarios, como tablas hash y conjuntos de datos. Proporciona asimismo la funcionalidad de caducidad para dichos objetos así como métodos que permiten agregar y quitar los objetos. Se pueden agregar también los objetos con dependencia de otros archivos o entradas de la caché, además de realizar devoluciones de llamada para notificar a la aplicación cuando se quita un objeto de la memoria caché.

– System.Web.Compilation

Contiene clases que permiten generar y compilar los tipos de archivo personalizados dentro del entorno de generación ASP.NET.

– System.Web.Configuration

Contiene clases que se utilizan para configurar ASP.NET.

– System.Web.Handlers

Contiene clases del controlador HTTP que procesan las solicitudes HTTP a un servidor Web.

– System.Web.Hosting

Proporciona la funcionalidad necesaria para alojar aplicaciones ASP.NET de aplicaciones administradas fuera de los servicios de Microsoft Internet Information Server (IIS).

– System.Web.Mail

Las clases de este espacio de nombres están obsoletas; utilice en su lugar las clases incluidas en el espacio de nombres System.Net.Mail. Contiene clases que permiten crear y enviar mensajes mediante el componente de mensajería CDOSYS. El mensaje de correo se entrega a través del servicio de correo SMTP integrado en Microsoft Windows 2000 o a través de un servidor SMTP arbitrario. Las clases en este espacio de nombres se pueden utilizar desde ASP.NET o cualquier aplicación administrada.

– System.Web.Management

Contiene clases e interfaces que permiten administrar y supervisar el estado de las aplicaciones Web.

– System.Web.Mobile

Contiene las principales funciones, incluidos la autenticación y el control de errores, necesarias para generar las aplicaciones Web ASP.NET Mobile.

– System.Web.Profile

Contiene clases que se utilizan para implementar el perfil de usuario de ASP.NET en aplicaciones de servidor Web.

– System.Web.RegularExpressions

Proporciona las expresiones regulares que se utilizan para analizar los archivos de ASP.NET. Todos los miembros del espacio de nombres System.Web.RegularExpressions son descendientes de la clase Regex.

– System.Web.Security

Contiene clases que se utilizan para implementar la seguridad de ASP.NET en aplicaciones de servidor Web.

– System.Web.Services

Se compone de las clases que permiten crear servicios Web XML mediante clientes de servicios Web XML y ASP.NET. Los servicios Web XML son aplicaciones que permiten intercambiar mensajes en un entorno de correspondencia imprecisa mediante protocolos estándar como HTTP, XML, XSD, SOAP y WSDL. Los servicios Web XML permiten generar aplicaciones modulares ubicadas dentro y fuera de empresas de entornos heterogéneos, por lo que pueden interoperar con una amplia variedad de implementaciones, plataformas y dispositivos. Los mensajes XML basados en SOAP de estas aplicaciones pueden tener partes debidamente definidas (estructuradas y con establecimiento de tipos) o pueden tener partes definidas de manera imprecisa (mediante XML arbitrario). La capacidad de los mensajes de evolucionar con el tiempo sin romper el protocolo es fundamental para la flexibilidad y la solidez de los servicios Web XML como componente básico para el futuro del Web.

– System.Web.Services.Configuration

Consta de las clases que configuran la forma en que se ejecutan los servicios Web XML creados con ASP.NET.

– System.Web.Services.Description

Consta de las clases que permiten describir públicamente un servicio Web XML mediante el Lenguaje de descripción de servicios Web (WSDL). Cada clase en este espacio de nombres se corresponde con un elemento específico de la especificación WSDL, y la jerarquía de clases se corresponde con la estructura XML de un documento WSDL válido.

– System.Web.Services.Discovery

Consta de las clases que permiten a los clientes de servicios Web XML encontrar los servicios Web XML disponibles en un servidor Web mediante un proceso denominado Descubrimiento de servicios Web XML.

– System.Web.Services.Protocols

Consta de las clases que definen los protocolos utilizados para transmitir datos a través de la red durante la comunicación entre los clientes del servicio Web XML y los servicios Web XML creados con ASP.NET.

– System.Web.SessionState

Proporciona las clases e interfaces que habilitan el almacenamiento de los datos específicos de un cliente individual en una aplicación Web del servidor. Los datos relativos al estado de la sesión se utilizan para ofrecer al cliente la apariencia de una conexión permanente con la aplicación. La información de estado se puede almacenar en la memoria del proceso local o, en el caso de las configuraciones de baterías de servidores Web, fuera de proceso mediante el servicio de estado de ASP.NET o una base de datos de SQL Server.

– System.Web.UI

Proporciona las clases e interfaces que permiten crear los controles y páginas que aparecerán en las aplicaciones Web como interfaz de usuario de una página Web. Este espacio de nombres incluye la clase Control, que proporciona a todos los controles, ya sean controles HTML, controles Web o controles de usuario, un conjunto común de funcionalidades. También incluye el control Page, que se genera automáticamente siempre que se realiza una solicitud de una página en la aplicación Web. También se proporcionan clases que ofrecen la funcionalidad de enlace de datos a los controles de servidor de formularios Web Forms, la capacidad de guardar el estado de la vista de un control o una página determinada, así como la funcionalidad de análisis para los controles programables y literales.

– System.Web.UI.Adapters

Contiene las clases base para los adaptadores de control y los adaptadores de página, que permiten reemplazar estados del ciclo de vida de las páginas y los controles para modificar su marcado o comportamiento predeterminado para los nuevos estándares de marcado o para exploradores concretos.

– System.Web.UI.Design

Contiene clases que se pueden utilizar para ampliar la compatibilidad en tiempo de diseño de los controles de servidor Web y de formularios Web Forms.

– System.Web.UI.Design.MobileControls

Obsoleta. Contiene clases que proporcionan la compatibilidad en tiempo de diseño para las clases del espacio de nombres System.Web.UI.MobileControls. Las clases de este espacio de nombres están obsoletas; utilice las clases de System.Web.UI.Design.WebControls en su lugar.

– System.Web.UI.Design.MobileControls.Converters

Contiene clases que proporcionan la compatibilidad en tiempo de diseño para los convertidores de tipos de datos en controles móviles.

– System.Web.UI.Design.WebControls

Contiene clases que se pueden utilizar para ampliar la compatibilidad en tiempo de diseño de los controles de servidor Web.

– System.Web.UI.Design.WebControls.WebParts

Contiene clases que proporcionan la compatibilidad en tiempo de diseño para los controles derivados de las clases del espacio de nombres System.Web.UI.WebControls.WebParts.

– System.Web.UI.HtmlControls

Se compone de una colección de clases que permiten crear controles de servidor HTML en una página de formularios Web Forms. Los controles de servidor HTML se ejecutan en el servidor y se asignan directamente a las etiquetas HTML estándar compatibles con la mayoría de los exploradores. Esto permite controlar mediante programación los elementos HTML de una página de formularios Web Forms.

– System.Web.UI.Imaging

Contiene clases que permiten generar imágenes dinámicas y crear servicios de generación de imágenes personalizados.

– System.Web.UI.MobileControls

Obsoleta. Contiene un conjunto de controles de servidor ASP.NET que pueden procesar de manera inteligente la aplicación para diferentes dispositivos móviles. Las clases de este espacio de nombres están obsoletas; utilice en su lugar los controles de System.Web.UI.WebControls.

– System.Web.UI.MobileControls.Adapters

Contiene clases que permiten reemplazar las fases del ciclo de vida de un control móvil para modificar su marcado o comportamiento HTML, CHTML o WML predeterminado para los nuevos estándares de marcado o para exploradores y dispositivos móviles concretos.

– System.Web.UI.MobileControls.Adapters.XhtmlAdapters

Contiene clases que permiten reemplazar las fases del ciclo de vida de un control móvil para modificar su marcado o comportamiento XHTML predeterminado para los nuevos estándares de marcado o para exploradores y dispositivos móviles concretos.

– System.Web.UI.WebControls

Contiene clases que permiten crear controles de servidor Web en una página Web. Los controles de servidor Web se ejecutan en el servidor e incluyen controles de formulario como botones y cuadros de texto. También incluyen controles para fines especiales como un calendario. Dado que los controles de servidor Web se ejecutan en el servidor, se pueden controlar estos elementos mediante programación. Los controles de servidor Web son más abstractos que los controles de servidor HTML. Su modelo de objetos no refleja necesariamente la sintaxis HTML.

– System.Web.UI.WebControls.Adapters

Contiene clases que permiten reemplazar las fases del ciclo de vida de un control Web para modificar el marcado o el comportamiento predeterminado de un control para los nuevos estándares de marcado o para exploradores concretos.

– System.Web.UI.WebControls.WebParts

Contiene un conjunto integrado de clases e interfaces para crear páginas Web cuyo aspecto y comportamiento podrán modificar (personalizar) los usuarios finales. La configuración definida por el usuario para cada página se guarda para las sesiones futuras del explorador.

– System.Web.Util

Contiene clases que permiten a los métodos de devolución de llamada ejecutarse bajo el ámbito de una transacción y el envío del trabajo a subprocesos separados.

– System.Windows.Forms

Contiene clases para crear aplicaciones basadas en Windows y que aprovechan plenamente las características avanzadas de interfaz de usuario disponibles en este sistema operativo.

– System.Windows.Forms.ComponentModel.Com2Interop

Contiene clases auxiliares que Visual Studio utiliza para mostrar las páginas de propiedades mientras se está en el modo de diseño.

– System.Windows.Forms.Design

Contiene clases que son compatibles con la configuración y el comportamiento en tiempo de diseño de los componentes de formularios Windows Forms. Estas clases se componen de: clases de diseñador que proporcionan compatibilidad con los componentes de formularios Windows Forms, un conjunto de servicios en tiempo de diseño, clases UITypeEditor para configurar determinados tipos de propiedades, así como clases para importar controles ActiveX.

– System.Windows.Forms.Design.Behavior

Contiene clases que permiten crear comportamiento personalizado de la interfaz de usuario para los componentes en tiempo de diseño.

– System.Windows.Forms.Layout

Contiene clases que admiten los comportamientos del diseño tanto en tiempo de diseño como en tiempo de ejecución.

– System.Windows.Forms.Printing

Proporciona clases que permiten crear informes simples que contienen encabezados, pies de página, tiras en movimiento y diseños en forma de tabla. La impresión se realiza con la clase SimplePrintDocument y la escritura en la impresora se realiza con la misma facilidad con la que realiza la escritura en la consola.

– System.Windows.Forms.PropertyGridInternal

Proporciona la compatibilidad interna para el control PropertyGrid. Las clases de este espacio de nombres admiten la infraestructura de .NET Framework y no están diseñadas para ser utilizadas directamente en el código.

– System.Xml

Proporciona compatibilidad basada en estándares para procesar XML.

– System.Xml.Schema

Contiene las clases XML que proporcionan compatibilidad basada en estándares para los esquemas XSD.

– System.Xml.Serialization

Contiene clases que se utilizan para serializar objetos en documentos o secuencias de formato XML.

– System.Xml.XPath

Contiene el analizador y el motor de evaluación de XPath. Es compatible con la recomendación de W3C titulada «XML Path Language (XPath) Version 1.0» (www.w3.org/TR/xpath).

– System.Xml.Xsl

Proporciona compatibilidad con las transformaciones XSLT (Extensible Stylesheet Transformation). Es compatible con la recomendación de W3C titulada «XSL Transformations (XSLT) Version 1.0» (www.w3.org/TR/xslt).

– System.Xml.Xsl.Runtime

Proporciona compatibilidad interna para las clases del espacio de nombres System.Xml.Xsl. Las clases de este espacio de nombres admiten la infraestructura de .NET Framework y no están diseñadas para ser utilizadas directamente en el código.

– Versiones del Framework .NET:

Cada versión de .NET Framework contiene Common Language Runtime (CLR) como componente básico e incluye componentes adicionales, como las bibliotecas de clases base y otras bibliotecas administradas.

Ahora nombraré componentes clave de .NET Framework agrupados por versión, tratando de proporcionar información sobre las versiones del CLR que acompañan a cada una de las versiones, los entornos de desarrollo asociados e identificando las versiones que se instalan en el sistema operativo de Windows.

En la siguiente imagen se resume el historial de versiones y se identifican las versiones que se instalan en Windows.

Cada versión de .Net Framework contiene características de versiones anteriores e incorpora nuevas características. El CLR se identifica por su propio número de versión. Algunas versiones de .NET Framework incluyen una nueva versión de CLR, aun que otras utilizan una versión anterior.

El Framework .Net 4 contieen la versión 4 de CLR mientras que .Net Framework 3,5 incluye CLR 2,0 (No existe la versión 3 de CLR)

En general no hay que desinstalar ninguna versión de .NET Framework que esté instalada en el equipo, por que una aplicación puede depender de una versión concreta y se puede interrumpir si se desinstala esa versión.

Se pueden cargar varias versiones de .NET Framework en un único equipo simultáneamente. Esto significa que puede instalar .NET Framework sin tener que desinstalar las versiones anteriores.

Historial de las versiones:

Desde la aparición de la primera versión estable de .NET en 2002, Microsoft ha continuado añadiendo funcionalidades a la plataforma y mejorando sus herramientas de desarrollo.

A continuación, veremos las diferentes versiones de .NET existentes. Todas ellas pueden coexistir en un mismo sistema operativo, de forma que se pueden ejecutar aplicaciones realizadas en una u otra versión sin problemas de compatibilidad, y están disponibles como descarga independiente y gratuita en el sitio de descargas de Microsoft:

• .NET Framework 1.0; La primera versión del .NET Framework apareció en 2002, aunque ya existían algunas betas desde finales de 2000. Junto con esta versión del .NET Framework aparece también Visual Studio .NET 2002, la nueva versión del entorno de desarrollo de Microsoft, después de la versión 6.0 para tecnologías anteriores a .NET.

• .NET Framework 1.1; La versión 1.1 aparece en 2003 junto con la versión de la herramienta de desarrollo Visual Studio .NET 2003 y el sistema operativo Windows Server 2003. Este sistema operativo incluye el .NET Framework como componente instalable.

En esta versión, se mantiene el mismo motor de ejecución que en la anterior, aunque incluye bastantes mejoras respecto de la versión 1.0, entre otras incluye una versión del .NET Framework para dispositivos móviles conocido como .NET Compact Framework. También se incluyen herra-

mientas para interoperar con la suite ofimática Office 2003, que también aparece este mismo año.

.NET Framework 2.0; Esta nueva versión del .NET aparece en 2005, junto con Visual Studio 2005 (la palabra .NET desaparece del nombre del producto) y SQL Server 2005 (la nueva versión del motor de bases de datos de Microsoft, después de 5 años). También se crea una nueva revisión del sistema operativo Windows Server 2003 R2, que incluye esta nueva versión del .NET Framework en lugar de la versión 1.1.

Esta versión incluye cambios sustanciales tanto en el CLR como en los lenguajes .NET, como son los tipos genéricos o los tipos abstractos. También aparece una segunda versión del .NET Compact Framework para dispositivos móviles. Otra de las mejoras importantes consiste en la integración del CLR dentro del motor de bases de datos SQL Server 2005, de forma que es posible crear elementos de programación de la base de datos, utilizando lenguajes y tecnologías .NET.

.NET Framework 3.0; Junto con la aparición de Windows Vista en 2006, aparece también la nueva versión del .NET Framework, incluida como componente de dicho sistema operativo. A pesar de que es un cambio de versión importante (de la 2 a la 3), la versión 3.0 mantiene el mismo motor de ejecución y librerías que la versión 2.0. La gran novedad en esta versión son las cuatro nuevas tecnologías que incorpora a las ya existentes en el .NET 2.0, son las siguientes:

Windows presentation foundation (WPF).Proporciona un conjunto de

funcionalidades para desarrollar interfaces gráficas independientes de

la plataforma, que utilicen todo tipo de elementos gráficos avanzados

como dibujo vectorial, gráficos en 3-D, vídeo, audio, etc.

Windows communication foundation (WCF). Ofrece un conjunto de fun-

cionalidades que facilitan la creación de aplicaciones SOA orientadas

a servicio (Service Oriented Architecture).

Windows workflow foundation (WWF). Incluye funcionalidades y herra-

mientas para crear flujos de trabajo que se pueden ejecutar desde una

aplicación.

Windows cardspace (WCS). Permite almacenar de forma segura la iden-

tidad digital de una persona y proporciona una interfaz unificada para

escoger la identidad para una transacción particular como por ejemplo

autenticarse en una página web.

.NET Framework 3.5; La siguiente versión del .NET Framework salió a finales de 2007, principios de 2008, junto a la aparición de Visual Studio 2008, SQL Server 2008 y Windows Server 2008, que incluyó esta versión como componente del sistema operativo. También aparecerá por entonces la correspondiente versión del Framework para dispositivos móviles (.NET Compact Framework 3.5).

En esta versión del Framework sí que se incluye una nueva versión del motor de ejecución de .NET, para ofrecer las funcionalidades necesarias para algunas de las características que se incluyen en ella, como por ejemplo LINQ o lambda expressions.

Cada versión se compila mejorando las versiones anteriores de .NET Framework. No es posible ejecutar las versiones 2.0, 3.0 y 3.5 en paralelo en un equipo. Al instalar .NET Framework 3.5 SP1, obtiene las capas 2.0 y 3.0 automáticamente. Sin embargo, .NET Framework 4 finaliza este enfoque de capas.

A partir de .NET Framework 4, puede usar el hospedaje en paralelo en el mismo proceso para ejecutar varias versiones de CLR en un único proceso. Las aplicaciones que se compilaron para las versiones 2.0, 3.0 y 3.5, pueden todas ejecutarse en la versión 3.5, pero no funcionarán en la versión 4 o posterior.

.NET Framework 4.5 es una actualización que reemplaza a .NET Framework 4 en el equipo. Después de instalar esta actualización, las aplicaciones de .NET Framework 4 deben seguir ejecutándose sin requerir la recompilación. Sin embargo, como se han realizado ciertos cambios en .NET Framework, es posible que se deba modificar el código de la aplicación.

– Proceso de ejecución de una aplicación .NET

Desde que se escribe el código fuente de una aplicación en un determinado lenguaje de programación .NET, hasta que la aplicación se ejecuta en el CLR, existe una serie de pasos o transformaciones. Los pasos son los que se describen a continuación:

* Compilación :

El código fuente en el que se escriben los programas o componentes de .NET se escribe en ficheros de texto con una u otra extensión en función del lenguaje utilizado

El proceso de compilación consiste en traducir el código fuente a código IL (Intermediate Language), también llamado MSIL (Microsoft intermediate language), un lenguaje intermedio parecido al código máquina, pero que no puede ser ejecutado directamente por el procesador (es independiente del procesador).

Todos los lenguajes de .NET compilan a un código intermedio común denominado MSIL (MicroSoft intermediate language) o simplemente IL (intermediate language). De esta forma, los componentes se ejecutan igual en el CLR independientemente del lenguaje y de la plataforma en los que fueron creados.

La tarea de compilación se lleva a cabo mediante una aplicación llamada compilador. Cada compilador permite compilar código fuente escrito en un lenguaje de programación concreto. Todos los compiladores de lenguajes .NET traducen el código fuente a IL.

El código IL generado por los compiladores se almacena en un fichero llamado PE (portable executable), que contiene el código IL junto con sus metadatos.

Los metadatos son la descripción de los tipos de datos definidos en el código IL, sus métodos, sus atributos, etc. Los metadatos son necesarios para ejecutar aplicaciones, para verificar que el código IL que se ejecuta es correcto y evitar operaciones inválidas.

* Enlazado:

Para que el CLR pueda ejecutar una aplicación, es necesario agrupar todos los archivos PE generados en una estructura lógica llamada ensamblado. Este paso se denomina enlazado (link), y por lo general se realiza conjuntamente con el proceso de compilación.

Un esamblado puede estar formado por uno o más ficheros PE, pero por regla general están formados por un único fichero PR con extensiones .dll o .exe.

Los ensamblador contienen, además de los ficheros PE un conjunto de información acerca del propio ensamblado (versión, referencias externas, etc) que se denomina manifest.

* Creación de un dominio de aplicación:

Las aplicaciones .NET se ejecutan dentro de un dominio de aplicación (aplication domain) que es una estructura del CLR, la cual es una unidad de aislamiento de la aplicación, garantizando que ésta no puede acceder directamente a los recursos o al código de otras aplicaciones, y que un fallo en una aplicación no afecta a las demás.

El concepto de “aplication domain” es similar al de un proceso del sistema operativo; la diferencia está está en que un dominio de aplicación requiere menos recursos que un proceso de sistema

De hecho, un proceso puede alojar más de un dominio de aplicación.

Aunque la extensión de los ensamblados coincide con la de las librerías dinámicas (.dll) o los archi-

vos ejecutables de Windows (.exe), el contenido de estos ficheros sólo se puede ejecutar mediante el CLR.

Al ejecutarse una aplicación .NET, existe una aplicación llamada CLR Host, que se encarga de iniciar un proceso con el CLR (si no está ya iniciado), y crear uno o más dominios de aplicación en el proceso del CLR para poder ejecutar la aplicación. Ejemplos de aplicaciones CLR Host son ASP.NET, y el cargador de aplicaciones .exe del shell de Windows.

* Cargador de clases:

Una vez creado el domino de la aplicación, el cargador de clases del CLR se encarga de buscar y cargar en memoria las clases necesarias para ejecutar la aplicación. Las clases necesarias se pueden encontrar en el propio ensamblado de la aplicación o en otros ensamblados referenciados por éste.

* Compilación JIT:

Los procesadores actuales no son capaces de ejecutar las instrucciones IL (intermediate language) directamente, aunque puede que esto sea posible en el futuro. Por ello, es necesario un proceso de traducción de código IL al código máquina del procesador en el que se está ejecutando la aplicación.

El método del CRL detecta todos los tipos de datos referenciados en su código y guarda en una estructura de datos interna, toda la información sobre los métodos de estos tipos y las direcciones donde se puede encontrar su código fuente.

La primera vez que un método gestionado es invocado, el código IL correspondiente es traduciendo a código máquina por un compilador llamada JIT compiler (Just In Time Compiler).

El código máquina generado por el JIT compiler se almacena en memoria. Este código nativo generado se borra una vez terminada la ejecución de la aplicación, que la próxima vez que se ejecute se volverá a traducir el código IL a nativo. El proceso de nativo está optimizado para cada tipo de procesador, por lo que en global el rendimiento es similar. Es posible precompilar una aplicación .NET para un procesador concreto que con la aplicación Ngen.exe incorporada en el .NET Framework SDK si es necesario maximizar el rendimiento, pero entonces perdemos la compatibilidad con otras plataformas.

Durante el (Just In Time) aparte de traducir el código nativo, se verifica el código para asegurar que se realiza operaciones de acceso a memoria incorrectas, que los métodos se llaman con el número de parámetros correctos, .NET Framework que los tipos de los parámetros y del retorno coinciden, etc. Para realizar estas comprobaciones, el CLR utiliza la información sobre los tipos de datos alma-

cenados en los metadatos del ensamblado.

Si se determina que el código IL (intermediate language) no es seguro, se lanza una excepción y el

método no se ejecuta. Los compiladores de C#, Visual Basic .NET y J# producen siempre código IL seguro.

Los tipos de compilador JIT (Just In Time) son los siguientes:

Normal. El código nativo generado a partir del código MSIL (Microsoft intermediate language)está optimizado para aprovechar al máximo las prestaciones de la máquina en la que se ejecuta la aplicación. Es un proceso más lento, pero el código generado es más eficiente y rápido.

Econo. No optimiza el código nativo; simplemente traduce el código MSIL (Microsoft intermediate language) a nativo. Es más rápido, pero el código resultante es más lento.

Pre-JIT. El código MSIL (Microsoft intermediate language) se traduce enteramente a código nativo y se almacena para próximos usos.

Las características de la compilación JIT son las siguientes:

Independencia de la plataforma. El código MSIL es común para todas las plataformas. Es en el proceso de compilación JIT cuando se transforman en código nativo, por eso no es necesario compilar una versión diferente de la aplicación para cada plataforma.

Interoperabilidad entre lenguajes. Todos los compiladores de lenguajes .NET generan código MSIL, que es posteriormente compilado por el JIT compiler, independientemente del lenguaje original en el que fue desarrollada la aplicación. Es más, diferentes ensamblados pueden proceder de código fuente escrito en lenguajes diferentes.

Compilación bajo demanda. El código MSIL se va traduciendo a código nativo a medida que se va necesitando, es decir, a medida que el programa se va ejecutando se compilan los métodos solicitados que no han sido compilados previamente. El código nativo generado se guarda para su

posterior uso. Esto evita que se compilen partes del código MSIL que quizás no se usen casi nunca hasta que no sea necesario.

Ejecución CLR. El código generado por el compilador JIT se denomina código nativo gestionado, porque se ejecuta dentro del entorno del CLR, es decir, el CLR gestiona la ejecución de ese código de forma que no se puedan producir referencias inválidas, controla la memoria, comprueba la seguridad, etc. Este código sí que es ejecutable directamente por el procesador.

También te puede interesar ...

Deja un comentario

* Al utilizar este formulario, aceptas que este sitio web almacene y maneje tus datos.

Adblock Detectado!!

Ayúdanos deshabilitando la extensión AdBlocker de tu navegador para visitar esta web.
Si no sabes hacerlo en Chrome, consulta el siguiente enlace. Si utilizas Firefox, puedes consultar este otro enlace.
Esto mejorará tu experiencia en este sitio web.