TEMA 066.
ENTORNO DE DESARROLLO
[Link]
Actualizado a 09/09/2020
P á g i n a 1 | 11
1. COMPONENTES DE LA PLATAFORMA .NET
• .NET Standard
• .Net Implementations (.NET Framework, .NET Core, Mono, Universal Windows Platform)
• .NET Runtimes (CLR, CoreCLR, Mono Runtime, .Net native for UWP).
• .NET tooling and common infraestructure (compilador y otras herramientas).
• Servidores .NET Enterprise Servers
• Entornos de desarrollo (Microsoft Visual Studio .NET, Visual Studio Code, Monodevelop, JetBrains)
2. TECNOLOGÍAS DE .NET
• Aplicaciones Web: [Link] Framework 4.8 y [Link] Core 3
Por ahora se mantienen como Frameworks separados, pero en .NET 5 se van a fusionar
• Servicios: [Link] y WCF (comunicaciones).
• Aplicaciones de escritorio: WinForms (legacy), WPF con leguaje de marcado XAML.
• WINAPI: (Windows API) en C++, que permite un acceso a bajo nivel del sistema, por ejemplo, en lo
referente a la gestión de memoria y el acceso al hardware.
• Gestión de paquetes y dependencias mediante el servicio NuGet integrado con el Visual Studio
• Aplicaciones en la nube: Microsoft Azure
Quiere reorientar la manera de desarrollar aplicaciones para que sean más ligeras y portables de manera
que se puedan desplegar fácilmente en la nube o en contenedores para formar microservicios, por eso
lanzó el .NET Core
P á g i n a 2 | 11
Evolución hacia microservicios desarrollados con [Link] Core y alojados en Azure
• Aplicaciones para dispositivos móviles: Silverlight (deprecated), XNA y especialmente Xamarin.
3. STANDARD, IMPLEMENTACIONES Y RUNTIMES
Microsoft en los últimos años ha hecho un esfuerzo para otorgar más protagonismo a su comunidad de
desarrollo y al software libre. Fruto de ello es la creación de “.NET Core” que es Open Source, más
modular y configurable mediante ficheros JSON.
Por un lado, se ha creado “.NET Standard”, una especificación de una API básica que debe realizar
cualquier implementación de .NET. En línea con esto, “.NET Framework”, la implementación “clásica” de
Microsoft, ha empezado a cumplir este estándar desde la versión 4.8. Esta implementación conserva
además funcionalidades específicas de Windows y otras extras.
P á g i n a 3 | 11
Por otro lado, la propia empresa ha liderado el desarrollo de “.NET Core”, que es otra implementación
del mismo .NET Standard, pero orientada desde el principio a la portabilidad entre plataformas
(Windows, Linux y MacOS), a “la comunidad” y al software libre, sin dependencias específicas de
Windows. Los últimos años parece ser la apuesta preferente de la empresa, incluso por encima de su
propio .NET Standard. Se oriente a aplicaciones en la nube o en contenedores como Docker, de manera
que se puedan desplegar microservicios con un servidor web embebido (Kestrel) y un framework ligero
con las mínimas dependencias y multiplataforma, funciona fuera de entornos Windows.
Existen otras dos implementaciones del estándar: Mono, que es una longeva iniciativa de software libre
para implementar .NET, proveniente del mundo Linux, y .NET Native for UWP, orientada a la plataforma
“UWP” de Microsoft, que es específica de Windows y busca ofrecer a desarrolladores y empresas un
entorno único de desarrollo que permite generar aplicaciones para las diferentes versiones de Windows
(tabletas, PCs, Xbox, etc).
Cada implementación tiene su propio runtime: CLR (Common Language Runtime) es el clásico para .NET
Framework, CoreCLR es el de Core, y finalmente hay “Mono runtime”, y “.Net native for UWP”.
4. .NET FRAMEWORK
Aunque este apartado se refiere específicamente a .NET Framework, que es la versión “clásica” de .NET, los mismos
conceptos existen para .NET Core, con el mismo nombre.
Los principales componentes del Framework .NET o Marco de trabajo .NET son:
1. El conjunto de lenguajes de programación
2. FCL (Framework Class Library)
3. El Entorno Común de Ejecución para Lenguajes o CLR (Common Language Runtime)
P á g i n a 4 | 11
5. LENGUAJES DE PROGRAMACIÓN
• Son todos lenguajes orientados a objetos, hay más de 100.
o Los habituales son C# y [Link]
• Todos deben cumplir 2 especificaciones:
o CLS (Common Language Specification): hace que todos los lenguajes del .NET operen de la
misma manera, crea una infraestructura común de lenguajes
o CTS (Common Type Sepecification): todos los lenguajes tienen el mismo tipo de datos.
6. FCL (FRAMEWORK CLASS LIBRARY)
Contiene las clases sobre las cuales se construyen todas las demás. Para identificarlas, se utilizan los namespaces.
[Link] (InteropServices es el tipo de la clase y [Link] es el espacio de nombres)
• [Link] / [Link] / [Link] / [Link] / [Link] / [Link]
Maneja la mayoría de las operaciones básicas:
• Interacción con los dispositivos periféricos
• Manejo de datos ([Link])
• Administración de memoria
• Cifrado de datos
• Transmisión y recepción de datos por distintos medios (XML, TCP/IP)
• Manejo de cadenas de caracteres y expresiones regulares
• Interacción con el API Win32 o Windows API.
• Compilación de código
• Manejo de arreglos de datos y colecciones
7. CLR (COMMON LANGUAGE RUNTIME)
Recuérdesde que estrictamente hablando CLR sólo se refiere al runtime de .NET Framework. Para Core,
su nombre es CoreCLR. Sin embargo, todos los conceptos tienen el mismo nombre en ambos casos.
Es el entorno donde se ejecutan todas las app .NET.
La herramienta de desarrollo compila el código fuente de cualquiera de los lenguajes soportados por
.NET en un código intermedio o administrado (MSIL o IL, Microsoft Intermediate Lenguaje), similar al
BYTECODE de Java. Para generar dicho código el compilador se basa en el Common Language
Specification (CLS) que determina las reglas necesarias para crear ese código MSIL compatible con el
CLR.
Para ejecutarse se necesita un segundo paso, un compilador JIT (Just-In-Time) es el que genera el
código máquina real que se ejecuta en la plataforma del cliente. Se requieren tantas compilaciones JIT
como instancias de la aplicación se estén ejecutando
De esta forma se consigue con .NET independencia de la plataforma hardware
CLR admite un modelo de seguridad denominado seguridad de acceso del código o CAS (Code Access
Security) para el código administrado (IL). En este modelo se conceden permisos a los ensamblados
basados en la identidad del código
Funciones:
• Compilador de MSIL a nativo
• Recolector de basura
P á g i n a 5 | 11
• Motor de seguridad
• Motor de depuración
• Verificador de Tipos
• Administrador de Excepciones
• Soporte multiproceso (threads)
El código puede ser gestionado o no gestionado. Si es gestionado, la administración de memoria, punteros etc los
gestiona el CLR. Si no es gestionado el CLR no participa en la ejecución del código, el S.O es el que se encarga de
ello.
8. ENSAMBLADOS (EXT. PE32- WINDOWS PORTABLE EXECUTABLE)
Son las unidades de creación de las app .NET Framework. Es un concepto específico de este framework, ya que .NET
Core no sigue exactamente esta implementación.
Son la unidad fundamental de implementación, control de versiones, reutilización, ámbitos de activación y permisos
de seguridad.
Proporcionan a CLR la información necesaria para conocer las implementaciones de tipos.
cada ensamblado .exe se ejecuta en su propio dominio de aplicación (AppDomain) –en su propio proceso de
Windows–. Sin embargo, los procesos host de CLR, como IIS (Internet InformationServices) o Microsoft SQL Server,
pueden decidir ejecutar varios dominios de aplicación en el mismo proceso de Windows.
Funciones:
• Contiene el código que ejecuta el CLR
• Crea un límite de seguridad
• Crea un límite de tipos
• Forma un límite de versión
Elementos:
• Manifiesto del esamblado, que contiene los metadatos del esamblado (es el único elemento
obligatorio)
o Nombre esamblado
o Referencia cultural, contiene a qué parte del mundo va destinada la app, codificación de
caracteres
o Versión
o Es el que dice cómo se relacionan los demás elementos del esamblado
o Puede tener información sobre otros esamblados, tipos de datos, lista de archivos, la huella de
los archivos si van firmados..
• Metadatos de tipos
• Código de lenguaje intermedio (MSIL) el sign code permite firmar el ejecutable para asegurarse de que
no lo ha tocado nadie
• Conjunto de recursos
9. ACCESO A DATOS ([Link])
Evolución: ODBC, DAO, OLEdb, ADO (Se basa en RecordSets, conectados formados por una sola tabla), RDB,
[Link], Entity Framework.
A partir de la versión 3.5, el framework .NET incluye el componente [Link] Entity Framework, que es framework
ORM (Object/RelationalMapping) que permite el desarrollo de aplicaciones de software orientadas a datos,
reduciendo la cantidad de código y el mantenimiento necesarios. Este es el único ADO que Microsoft recomienda
para nuevos desarrollos.
La versión del framework .NET 3.5 también introdujo la innovación del framework LINQ (Language-
IntegratedQuery). Mediante LINQ se pueden ejecutar consultas a diferentes orígenes de datos desde los lenguajes
de programación .NET.
P á g i n a 6 | 11
LINQ incluye patrones estándar y de fácil aprendizaje para consultar y actualizar datos, y su tecnología se puede
extender para utilizar potencialmente cualquier tipo de almacén de datos. Visual Studio incluye ensamblados de
proveedores para LINQ que habilitan el uso de LINQ con colecciones de .NET Framework, bases de datos SQL Server,
conjuntos de datos de [Link] y documentos XML.
Sus implantaciones son: LINQ to Objects, LINQ to [Link], LINQ to Entities, LINQ to SQL, LINQ to DataSet, LINQ
to XML
ADO. NET aprovecha la eficacia de XML para proporcionar acceso a
datos SIN mantener una conexión abierta.
El DataSet se llena con datos procedentes de un origen XML. Es
una representación residente en memoria de datos.
Manipulación de datos:
• Connection – conectividad con origen de datos
• Command operaciones típicas
• DataReader agiliza la consulta de datos a través una
lectura en modo avance
• DataAdapter proporciona el puente entre el objeto
DataSet y el origen de los datos
BBDD hay un pull de conexiones abiertas, se usan y no se cierran
sino que
ExtendedProperties se puede colocar en élseinformación
devuelven al pull
personalizada
Cuando se agrega una relación al DataRelationCollection, se puede agregar un UniqueKeyConstraint
y un ForeignKeyConstraint, para imponer restricciones de integridad
10. [Link] (CAPA DE PRESENTACIÓN)
[Link] es un conjunto de tecnologías del framework .NET para construir aplicaciones Web y servicios Web.
En [Link] “clásico” tanto aplicaciones como servicios web se despliegan en el servidor de aplicaciones IIS (Internet
InformationServices). El ensamblado [Link] contiene todas las clases de [Link].
Sin embargo, con la llegada de Core, se ha definido una API, llamada “[Link] Core”, extremadamente similar a
[Link] clásico pero más portable, destinada a formar parte de .NET Core. De esta manera se pueden desarrollar
aplicaciones de [Link] que sean portable entre los diferentes entornos que soporta .NET Core. Los conceptos de
esta sección se refieren a [Link] “clásico” pero todo es similarmente aplicable a la versión Core.
Modelos de programación:
El hecho de elegir uno de los modelos de programación al comenzar un proyecto de [Link] no excluye
necesariamente a los otros, sino que es posible tener aplicaciones “híbridas” y en muchos casos tendrá todo el
P á g i n a 7 | 11
sentido desarrollar ciertas partes de la aplicación con un modelo de programación y otras partes con otro modelo
distinto.
• [Link] Web Forms (legacy) fue el primero de los tres modelos de programación en existir, y
proporciona un gran nivel de abstracción con un modelo de programación familiar basado en eventos y
controles que favorece la productividad mediante la programación declarativa reduciendo la cantidad de
código necesaria para implementar una determinada funcionalidad. El el modelo más lento.
• [Link] MVC se concibió como alternativa a Web Forms y proporciona un modelo de programación
basado en el popular patrón de arquitectura MVC. Entre sus principales características destacan su
completa integración con pruebas unitarias y su separación más clara entre la lógica de presentación, la
lógica de negocio y la lógica de acceso a datos.
• [Link] Web Pages/Razor es el más reciente de los tres modelos de programación, y fue creado como
respuesta a una creciente demanda de desarrolladores web sin experiencia previa con [Link], cuya
iniciación en [Link] Web Forms o MVC les suponía una inversión inicial de tiempo demasiado grande.
Web Pages proporciona un modelo de programación más simple y rápido de aprender, sin renunciar a
toda la funcionalidad y flexibilidad de [Link].
[Link] Web Forms es más adecuado en desarrollos RAD (Rapid ApplicationDevelopment), mientras que el
framework [Link] MVC facilita las pruebas automáticas de software
11. WCF (WINDOWS COMMUNICATION FOUNDATION) DESARROLLO DE APP
DISTRIBUIDAS
La limitación que presentan los servicios Web al utilizar solamente el protocolo HTTP es superada en .NET por los
servicios WCF (Windows Communication Foundation), que pueden ejecutarse sobre TCP, HTTP, IPC o MSMQ.
WCF es un framework para construir aplicaciones orientadas a servicios. Mediante WCF se pueden enviar datos
como mensajes asíncronos entre los endpoints de dos servicios, que pueden estar hospedados en IIS o en otro
servidor.
Los servicios Web WCF pueden ser SOAP o REST; en este último caso, los mensajes intercambiados pueden tener el
formato XML sin estar ensobrados en SOAP, el formato XML ATOM o un formato no XML como JSON.
Aunque Microsoft recomienda utilizar para desarrollar aplicaciones distribuidas, WCF, también se puede utilizar
.NET Remoting ([Link]), que consiste en un conjunto de servicios ycanales de comunicación –
como el canal TCP– que transmiten mensajesentre aplicaciones remotas, con la ayuda de formateadoresque
codifican y decodifican esos mensajes.
12. SEGURIDAD EN .NET
Lado servidor ([Link])
• Políticas de autenticación La herramienta de desarrollo es MS Visual [Link]
o Windows
o Certificado .NET Enterprise Servers
o Anónimo • Servidores de sistema: Windows 2003 Server, Application
• Autorización o denegación Center, System Management Server, Operations Manager
o Por IP • Servidores de aplicación: IIS, Biztalk, Exchange, Directorio
o nombreHost Activo, SharePoint Portal Server.
o URL
P á g i n a 8 | 11
Lado Cliente (WebConfig)
• Autenticación
o Windows
o Forms (usuario / contraseña)
o Ms Passport
o Anónima
o Certificados de cliente
• Autorización
o URL
o Funciones (roles o funciones de un analista, admin BBDD etc)
o Ficheros
13. ARQUITECTURA DETALLADA DE UNA APP DISTRIBUIDA
CAPA DE PRESENTACIÓN ([Link], WINFORMS, WPF (WINDOWS PRESENTATION
FOUNDATION) O SILVERLIGHT)
• Componentes de Interfaz de Usuario mostrar la información al usuario y capturar la interacción del
usuario con la aplicación
• Presentation Logic Components, contienen la lógica de presentación, que es distinta que la lógica de
negocio, ya que su objetivo es sólo la presentación gráfica de la información al usuario
• En [Link] se pueden utilizar formularios Web con controles Web como DataGrid
• Las interfaces de WPF y Silverlight están basadas en XAML (Extensible ApplicationMarkupLanguage).
P á g i n a 9 | 11
CAPA EMPRESARIAL
• Flujos de trabajo empresariales (workflows) implementados mediante Biztalk Orchestation
• Fachada de la aplicación (ApplicationFacade): Es un componente opcional que se utiliza cuando la
comunicación con los componentes de lógica de presentación requiere de la composición de
funcionalidad de varios componentes empresariales
• Componentes de Negocio implementan las reglas de negocio
• Entidades de Negocio representan los datos que se pasan entre los componentes. Las entidades
empresariales se pueden implementar en .NET mediante [Link] Entity Framework. Permite utilizar
clases POCO (Plain Old ClrObjects), que son clases del modelo de dominio que ignoran la persistencia.
o El estilo de arquitectura DDD (DomainDrivenDesign) se centra en el modelo de dominio del
sistema e identifica patrones de diseño como Entidad
• WF (Windows Workflow Foundation). Es necesario hospedar el motor de workflow en una aplicación
[Link] o Windows.
o Microsoft BizTalk Server es un servidor de integración que permite automatizar procesos de
negocio.
CAPA DE SERVICIOS ([Link] / WCF)
• Interfaz de servicioses como un web service, expone los servicios para que otro web service lo use. Son
elementos tipo fachada que controlan los servicios de asignación y transformación para permitir la
comunicación con un servicio.
• Intercambio de mensajes
CAPA DE DATOS
• Agentes de Servicios permiten a los componentes empresariales acceder a un servicio externo
encapsulando el acceso a un servicio.
• Componentes de acceso a datos (Data Access Components) obtiene acceso a los datos en una capa
independiente de componentes lógicos de acceso a datos
• Ayudas / Utilidades de acceso a datos (Data Helpers/ Utilities): como las definidas por algunos frameworks
de acceso a datos
• Usa [Link] Entity para crear el modelo de datos y exponerlo mediante WCF Data Services
• Encapsulan todas las operaciones de almacenamiento: conexiones, consultas, escrituras…
• Funciones CRUD (create, read, update, delete)
Frameworks de ORM
• [Link] 4.8 dispone de Entity Framework que es un mapeador objeto-relacional
• También puede usar NHibernate y otros Frameworks externos
• [Link] Core 3 dispone de otra versión de Entity Framework adaptada
P á g i n a 10 | 11
14. ANEXO
P á g i n a 11 | 11