B3-T6_.NET Flashcards

1
Q

¿Cuál es el conjunto de componentes software de Microsoft .NET FRAMEWORK que se utilizan por los programadores para acceder a datos y servicios de datos?

A

ADO.NET

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

¿Qué utilidad tiene ASP.NET?

A

Se utiliza para crear aplicaciones WEB DINÁMICAS de Microsoft.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

¿Qué API de Microsoft .NET se usa para programación de INTERFACES GRÁFICAS?

A

Windows Forms

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

¿Qué es NHIBERNATE y qué tiene que ver con Hibernate?

A

Es la conversión de Hibernate de Java a C# para su integración en .NET.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

¿Cuál es el equivalente al concepto de “package” en .NET (C# y VB)?

A

NAMESPACE

*Un namespace o espacio de nombres es un medio para organizar clases dentro de un entorno, agrupándolas de un modo más lógico y jerárquico.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

¿Cómo nos importamos una librería en .NET? pon un ejemplo.

A

Con using.

PRIMERO: hay que instalarla:

dotnet add package System.Net

SEGUNDO: la importamos:

using System.Net;

NOTA: la librería “System.Net” es para peticiones HTTM y recibir objetos JSON.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Con Java tenemos print y println para imprimir por pantalla, pero ¿cómo se hace en C#?

A

Console.Write => escribir el texto seguido (como “print”).

Console.WriteLine => lo escribe en lineas diferentes (como “println”).

NOTA: también puede incluir {INDICADORES}. Se pueden usar tantos como variables hayan:

Console.WriteLine (“Mi nombre es {0} y mi edad {1}”, nombre, edad);

*Los números indican la posición del variable, es decir, el “0” indica la primera variable, el “1” indica la segunda, …

IMPORTANTE: con el comando Console.Read o Console.Read.Key(), el programa nos pediría pulsar una tecla para continuar mostrando la información (así no lo mostraría todo de golpe).

También tenemos las instrucción Console.ReadLine para, en lugar de mostrar, introduce información por consola:

nombre = Console.WriteLine (); => nos pediría que introduzcamos un “nombre”.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Sabemos que en C#, además de las variables EXPLICITAS como en Java (int num=4;), existen las variables IMPLÍCITAS, ¿en qué consisten y como se declaran?

A

No hay que declararlas “explícitamente”, basa con asignarles el valor y según dicho valor el mismo sabrá el tipo de variable al que pertenece.

Se declaran con la palabra clave: var y hay que declararlas e iniciarlas en la misma linea:

Ej. CORRECTO:
var num=42;

Ej. INCORRECTO:
var num;
NUM=42;

IMPORTANTE: en C# las CONSTANTES (Const, en Java seria con Final) también hay que iniciarlas en el momento de crearlas:

Const double PI= 3,14; => este valor NO podrá ser cambiado durante la ejecución del programa.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Sabemos que un bucle es una estructura repetitiva que permite ejecutar el código de su interior, pero ¿cuál es la diferencia entre el bucle WHILE y el DO WHILE?

A

En el bucle WHILE primero se evalúa la condición y luego se ejecuta el código.
En cambio, en el bucle DO WHILE, primero se ejecuta el código y luego se evalúa la condición, es decir, con DO WHILE siempre se ejecutará el código mínimo una vez:

do
{
//código
{
while (condición)

NOTA: también tenemos el bucle FOR:

for(variable inicial; Condición; Incremento)

ej: for(int x=1; x<=5; x++){
Console.WriteLine (x);
}

1
2
3
4
5

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Sabemos que un bucle esta programado para repetirse 3 veces, ¿hay alguna manera de omitir alguna de dichas repeticiones en C#?

A

Con la instrucción CONTINUE.

Si usamos continue dentro del bucle, en el momento de evaluar continue el bucle omitirá esa repetición, ejecutándose sólo 2 veces.

for (int i=0; i<10; i++)
{
if (i==5)
Continue;
Console.WriteLine (i);
}

/* Omite lo que hay dentro del “continue”, es decir, NO mostroará el “5”.

0
1
2
3
4
6
7
8
9

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

¿En qué se diferencia la instrucción if-else del Operador Condicional?

A

Hacen lo mismo, pero el Operador Condicional de una manera más reducida.

SINTAXIS Operador Condiconal:

Expresión1 ? Expresión2 : Expresión3; => SI LA 1ª ES VERDADERA IMPRIME LA 2ª, SI NO LO ES IMPRIME LA 3ª.

EJEMPLO con “if-else”:

int edad= 23;
string mensaje;

if (edad>= 18)
mensaje = “Bienvenido”;

else
mensaje= “NO puedes entrar”;
Console.WriteLine (mensaje);

EJEMPLO con “Operador Condicional”:

int edad= 23;
string mensaje;

mensaje=(edad<=18)?”Bienvenido”:”NO puedes entrar”;

Console.WriteLine (mensaje);

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

.NET FrameWork es lo que JRE es para Java, pero para .NET, es decir, es el corazón de la plataforma.NET (La VM + Librerías de Clases).
Pero, ¿es el único framework de .NET?

A

Al principio si, pues sólo era para Microsoft. Pero luego fueron apareciendo más con idea de usar la plataforma .NET en otros lenguajes, convirtiéndose en un estándar más aperturista.

El primero fue MONO, que es parecido a .NET FrameWork, pero para LINUX, creado por Icaza (Ximian), creador de GNOME (entorno de escritorio de Linux).
MONO, se puede instalar en LINUX, MacOS, UNIX, Windows, …

Entonces Microsoft estandariza todo a través de 2 estandares ECMA:
*Uno parecido a JVMS (Java Virtual Machine Specifications), pero más flexible y llamado ECMA 335 con el que creó el estándar CLI.

*Y, por otro lado, también estandarizó el lenguaje C# con el ECMA 334, es decir, C# ya es un lenguaje estándar, no sólo de Microsoft.

En resumen, .NET pasa a tener 4 productos en 2 vertientes:
1.WINDOWS -> implementaciones de Microsoft.
2-LINUX (MONO), .NET CORE y DOTGNU Portable .NET.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

.NET, para poderse usar con más frameworks o lenguajes además del suyo de Microsoft (.NET FrameWork), ¿con qué 2 estándares se estandarizó?

A

ECMA 334: estandariza C# (pasando a ser un lenguaje estándar, y NO sólo de Microsoft).

ECMA335: se llama CLI (Common Languaje Infraestructure). Este documento estandariza varias cosas (parecido a JVMS de Java):

1.El CLI estandariza el código intermedio (CIL) especificando un conjunto de instrucciones => definiendo el código CIL (bytecode).

2.Describe la arquitectura general del CLI:

a)CTS (Common Type System): tipos de datos (clases, enumeraciones, interfaces, estructuras y delegados).

b)CLS (Common Languaje Specification): reglas que indican como es ese lenguaje y capacidad.

NOTA: CTS y CLS, son los requisitos que tienen que cumplir cualquier lenguaje o FW que quiera ser compatible con .NET.

c)VES (Virtual Execution System): define el CLR (así llamó Microsoft a su Motor de Ejecución y JRE se llama en Java).
*VES es la capa que interpreta el código CIL, es decir, define el CLR.
*CLR es una implementación de VES.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

En Java hay 3 empaquetadores: .ear (empaquetado de aplicaciones Java EE), .war (módulos Web dentro del .ear) y .jar (módulos EJB dentro del .ear).
¿Cuáles son los formatos de empaquetado en .NET?

A

.dll o .exe

Portan el assembly, que es el empaquetado del código CIL en formato .dll o .exe, es decir, es el empaquetado de varias clases .exe y .dll.

NOTA:este empaquetado o ensamblado, se puede desensamblar con ildasm.exe

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

¿Qué semejanza tienen los ficheros.class de Java y los ficheros.dll o ficheros.exe de .NET?

A

El .class es el bytecode de Java y los .dll y .exe son los CIL de .NET.
El bytecode (Java) y CIL (.NET) son los ficheros de nuestro programa ya complicados, que se empaquetan en el assembly con extensión .dll o .exe y serán traducidos a código máquina a través del JRE (Java) y CLR (.NET) respectivamente.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Sabemos que el assembly es el empaquetado de CIL en formato .dll o .exe y que puede verse o desempaquetarse con ildasm.exe, pero, ¿qué contiene además del CIL?

A
  1. Manifest: fichero que informa sobre los metadatos del assembly:
    *Nombre sencillo.
    *Número de versión.
    *Información cultural.
    *Clave pública.
  2. _Metadata
  3. CIL: (Common Intermediate Language) es un archivo binario que contiene el código de bytes generado por el compilador de .NET cuando se compila un programa escrito en un lenguaje compatible con .NET, como C# o Visual Basic .
    El código CIL se ejecuta en la máquina virtual de Common Language Runtime (CLR) de .NET.
    IMPORTANTE: el CIL era conocido como MSIL (Microsoft Intermediate Language).
  4. Firma Digital

NOTA: el archivo de ensamblado (assembly) puede ser de dos tipos: ensamblados privados o ensamblados compartidos.
Los privados se usan para aplicaciones de un solo uso y los compartidos para permitir la reutilización de código entre aplicaciones.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

Con CLASSPATH en Java sabemos las rutas de las clases para que puedan ser cargadas por el ClassLoader (proceso de la JRE).
En .NET ¿donde se indican las rutas de los assembly para que los ejecute el CLR Loader?

A

En el GAC (Global Assembly cache), es un equivalente al CLASSPATH de Java, donde se encuentran las rutas de los ensamblados registrados y librerías de terceros que importamos de 3 maneras:

  1. gacutil -i “librería.dll”
  2. using “librería”
  3. indicando la ruta manualemnte (como en ClassPath)

*Estas librería se instalarían en el fichero GAC:
/usr/lib/mono/gac

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

Sabemos que el assembly empaqueta varias clases o CILs en .exe o .dll, pero ¿sabrías resumir el proceso completo?

A

1º De un código fuente (C#, vb.net u otro lenguaje que cumpla CLS/CTS) se genera el CIL (bytecode en Java).

2º Luego, el assembly empaqueta dicho código en .exe o .dll.

3º En el GAC (/usr/lib/mono/gac) registramos estos archivos empaquetados:
gacutil -i “fichero.dll”

NOTA: una vez en el GAC se ejecutan con CLR Loader.

NOTA2: este empaquetado o ensamblado, se puede desensamblar con ildasm.exe

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

Sabemos que las especificaciones Java se recogen en el JVMS (Java Virtual Machine Specificatión), para que otras plataformas, con JRE instaladas, puedan ejecutar un programa Java.
Para estandarizar .NET y poderse usar con otros lenguajes, además de Micrososft), en lugar de un documento (JVMS), hay 2: CLS y CTS, pero ¿qué son y que especifican?

A

CLS: (Common Languaje Specification): es un conjunto de reglas y requisitos que los lenguajes de programación deben seguir para ser compatibles entre sí y poder funcionar dentro del mismo entorno de ejecución de .NET.

CTS: (Common Type System) s el sistema de tipos común de .NET, que define cómo se representan los tipos de datos :
Clases (Reference Type)
Estructuras (Value Type)
Enumeraciones (Value Type)
Interfaces (Reference Type)
Delegados (Reference Type) => son punteros a funciones.

NOTA: VES (Virtual Execution System) es la capa que interpreta el CIL, es decir, define el CLR.
*CLR es una implementación de VES.

IMPORTANTE: estas 3 especificaciones (CLS, CTS y VES) estan recogidas en el documento CLI (Common Languaje Infraestructure), que, a través de dicjas especificaciones, define el CIL para que puedan implementarlo otro lenguajes => ECMA 334

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
20
Q

Define los módulos del CLR (JRE en Java) basándote en la foto:

A

Base Class Library Support: cargador de las Clases BASE.

NOTA: en .NET un paquete es un Espacio de Nombres (NameSpace).

Thread Support: gestión de hilos (CLR planifica hilos en ejecución en lugar de procesos).

Marshaller: transforma un objeto a otro formato. (Ej: Java->XML).

Type Checker: corrector de tipos.

Exception Manager: gestión de exceptiones.

Security Engine: motor de seguridad.

Debug Engine: motor de depuración (encontrar y corregir errores observando/monitoreando el código fuente).

JIT Compiler: (Just In Time) el compilador JIt transforma el código binario (bytecode o cil) a código máquina o NATIVO.

Garbage Collector: Recolector de Basura => libera memoria eliminado objetos en desuso.

CLR Loader: carga las rutas (clases) del GAC.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
21
Q

La parte de FOUNDATION de .NET FrameWork 3.0 son tecnologías para cubrir aspectos donde no llega Micrososft.
Define dichas tecnologías:

A

WPF: (Windows Presentation Foundation) para hacer interfaces de usuario MULTIPLATAFORMAS.

WCF: (Windows Comunication Foundation) amplia los Web Services (incluye seguridad en servicios SOAP: ws-Security).

WWF: (Windows Forkflow Foundation) para crear aplicaciones para flujos de datos.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
22
Q

¿Qué 2 herramientas importantes se introdujeron en .NET FrameWork 3.5?

A

1.LINQ: (Language INtegrated Query) ofrece una sintaxis de consultas a C# y VB.NET para poder guardar y recuperar datos de diferentes tipos de fuente (SQL, XML, …).

2.ENTITY FrameWork: (ORM) este ORM fue una gran innovación para guardar objetos en una BD Relacional sin tocar SQL (parecido al JPA).

ORMs de JPA: Hibernate (Java), Nhibernate (.NET), Eclipse Link (antes TopLink) y Open JPA.

mnemotecnia: estas 2 herramientas se compenetran muy bien: una sería la buscadora (LINQ) y la otra la guardadora (EF).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
23
Q

La versión actual de .NET FrameWork es la 4.8, pero ¿puedes explicar algunas tecnologías que hayan ido introduciendo las anteriores versiones hasta la 4.8?

A

.NET FrameWork 2.0:
1.Common Language Runtime => CLR (JRE en Java): entorno de ejecución (VM) de .NET FrameWork que, entre los servicios que proporciona (manejo de la memoria, gestión de excepciones, GC o la seguridad), compila el código fuente escrito en lenguajes de programación .NET como C#, VB.NET o F#, en código CIL.

2.FrameWork Class Librery => o BLC (Biblioteca de ClasesBase) son las clases base en .NET en paquetes, aunque los paquetes en .NET se llaman NameSpaces.
NOTA: parecido a rt.java.

3.WinForms: para hacer aplicaciones de escritorio para Windows.

4.ASP.NET: (ASPX) clases para hacer aplicaciones web.

5.ADO.NET: clases para acceder y manipular datos en bases de datos relacionales.

.NET FrameWork 3.0:
WPF: Windows Presentation Foundation => (para interfaces de usuario multiplataforma)
WCF: Windows Comunicaction Foundation => (para crear Web Services SOAP)
WWF: Windows Forkflow Foundation => (aplicaciones de flujos de datos)
Card Space

.NET FrameWork 3.5:
LINQ: consultas
Entity FW: ORM

.NET FrameWork 4.0:
Hasta aquí, la versión de CLR correspondía con la de .NET FW, pero a partir de la 4.0 sólo cambia el framework (4.8 actualmente), pues el CLR se mantendrá como CLR 4.0.

.NET FrameWork 4.5 => 4.8 (actual).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
24
Q

Sabemos que Icaza (en su fundación: Ximian) fue el primero que rompió la independencia de .NET FrameWork creando el framework MONO para poder usar otros SSOO (LINUX, MacOS, UNIX,…) sobre .NET FrameWork además de Windows.
Pero ¿qué hizo Microsoft al respecto?

A

Decide elevar a estándar su plataforma:

PRIMERO, lo estandariza implantando el ECMA 335_ y declarando a C# open source con el ECMA 334.

DESPUÉS, creó .NET CORE (open source) en 2016.
Este framework es gratuito y de código abierto para Windows, Linux y MacOS, es decir, es la versión MULTIPLATAFORMAS de .NET FrameWork (el cual reinó hasta 2015).

POR ÚLTIMO, en la versión 5 (2020) del mencionado .NET Core, fundió ambos FW (.NET FrameWork + .NET CORE) en uno, llamado .NET.

NOTA: Entonces, las versiones empezaron a llamarse:
.NET 5 (el primero que fusionó los antiguos) => 2020.
.NET 6 (es el actual).
.NET 7 y 8 (están en proyecto).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
25
Q

Sabemos que Micrososft, además de estandarizar su framework (ECMA 335) y C# (ECMA 334), en 2016 creó una primera versión MULTIPLATAFORMAS, llamada .NET Core y hace competencia a MONO (Icaza).

Comenta algunas de sus características:

A

*Su CLR se llama CoreCLR.

*La librería de clases base, antes llamada BLC (Class Base Library) o FLC (Framework Class Library), pasas a llamarse CoreFX.

*Su versión 1.0 nace en 2016 y se mantiene hasta su versión 3.1 de 2019 => pues en 2020 funde esta versión MULTIPLATAFORMAS .NET Core con la MONOPLATAFORMAS .NETFrameWork en una única versión llamada .NET 5 (MultiPlataformas).

NOTA: esta nueva y única versión multiplataformas (.NET), mantiene el CoreCLR y CoreFX.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
26
Q

Sabemos que cada plataforma tenía sus propias librerías de clases: .NET FrameWork (.NET BCL o FCL), .NET Core (CoreFX) y Xamarin (Mono BCL).
¿Qué hace el estándar .NET Standar 2.0 al respecto?

A

.NET Standar 2.0 unifica las 3 librerías de dichos 3 estándares, homogeneizando el uso de TODAS las clases y así disponer de las mismas clases en las 3 plataformas (.NET FrameWork, .NET Core y Xamarin),

.NET BCL + CoreFX + Mono BCL = .NET STANDARD 2.0

NOTA: ya con .NET 5 (2020), se unificaron las librerías de .NET FW y .NET Core tras las fusión de ambas plataformas.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
27
Q

Sabemos que .NET Standard 2.0 unificó las librerías de clases de las 3 plataformas: .NET FW (.NET BCL), .NET Core (CoreFX) y Xamarin (Mono BCL), para que los 3 puedan usar TODAS las clases.
Pero ¿qué librerías y clases son esas?

A

.NET STANDARD 2.0

LIBRERÍA => CLASES

XML => XLinq - XML Document - XPath - XSD - XSL

SERIALIZATION => BinaryFormatter - Data Contract - XML

NetWorking => Sockets - WebSockets - Http - Mail

IO => Files - Compression - MMF

THREADING => Threads - Thread Pool - Tasks

CORE => Primitives - Collections - Reflection - Interop - Linq

NOTA: ya con .NET 5 (2020), se unificaron las librerías de .NET FW y .NET Core tras las fusión de ambas plataformas.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
28
Q

La herramienta dotnet se introdujo en .NET Core 1.0, que fue lanzado en junio de 2016.
¿Qué utilidad tiene dicha herramienta?

A

Esta herramienta se incluye en el SDK (kit de desarrollo de software) de .NET Core y proporciona un conjunto de comandos de línea de comandos para crear, compilar, publicar y ejecutar aplicaciones .NET Core en diferentes plataformas y sistemas operativos.

Desde la versión 2.0 de .NET Core, la herramienta “dotnet” también se utiliza para instalar y administrar paquetes NuGet, lo que antes se hacía con la herramienta “nuget.exe”.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
29
Q

La herramienta “dotnet” (introducida en .NET Core 1.0 e incluida en su JDK) proporciona una amplia gama de funciones que permiten a los desarrolladores de .NET Core crear, compilar, publicar, ejecutar y administrar aplicaciones .
Expón algunas de dichas funciones:

A

new: crea un nuevo proyecto .NET Core a partir de una plantilla específica.

**restore**: descarga y restaura los paquetes NuGet necesarios para un proyecto.

**build**: compila un proyecto .NET Core y crea un ensamblado ejecutable.

**publish**: publica una aplicación .NET Core en un formato específico para una plataforma de destino, como un archivo .exe, .dll o un archivo ZIP.

**run**: ejecuta una aplicación .NET Core.

**test**: ejecuta pruebas unitarias en un proyecto.

**pack**: crea un paquete NuGet a partir de un proyecto .NET Core.

**add**: agrega una referencia a un paquete NuGet a un proyecto existente.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
30
Q

dotnet es la herramienta de línea de comandos que aporta .NET Core 1.0 para generar código, compilar (build), ejecutar una aplicación (run), hacer pruebas (test),empaqueta (pack) …
Expón algunas de sus sintaxis:

A

dotnet -h => muestra todos los comandos.

dotnet add package PAQUETE => para agregar un PAQUETE NuGet a un proyecto .NET Core.

dotnet new console => para crear una aplicación tipo “consola”.

dotnet run => ejecuta el programa.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
31
Q

Maven es la herramienta de Java para la Gestión de Dependencias y la Automatización de Tareas, ¿cómo se llevarían a cabo estos 2 procesos con dotnet?

A

En lugar de sólo con una herramienta (Maven), en dotnet se realiza con 2 herramientas independientes*:
dotnet nuget (Dependencias) y msbuild (Tareas).

1.dotnet nuget => proporciona comandos nuget adicionales, para la Gestión de Dependencias:

EJEMPLO:
dotnet nuget add source: Agregar una fuente de paquetes NuGet al archivo de configuración de NuGet.

2.dotnet msbuild => herramientas de dotnet para la Automatización de Tareas: construcción del proyecto, compilación empaquetado, …

EJEMPLO:

dotnet msbuild C:\MyProject\MyProject.csproj => compila el proyecto “MyProject.csproj”, que se encuentra ubicado en la carpeta “MyProject”.

NOTA: una vez compilado, se generará un archivo ejecutable que podremos ejecutar en nuestra máquina.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
32
Q

NuGet es un Gestor de Paquetes de .NET y permite buscar, instalar, actualizar y desinstalar fácilmente paquetes de código abierto o de terceros en los proyectos de .NET.
Pero, ¿cuál es su sintaxis?

A

*nuget <comando> [opciones] [argumentos]*</comando>

a) <comando>: es el comando que desea ejecutar, como install, uninstall, update, restore, list, push, pack, entre otros.

b) [opciones]: son las opciones que se pueden especificar con el comando.

c) [argumentos]: son los argumentos necesarios para el comando (nombre del paquete o la ubicación del archivo).

EJEMPLO1:
nuget install Newtonsoft.Json

“Esto instalará el paquete Newtonsoft.Json en nuestro proyecto y todas sus dependencias”.

EJEMPLO2:
*nuget update <nombre>*</nombre>

“Esto actualizará el paquete especificado en el proyecto y todas sus dependencias, si es necesario”.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
33
Q

La Estructura de Programación de Java se compone de: clases, interfaces, enumerados y anotaciones y la de C# de: clases, record (registros), interfaces y enumerados.
¿De qué se compone la Estructura de Programación de vb.net?

A

1.CLASES: estructura de programación con atributos y métodos, que sirve para crear objetos.

Class nombre => para declarar una clase.

End Class

2.ESTRUCTURAS: (parecidas a las clases)
*NO permiten herencias (NoInherits).
*NO permite inicializar los campos (atributos).
*Por defecto, TODOS sus métodos son públicos.
*Value Type: (tipo de valor) se pasa x valor de forma natural, es decir, una estructura con varios campos tarda más que una con menos.
A diferencia de Value Reference, (valor x referencia): strings, arrays, delegates, clases,…

Structure nombre => para declarar una estructura.

End Structure

3.MÓDULO: un módulo (module) es un saco de funciones => es para tener un grupo de funciones globales.

Module nombre

End Module

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
34
Q

En Java los métodos void son los que NO devuelven valor.
¿Hay alguna similitud en vb.net?

A

Si, en vb.net se llaman subrutinas (sub), que es un método que NO devuelve valor.

En cambio, cuando SI devuelve valor se llama function.

Subrutinas (sub) / funciones (function)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
35
Q

Con final en Java, declaramos que de una clase NO se pueda heredar.
¿Hay alguna similitud en vb.net?

A

NotInheritable.
Lo contrario seria MustInherit, que es como decir que se pueda heredar y sobrescribir la clase en cuestión.

IMPORTANTE: las herencias se declaran en Java con extends y en vb.net con inherits.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
36
Q

La Estructura de Programación* de vb.net se compone de clases, estructuras y módulos.
Expón algunas características de los modules y pon algún ejemplo:

A

Un module es una agrupación de funciones o subrutinas (sub), por ejemplo, en un módulo podemos definir las funciones de una BD:

public module BBDD

end module

=> Un module es similar a una clase: sólo se inicializa 1 vez y con todos sus miembros shared (estáticos).
shared = static (Java)

NOTA: se puede acceder a los métodos y variables de una clase static sin crear una instancia de la misma.

=> Los módulos NO admiten herencia ni implementan interfaces.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
37
Q

La Estructura de Programación* de vb.net se compone de clases, estructuras y módulos.
Y, sabemos que un structure es una especie de “REGISTRO”, parecida a una clase, pero con 3 restricciones.
¿Cuáles son esas 3 restricciones?

A
  1. No se permiten **inherits* (herencias). Aunque, si implements (interfaces).
  2. No se pueden inicializar campos.
  3. Por defecto, todos sus miembros son públicos.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
38
Q

Principales diferencias entre los 3 componentes que forman la Estructura de vb.net:

A

_CLASES:
SI herencia.
SI implementar interfaces (implements).

NOTA: la herencia solo se aplica a las clases (Class) en VB.NET**

_MODULES:
NO herencia.
NO implementaciones.

NOTA: sus miembros son shared (static = que Java) => se puede acceder a los métodos y variables de una clase static sin crear una instancia de la misma.

STRUCTURE:
NO herencia.
SI implements (interface).

NOTA: en vb.net se implemetan las interfaces IGUAL que en Java => implements nombre_interfaz

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
39
Q

¿Qué utilidad tiene la palabra clave partial en vb.net?

A

partial divide una clase, estructura, interfaz o módulo, pudiendo repartir su código por el documento u otros ficheros.vb.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
40
Q

¿Qué utilidad tiene la palabra clave shadow en vb.net?

A

La palabra reservada Shadows en VB.NET se utiliza para crear un nuevo miembro en una clase que tiene el mismo nombre que un miembro en una clase base, pero con una implementación diferente.

La palabra clave Shadows permite redefinir un miembro en una clase base, ocultando su implementación original. Esto se utiliza cuando se quiere tener un comportamiento diferente en el miembro en la clase derivada, que no es el mismo que el comportamiento del miembro en la clase base.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
41
Q

¿Qué utilidad tiene la palabra clave overridable en vb.net?

A

Es lo mismo que una clase abstracta de Java, es decir, la palabra clave “Overridable” en VB.NET se utiliza para crear una CLASE base que puede ser extendida por clases derivadas.
En un MÉTODO podrá ser reemplazado / modificado por una implementación personalizada en una clase derivada.

*Tenemos 2 variantes:
MustOverride: para que los hijos sobrescriban.

NotOverride: método que NO se puede sobrescribir, igual que final método en Java.

RECORDATORIO: en vb.net se implementan las interfaces igual que en Java => implements

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
42
Q

¿Qué utilidad tiene la clausula using en vb.net o C#?

A

El objetivo de la cláusula using en C# o Using en VB es el de asegurar que los recursos asociados a un determinado objeto se liberan siempre, es decir, se emplea para asegurar que al acabar de usarlo siempre se llama al método Dispose() del objeto que referenciamos dentro de la declaración de using, para liberarlo.

Es decir, se utiliza para implementar la disposición automática de recursos en un bloque. Cuando un objeto implementa la interfaz IDisposable, puede utilizar un bloque “using” para asegurarse de que se libere el recurso utilizado por el objeto tan pronto como se completa el bloque.

FUNCIONAMIENTO: se declara el principio de un bloque using, para usar los recursos de dicho bloque, y una vez terminado, el bloque se libera gracias al método dispose, que es llamado por using AUTOMÁTICAMENTE una vez finalizado el boque.

using{resource list}
[staments]
end using

resurce = recurso
stament = declaración

NOTA: el método “Dispose” en VB.NET se utiliza para liberar recursos no administrados que se utilizan en un objeto o bloque using, como conexiones de bases de datos, archivos, sockets, entre otros.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
43
Q

El bloque “Using” en VB.NET se utiliza para asegurarse de que los objetos que implementan IDisposable se liberen correctamente, incluso en caso de excepciones o errores. Es decir, usas los recursos que aporta el bloque using y, una vez finalizado, using llama automáticamente al método dispose y este libera el bloque.
Pero, ¿puedes poner algún ejemplo?

A

En la foto se muestra un ejemplo de cómo se puede utilizar el bloque “Using” en VB.NET para trabajar con un objeto que implementa IDisposable, en este caso, una conexión de base de datos.

dim: se usa para declarar variables (= que var en Java).

Se utiliza un objeto “SqlConnection” para conectarse a una base de datos y realizar operaciones en ella.
El bloque “Using” se encarga de llamar automáticamente al método “Dispose” del objeto “SqlConnection” al final del bloque, lo que garantiza que la conexión se cierre y se liberen los recursos.

Es importante destacar que el bloque “Using” solo se puede utilizar con objetos que implementan IDisposable

NOTA: el uso de “Using” puede ayudar a garantizar que los recursos se liberen de manera oportuna y segura, lo que puede mejorar el rendimiento y reducir los errores en la aplicación.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
44
Q

Sabemos que un atributo en Java equivale a campo (field) en .NET. Pero, ¿a qué equivale un atributo de .NET en Java?

A

Un atributo de .NET equivale a una anotación en Java.
Pero, en .NET no se usa con “@”, sino con [ ].
Ej:
[serializable]

CAMPO (.NET) -> ATRIBUTO (Java)
[ATRIBUTO] (.NET) -> @ANOTACIÓN (Java)

45
Q

Define el principio de Encapsulación (private):

A

El Principio de Encapsulación determina que los atributos de los objetos deben ser siempre PRIVADOS (private), es decir, NO deben ser accesibles desde fuera de dicho objeto => SÓLO el objeto puede escribirlos o leerlos.

Este acceso limitado se realiza con get/set.

En resumen, el encapsulamiento OCULTA (private)atributos y métodos para que SÓLO pueden ser accedidos DESDE LA MISMA CLASE => se ocultan con _private_:

private int edad => para manipular desde otras clases seria con los métodos: getters y setters.

NOTA: Los getters se utilizan para obtener el valor de una propiedad (leer), mientras que los setters se utilizan para establecer el valor de una propiedad (escribir).

IMPORTANTE: con vb.net y C# se llama a los atributos encapsulados con PROPERTY en lugar de con get y set (aunque están en su interior => FOTO).

46
Q

Los métodos getters (para obtener o leer) y setters (establecer o escribir) se utilizan para acceder a los campos o propiedades de una clase encapsulada (private), en Java. En cambio, tanto en C# como en vb.net se hace con property.

Pon un ejemplo:

A

public class Clase1{

*private int* Edad; *public void SetEdad* (int edad){
*this*.edad= edad; }

*public int GetEdad{
return Edad;
}
}

*Con el método getter, mostramos la edad => PARA OBTENER (MOSTRAR) LA EDAD “Edad” DESDE OTRA CLASE LLAMAMOS AL MÉTODO GET => objeto.GetEdad();

Con el método setter, establecemos la Edad => GRACIAS AL MÉTODO **SETTER PUEDO USAR Y MANIPULAR EL ATRIBUTO “Edad” DESDE OTRA CLASE.

IMPORTANTE; con property es más fácil, aunque tiene los métodso get y set en su interior:

Public Property
…(métodos get/set)
End Property

47
Q

En VB.NET, ¿ qué uso tienen las palabras clave ReadOnly y WriteOnly?

A

Se utilizan para definir la accesibilidad de las propiedades en una clase.

ReadOnly: se utiliza para especificar que la propiedad solo puede ser leída y no modificada fuera de la clase en la que se define.

WriteOnly: se utiliza para especificar que la propiedad solo puede ser modificada y no leída desde fuera de la clase en la que se define.

En resumen, ReadOnly se utiliza para propiedades que solo pueden ser leídas, mientras que WriteOnly se utiliza para propiedades que solo pueden ser escritas. Ambas palabras clave ayudan a mejorar la seguridad y la encapsulación (private) de los datos dentro de una clase.

NOTA: estos modificadores se usan si NO lleva set/get.

48
Q

Los EVENTOS son mecanismos para establecer la comunicación entre una parte del programa y otra, más general que las EXCEPCIONES, ya que esta SÓLO notifican situaciones anómalas o errores.
Los eventos son para cualquier paso de información, pero, ¿cómo se procesan?

A

DECLARACIÓN DEL EVENTO:

evento + nombre_evento (dato del evento)

Event LabResult (…)

LANZAR EL EVENTO:

con el método _RaiseEvent + declaración

RaiseEvent NombreEvento (argumentos)

MANEJO DE EVENTOS:

_handles + nombre_evento**

handles LabResult

49
Q

Sabemos que con Java se declaran los métodos de una clases como estáticos con static.
¿Cómo sería con vb.net?

A

Con shared:

class sms
public shared sub enviarMail (…)

*Declara en la clase sms el método compartido (shared): “enviarMail”.

USO: nombre_clase . nombre_método

sms.enviarMail (..) => no haría falta tener que crear ningún objeto para poder invocar estos métodos compartidos o estáticos (igual que en Java)=> simplemente se relaciona el método con la clase: clase.método(..)

NOTA en VB.NET Sub y en Java void son palabras clave que se utilizan para definir métodos que no devuelven ningún valor y los que SI devuelven valor se llaman function.

50
Q

Los HILOS (Thread) en VB.NET (y en general en programación) se refieren a la capacidad de un programa para ejecutar varias tareas simultáneamente.
Un hilo es una unidad de ejecución independiente dentro de un proceso que puede ejecutar una parte del código en paralelo con otros hilos.

¿Cómo se gestionan en vb.net?

A

DEFINIMOS UNA SUBRUTINA (sub):

sub CalcularImpuestos (..)

end sub

LO DECLARAS CON UN “HILO” NUEVO + AddressOF CalcularImpuestos_:

Dim hilo as new Thread (AddressOF CalcularImpuestos)

Dim: para declarar variables (= que var en Java)
As: para identificar el tipo de dato:
AS new String / AS new int / …

USAMOS hilo.start() PARA EMPEZAR A EJECUTAR TODO EL CÓDIGO QUE TENEMOS EN EL HILO QUE LE HEMOS INDICADO:

NOTA en VB.NET Sub y en Java void son palabras clave que se utilizan para definir métodos o subrutina que no devuelven ningún valor y los que SI devuelven valor se llaman function.

51
Q

En VB.NET, una subrutina es una sección de código que realiza una tarea específica.
Se define utilizando la palabra clave Sub seguida por un nombre que identifica la subrutina.
¿Por qué se relaciona con los métodos void de Java?

A

Porque tampoco devuelven ningún valor, por lo que su tipo de retorno se define como Void. En otras palabras, una vez que se ejecuta la subrutina, se realiza su tarea específica y luego se sale de ella sin devolver un valor.

Las subrutinas se utilizan comúnmente para dividir un programa en bloques de código más pequeños y manejables.

SINTAXIS DE SUBRUTINA:

Sub MostrarMensaje()
Console.WriteLine(“Hola, mundo!”)
End Sub

_¿CÓMO LLAMAR DICHA SUBRUTINA?

MostrarMensaje()

*Este código llama a la subrutina MostrarMensaje(), que muestra el mensaje “Hola, mundo!” en la consola.

NOTA: los métodos que NO devuelven valor se llaman subrutinas y los que SI devuelven valor se llaman function en vb.net.

52
Q

Cuando estamos haciendo herencias en Java y queremos referirnos dentro de la clase hija a algo que este en la clase padre, se hace con super.
¿Cómo se haría con vb.net?

A

MyBase

*Se utiliza para hacer referencia a la clase base desde una clase derivada.

SINTAXIS:

MyBase.[nombre del miembro]

53
Q

Los constructores en vb.net empiezan por new, y por otro lado está Finalice(), pero ¿qué uso tiene?

A

Lo usa el destructor para LIBERAR recursos que serán recolectados por el Recolector de Basura (GC), que es el programa que administra la memoria de manera automática.

FINALIZE -> GC

IMPORTANTE: el destructor se llama automáticamente cuando el recolector de basura determina que el objeto ya no se utiliza y lo elimina de la memoria.

NOTA: se diferencian en que el constructor (new) se utiliza para inicializar el objeto, mientras que el destructor (finalize) se utiliza para liberar los recursos asociados con el objeto.

54
Q

Un constructor es un método especial que se llama automáticamente cuando se crea un objeto de una clase. Su propósito es inicializar los miembros de datos de la clase y realizar cualquier otra operación necesaria para poner el objeto en un estado válido.
Pero, ¿cuál es su sintaxis?

A

Dim miObjeto As New MiClase(argumento1, argumento2)

En este ejemplo, MiClase es el nombre de la clase y argumento1 y argumento2 son los argumentos que se pasan al constructor.

IMPORTANTE: se diferencia de un destructor en que el constructor (new) se utiliza para inicializar el objeto, mientras que el destructor (finalize) se utiliza para liberar los recursos asociados con el objeto.

Sintaxis del Destructor: (finalize)

Protected Overrides Sub Finalize()
‘ Código del destructor
End Sub

NOTA: el destructor se llama automáticamente cuando el recolector de basura determina que el objeto ya no se utiliza y lo elimina de la memoria.

55
Q

Sabemos que, en un principio (cuando era .NET FrameWork), sólo podían usar la plataforma vb.net (evolución de VB para .Net FW), C# y F# (lenguaje de programación funcional desarrollado por Microsoft).
Expón algunas características de vb.net:

A

*El código se organiza en namespaces (a diferencia de Java, donde se organiza en paquetes).

*La sentencia para usar elementos de otro namespace es imports (importar namespaces o paquetes), es decir, para acceder a las clases importando el paquete (namespace).

Ej: Import System.data (ado.net) => para importarnos las clases de ado.net (es la parte de BD).

*Los métodos que NO DEVUELVEN VALOR (como void) en vb.net son sub (subrutinas) / Y los que SI DEVUELVEN VALOR son function.

*Existe el concepto delegate, que es similar al concepto de puntero a funciones (métodos) de Java, tanto en vb.net como en C# => para poder pasarle a un método como parámetro con dirección de otro.
Es un puntero que apunta a funciones (métodos), es decir, que la variable apunte SÓLO a una función en lugar de a un objeto y pueda cambiar a la función que apunta.

OTRAS CARACTERÍSTICAS: new / finalize, try-catch-finally, using, IDisposable, MyBase, …

56
Q

Sabemos que, en un principio (cuando era .NET FrameWork), sólo podían usar la plataforma vb.net (evolución de VB para .Net FW), C# y F# (lenguaje de programación funcional desarrollado por Microsoft).
Expón algunas características de vb.net:

A

*Tenemos el constructor (new) y el destructor (finalize) => GC.

*Existe la sentencia de control de errores: Try-Catch-Finally (igual que en Java).

*La sentencia using para definir bloques cuyos recursos se liberan automáticamente (agilizando el programa).

*La palabra reservada me sirve para referenciar a la instancia actual (igual que this en Java).

*Con myBase hacemos referencia a la clase base de la que estamos heredando (como super en Java).

OTRAS CARACTERÍSTICAS: namespaces, imports, sub/function o delegate.

57
Q

Sabemos que, en un principio (cuando era .NET FrameWork => monoplataforma), sólo podían usar la plataforma vb.net (evolución de VB para .Net FW), C# y F# (lenguaje de programación funcional desarrollado por Microsoft).
Expón algunas características de vb.net:

A

*La conversión automática entre números y cadenas NO EXISTE => habría que usar la función CStr.

*El tipo currency (divisa), para hacer cálculos monetarios en vb, ha sido reemplazado por decimal en vb.net.

*El tipo variant (era como un almacén con objetos genéricos), ha sido reemplazado por object.

OTRAS CARACTERÍSTICAS: namespaces, imports, sub/function, delegate, mybase, me, using, new/finalize o try-catch-finally.

58
Q

Resuelve la controversia con static/shared entre Java, vb.net y C#:

A

En Java existen unos métodos y atributos estáticos (static), que son los que pertenecen a la clase y NO a los objetos.
En vb.net, en lugar de static se usa shared, que al igual que static, indica algo compartido con todos los objetos de la clase, porque pertenece a la clase.
En C#, es igual que en Java => static.

59
Q

Sabemos que ByVal y ByRef son parámetros por defecto de vb.net, pero, ¿podrías definirlos?

A

ByVal: valor x defecto cuando pasas variables a una función => ES UNA COPIA DE LA VARIABLE ORIGINAL.

ByRef: los parámetros que se pasan a una función son por referencia => OPERA DIRECTAMENTE SOBRE LA VARIABLE ORIGINAL, a diferencia de ByVal que usa una copia y tiene que utilizar otras instrucciones para alterar la variable de origen.

OPTIONAL ByVal: para argumentos opcionales con un valor por defecto.

OPTION STRICT: no se permite conversación implícita con pérdida de información:

a)ON: permite la conversación implícita con pérdida de información.
b)OFF: no permite la conversación implícita => entonces hay que hacer un **type para el cast explicito**, es decir, casting o conversión a implícito.
60
Q

Sabemos que, en un principio (cuando era .NET FrameWork => monoplataforma), sólo podían usar la plataforma vb.net (evolución de VB para .Net FW), C# y F# (lenguaje de programación funcional desarrollado por Microsoft).
Expón algunas características de C#:

A

*ESTRUCTURA:
Enumerados
Record (registros) = que “structure” de vb.net.
Interfaces
Clases

*Con virtual declaramos que un método PADRE puede ser sobrescrito por su clases HIJAS usando override.

NOTA: abstract y virtual son lo mismo, pero lo métodos de abstract estan vacíos.

*Con sealed declaramos que un método NO PUEDE ser sobrescrito o que una clase NO PERMITE que nadie herede de ella (es igual que final de Java).

*Para declarar miembros de clases (NO de instancia) se usa static, igual que en Java.

NOTA: una variable estática (static) es una variable que pertenece a la clase en que fue creada y se inicializa sólo una vez al inicio de la ejecución del programa.
A esta variable estática se puede acceder directamente con el nombre de la clase, sin necesidad de crear un objeto.

61
Q

La estructura record (registro) en C#, es igual que structure en vb.net. Y son una especie de registro o especie de clase puramente de datos, sin ninguna funcionalidad, es decir, unicamente de información (atributos y datos).
¿Qué otros elementos forman la estructura de C#?

A

CLASES: es un concepto clave en la programación orientada a objetos (POO) y proporciona una forma de encapsular y organizar el código en unidades lógicas, donde se definen: objetos y sus propiedades (atributos), métodos y eventos asociados.

ENUM: representa un tipo de datos que puede contener un conjunto limitado de valores discretos predefinidos.

INTERFACES: es una estructura que define un conjunto de métodos, propiedades y eventos (indexadores) que una clase o una estructura pueden implementar.

NOTA: en Java se implementa un INTERFAZ con “implements” / en C# se implementa con “ : “ y tmabién para hacer herencias se usan los “ : “, en lugar de “extends” (java) o “inherits” (vb.net).

62
Q

Abstract (Java) y Virtual (C#) son lo mismo, pero los métodos de abstract están vacíos.
¿Cómo funciona la herencia o sobrescritura en este tipo de clases?

A

1º ABSTRACT: una clase abstracta tiene un método abstracto (método sin código o vacío):

abstract class figura{ => CLASE
public abstract int GetArea(); => MÉTODO

NOTA: una clase ABSTRACTA no la puedes sellar (sealed), porque así no se podría heredar de ella, es decir, una clase sealed es lo contrario a abstract.

2º Luego tendríamos que usar la palabra reservada OVERRIDE (en Java es una @anotación opcional para que el compilador revise el código sobrescrito).

En C# es obligatorio sobrescribir (OVERRIDE) el método para usarlo:

public Override int GetArea; => -side

NOTA: la expresión LAMBDA (=>) sirve para sustituir las llaves: { }.

VIRTUAL: cualquier método (normal o abstract) en otros lenguajes podrá sobrescribirse, pero en C# NO se pueden sobrescribir los métodos normales, a no ser que los declaremos con VIRTUAL. Entonces podremos sobrescribirlo usando OVERRIDE.

public virtual double Area( ) {

}

63
Q

ADO.NET es el API de BBDD de bajo nivel (como JDBC) de la plataforma .NET y tiene 2 modos:

ONLINE: DATAPROVIDER: Connection -> Command (Parámetros: select, insert, update o delete) -> DataReader (cursor).

OFFLINE: DATASET -> DataAdepter -> DataSet (XML)

Define el modo OFFLINE:

A

DataAdapter rellena el DataSet (en memoria) con todas las tablas de la información solicitada (1 o más tablas) en formato XML y ya podríamos trabajar OFFLINE.

DataSet es un conjunto desconectado de datos con los que podemos trabajar de manera OFFLINE (puede contener datos de varias tablas).

IMPORTANTE: además de esta tecnología de “Bajo Nivel”, .NET (Microsoft) tiene el ORM (Object-Relational Mapping) Entity Framework, que es la tecnología para tratar con las BBDD a “Alto Nivel” (JPA tiene los ORMS: Hibernate, Eclipse Link o Open JPA).

64
Q

ADO.NET es el API de BBDD de bajo nivel (como JDBC) de la plataforma .NET y tiene 2 modos:

ONLINE: DATAPROVIDER: Connection -> Command (Parámetros: select, insert, update o delete) -> DataReader (cursor).

OFFLINE: DATASET -> DataAdepter -> DataSet (XML)

Define el modo ONLINE:

A

1º Usamos los métodos de la clase DataProvider:

a) Establecemos conexión con la BD a la que le demos un parámetro de entrada:
sqlconnection

b) Una vez establecida la conexión, con “command” podemos usar una sentencia sql:
sqlCommand -> select, update, insert, o delete.

2º Usamos el cursor para seleccionar / recorrer los resultados (como ResultSet de JAVA):
sqlDataReader

IMPORTANTE: además de esta tecnología de “Bajo Nivel”, .NET (Microsoft) tiene el ORM (Object-Relational Mapping) Entity Framework, que es la tecnología para tratar con las BBDD a “Alto Nivel” (JPA tiene los ORMS: Hibernate, Eclipse Link o Open JPA).

65
Q

Además del API de “Bajo Nivel” de .NET llamada ADO.Net, .NET (Microsoft) tiene el ORM (Object-Relational Mapping) Entity Framework, que es la tecnología para tratar con las BBDD a “Alto Nivel” (JPA tiene los ORMS: Hibernate, Eclipse Link o Open JPA).

Explica su funcionamiento:

A

1º Se define un “modelo.edmx” de tus objetos (entidades) que tienen relación (están asociados) con tus TABLAS.

2º Le pasamos ese modelo (.edmx) a Entity Framework, que a través de su clase principal DbContext, se encarga de conseguir el lenguaje “SQL” para la consulta, actualización, … automáticamente.

Es decir, los objetos agrupados en tu model.edmx se meten dentro de la clase DbContext, que tiene la capacidad de que cuando toques un dato te lo gestione automáticamente, ya sea haciendo un: UPDATE (modificar), INSERT o DELETE.

APP»—model.edmx—>E.F—->BD

En resumen, se declara una clase que coincidirá en nombre con una tabla (si no se llama igual se usará el equivalente a las aplicaciones Java, que aquí se llaman atributos).
Por lo cual, un “atributo” en .NET no tiene que ver con lo que es en Java => lo que es un atributo en Java, en .NET se llama:
->PROPERTY o Campo<-

66
Q

Además del API de “Bajo Nivel” de .NET llamada ADO.Net, .NET (Microsoft) tiene el ORM (Object-Relational Mapping) Entity Framework, que es la tecnología para tratar con las BBDD a “Alto Nivel” (JPA tiene los ORMS: Hibernate, Eclipse Link o Open JPA).

¿Qué 2 tipos de enfoque te permite hacer EF?

A
  1. Database-First APPROACH: (existe la BD) el modelo de datos se genera a partir de una base de datos existente.

Es decir, generar clases de acceso a datos para la base de datos existente.

  1. Code-First APPROACH: (NO existe la BD) el modelo de datos se define primero en código, y luego Entity Framework crea automáticamente la base de datos correspondiente.

Es decir, crear una base de datos a partir de las clases de dominio.

NOTA: EF apareció en .NET FW 3.5 junto a LINQ.

67
Q

A diferencia de ADO.NET (API de “Bajo Nivel”), con el ORM Entity Framework (“Alto Nivel”) tú, como programador, tratas el objeto y el ORM hará la relación y el trabajo con la BD.

  1. ¿En que NameSpace se ubica EF (ORM)?
  2. ¿Cuál es la clase principal de EF (ORM)?
A
  1. System.Data.Entity
  2. DbContext.

IMPORTANTE: esta clase principal del ORM Entity Framework recoge nuestro objetos agrupados en el model.edmx y hará la relación y el trabajo con la BD automáticamente.
En resumen, este ORM Entity Framework te permite trabajar con los objetos “independizandote” del mundo SQL (programación) = que JPA.

68
Q

LINQ, que aparecio en .NET FW 3.5 (junto a EF), es una sintaxis de consulta en C# y vb.net, utilizada para guardar y recuperar datos de diferentes fuentes (XML, SQL y memoria).
¿Para qué sirve concretamente?

A

LINQ (Languaje INtegrated Query) o consultas independientes de fuente, sirve para hacer consultas sobre distintas fuentes de información de manera independientemente de si son objetos que están en memoria, una BD relacional o si estuvieran en un XML, porque hay una capa o especie de puente (bridge) para adaptar cada uno de dichos 3 formatos (objetos en memoria, BD relacional o XML).

IMPORTANTE: nosotros configuramos la Capa LINQ (C#, vb.net ,…) y el resto lo hace la Capa inferior, ni si quiera tenemos que saber donde esta la colección de objetos => independiente de la fuente.

69
Q

En cuanto a los “Modelos de Aplicación web” en .NET, tenemos 2 tipos: MVC y Web Forms.
Define Web Forms:

A

Las aplicaciones Web Forms se parecen a las aplicaciones Win Forms de escritorio (de pantallitas) de Visual Basic, sólo que Web Form son del mundo web, pero son igual de fácil de programar.

Web Forms son muchas páginas dinámicas con extensión .aspx, que creamos detrás de la página HTML, por eso se llama “Code-Behind”.

Es decir, una página o aplicación Web Form consta de 2 partes o archivos: el “Code-Behind” (ej: fichero.aspx.vb) es código (C# o vb.net), que hay detrás de la página HTML y dicha página HTML.

70
Q

Una página o aplicación Web Form (página.aspx) consta de 2 partes o 2 ficheros: el “Code-Behind” (ej: fichero.aspx.vb) es código (C# o vb.net), que hay detrás de la página HTML y dicha página HTML.
Enumera algunas de sus características:

A

*Todas las páginas .aspx heredan de “Page” (“System.Web.UI.Page), que es lo que le confiere el ciclo de vida.

*Si usásemos “MasterPage” podemos tener un modelo de página más flexible y el que podamos reutilizar elementos comunes (menús, cabeceras, etc) => “MasterPAge” reúne todas las partes comunes (títulos, formato,…) de la página para no tener que ir repitiendo.

*ASP.NET Razor: es un motor de vistas que mejora las MasterPAge. Es una sintaxis, como MasterPAge, pero más potente y moderna (implementa las “Vistas” como si fueran plantillas).

NOTA: el otro Modelo de Aplicación web de .NET es el modelo MVC.

71
Q

En cuanto a los “Modelos de Aplicación” en .NET, tenemos 2 tipos: MVC y Web Forms.
No gustaba que el flujo de ejecución comenzase por la pantalla o página .aspx en Web Form, así que esto lo soluciona MVC añadiendo un controlador.

¿Qué 2 ficheros o partes forman la arquitectura o páginas Web Forms?

A

La página .aspx (Web Form) consta de 2 ficheros o partes:

  1. HTML + Etiquetas de servidor (ej: <asp:Table) => estas etiquetas se pueden manipular en el “code-behind”.
  2. Code-Behind: métodos que responden a eventos del usuario sobre la página creados en C# o vb.net, aportando cierto dinamismo a la página.

NOTA: el “Code-Behind” (ej: fichero.aspx.vb) es código (C# o vb.net), que hay detrás de la página HTML.

72
Q

El Entorno de Ejecución de .NET es un SERVIDOR donde se ejecutan las aplicaciones Web .NET.
¿Cuál conoces para Windows y LINUX?

A
  1. En WINDOWS: IIS (Internet Information Server) + el RunTime de ASP.NET (hay que instalarselo al IIS o activarlo dentro).

NOTA: ASP.Net Core es ASP.Net pero MULTIPLATAFORMAS.

  1. En LINUX: el equivalente a IIS en Linux es “Kestrel” + ASP.Net RunTime.

NOTA: Kestre es un servidor web MULTIPLATAFORMAS de Linux.

73
Q

DotNet es la herramienta de linea de comandos de .NET Core para:
*Generar el proyecto
*Compilar
*Ejecutar
*Añadir dependencias

Enumera algunos de sus parámetros:

A

*Podemos ver todos los parámetros de DotNet con:
dotnet -h

PARÁMETROS:
add => añadir un paquete a un proyecto.

build => compilar el proyecto.

new => crear un proyecto.

run => ejecutar proyectos.

nuget => atajo para llamar a “NuGet” desde dotnet (GESTOR DE DEPENDENCIAS).

msbuild: llaman a MSBuild (AUTOMATIZACIÓN DE TAREAS).

Ej: dotnet new webapp => crea una aplicación web.

74
Q

¿Cómo comenzamos un proyecto con la herramienta de linea de comando de .NET Core “dotnet”?

A

dotnet new webapp => crea una aplicación web.

ls -l => vemos que ha creado: fichero “Pages” (para las páginas), el “object”, “properties” ,… => los ficheros de inicio de proyecto.

Luego, lo abres con Visual Studio y a programar …

NOTA: “code.” => comando para abrir el proyecto directamente en VS.

75
Q

Maven de Java es una herramienta de Automatización de Desarrollo, es decir, “Gestor de Dependencias” y “Automatización de Tareas”.
Existe algo parecido en .NET?

A

Si, con la diferencia de que, en lugar de con una sola herramienta (Maven), en . NET se haría con 2:

  1. MSBuild: “Automatización de Tareas” => compilación, empaquetado, …
  2. NuGet: “Gestor de Dependencias” => hay un repositorio “nuget.org” (igual que Maven Repository), donde entras (internet) para buscar los NameSpaces (fichero assembly .dll o .exe).

IMPORTANTE: Una vez localizado: ejemplo, iText (para PDF), lo añades:
a) dotnet add iText o dotnet add reference iText

b) nuget install iText

76
Q

En cuanto a los “Modelos de Aplicación web” en .NET, tenemos 2 tipos: MVC y Web Forms.
¿En qué se diferencian?

A

Web Forms tiene el peligro de tener programado demasiada lógica en el “Code-Behind” de las páginas HTML, esto se soluciona con MVC (Modelo Vista Controlador).

Como no gustaba que el flujo de ejecución vaya primero por la pantalla o página .aspx (Web Forms), MVC añade un nuevo componente llamado”Controlador”.

1º Entonces, con MVC (3 capas) la petición (HTTP Request) ahora entra en el componente CONTROLADOR.
2º Este CONTROLADOR trabaja con el MODELO (BD) y gestiona la request.
3º Cuando termina, pasa la información a la VISTA para que la muestre en la página.

Es decir, con MVC la VISTA simplemente muestra el contenido. En cambio, en Web Form, además, era donde se programaba (Code-Behind).

77
Q

En cuanto a los “Modelos de Aplicación” en .NET, tenemos 2 tipos: MVC y Web Forms.
No gustaba que el flujo de ejecución comenzase por la pantalla o página .aspx en Web Form, así que esto lo soluciona MVC añadiendo un controlador.

Describe otras características de este patrón de arquitectura de páginas web denominado MVC:

A

*Modelo o patrón de aplicación en el cual el flujo siempre comienza por un “Controlador” que se el que coordina tanto la lógica de negocio como la invocación posterior a la “Vista”.

Cada “Controlador” tendrá una URL asociada (similar a la configuración de los Servlet en web.xml de las apps JEE) => esto se configura en la clase “RouteConfig”.

*Un producto típico en esta arquitectura para implementar Vistas como si fueran plantillas es “Razor” (ASP.NET Razor: es un motor de vistas que mejora las MasterPAge de Web Forms).

78
Q

Hay 2 tipos de Servicios Web (ASP.Net) en .NET: SOAP y REST.
Define SOAP:

A

Protocolo Simple de Acceso a Objetos: es un protocolo (w3c) para posibilitar la comunicación entre las aplicaciones que se diseñan con diferentes lenguajes y en distintas plataformas.

ASMX: es un fichero de servicio web ASP.Net, que proporciona comunicación entre 2 objetos a través de Internet y mediante SOAP, es decir, el fichero.ASMX es para hacer servicios SOAP.

IMPORTANTE: diferenciar entre los ficheros “.aspx” de las páginas Web Forms (Code-Behind) y los “.asmx” para hacer servios SOAP.

79
Q

ASP.Net es el FW de desarrollo de aplicaciones web de .NET, para lo cual se usan 2 APIs o Servicios Web: SOAP y REST.
Pero, ¿qué es un Servicio Web y en qué se diferencia estos 2 de Microsoft?

A

Un servio web o web service es una funcionalidad que tú publicas para que la usen terceros, es decir, para otras aplicaciones => INTEGRACIÓN DE APLICACIONES.

INTEGRACIÓN DE APLICACIONES: lo normal es que una aplicación no sea totalmente autónoma, sino que necesite de alguna otra => INTEGRACIÓN.

La diferencia principal entre SOAP y REST, es que SOAP es un protocolo oficial (W3C) y REST no lo es, sólo es un conjunto de “principios arquitectónicos”.

REST (Transferencia de Estado REpresentacional): es cualquier interfaz entre sistemas que use HTTP para obtener datos o generar operaciones sobre esos datos en los formatos: XML y JSON, sin abstracciones adicionales como las de SOAP.

80
Q

Lo 1º que salió a nivel de servicios web SOAP fueron los ficheros .asmx basados en XML.

¿Cómo se programan?

A

Son fáciles de programar. Pues, crear un servicio web SOAP solo requiere de 2 elementos:

  1. Heredar de la clase:
    System.Web.Services.WebService
  2. “Anotar” con el atributo (= que @anotación en Java) [WebMethod] aquellas operaciones (métodos) que queramos publicar en el servicio.

EJEMPLO EN LA FOTO de un FICHERO.asmx:
1º Crear la clase:
public class Service1, que hereda de:
System.Web.Services.WebService

=> Codificas el método que quieras: “Helloworld”

2º Con el ATRIBUTO [WebMethod] indicamos los métodos que queremos publicar en el servicio.

RECORDATORIO: un ATRIBUTO en .NET es lo que era una ANOTACIÓN en Java, pero en lugar de indicarse con “@” se declara entre [corchetes].

81
Q

ASP.Net es el FW de desarrollo de aplicaciones web de .NET, para lo cual se usan 2 APIs o Servicios Web: SOAP y REST.
Expón las características de SOAP:

A

*Basado en XML.

*SOAP permite la comunicación entre servicios web escritos en diferentes lenguajes y en diferentes plataformas.

*A través del uso de encabezados SOAP permite la adición de extensiones personalizadas.

*Admite una variedad de estándares adicionales conocidos como WS- (Web Services Specifications) que proporcionan funcionalidades avanzadas, como seguridad (WS-Security), enrutamiento (WS-Addressing) y confiabilidad (WS-ReliableMessaging).

*SOAP utiliza WSDL (Web Services Description Language) para describir la interfaz del servicio web.

NOTA: WSDL es un lenguaje basado en XML que especifica los métodos, parámetros y tipos de datos utilizados por el servicio web.

IMPORTANTE: en la actualidad, se están adoptando más enfoques basados en REST y API RESTful para el desarrollo de servicios web debido a su simplicidad y facilidad de uso.

82
Q

¿Qué es un atributo en C# y vb.net (.NET), y cómo se presentan?

A

Un atributo en .NET es lo mismo que una @anotacion en Java.

Java: @Anotación
C#: [atributo]
vb.net: <atributo></atributo>

NOTA: los [atributos] / @anotaciones son indicaciones que aportan a la configuración.

IMPORTANTE: un atributo en Java, en .NET (C# o vb.net) se llama CAMPO (field).

83
Q

Tanto los ficheros .ASMX y WCF (Windows Comunicaction Foundation) son tecnologías para implementar servicios web de tipo SOAP.
En el caso de REST, la otra tecnología que usa .NET para hacer servicios web, además de SOAP, ¿con qué tecnología se implementa?

A

Web API: es la parte de ASP.NET (Active Server Page.NET) para hacer servicios REST.

Sirve para implementar servicios web de tipo REST heredando de ApiController, es decir, con poner simplemente que se hereda de ApiController se convierte una clase normal en servicio REST.

*public class clase_rest : ApiController

NOTA: no esta basado en XML (como SOAP), sino que esta basado en puro HTTP y JSON.

IMPORTANTE: ASP.NET es un framework desarrollado por Microsoft para crear aplicaciones web. Utiliza los lenguajes C# o VB.NET y se basa en el patrón de diseño Modelo-Vista-Controlador (MVC).

84
Q

ASP.NET es un framework desarrollado por Microsoft para crear aplicaciones web. Utiliza los lenguajes C# o VB.NET y se basa en el patrón de diseño Modelo-Vista-Controlador (MVC).
Y tiene 3 modelos para hacer las aplicaciones: Web Forms (.aspx=> Code-Behind), MVC (elimina Code-Behind con la capa Control) y Web API (REST).
¿Qué 2 cosas muy importantes hay dentro de las páginas Web Forms?

A
  1. ViewState: (= ver estado) se encarga de sincronizar la visita tanto en la parte del cliente como del servidor cuando modificamos un campo en la página (parecido a AJAX).
  2. La propiedad IsPostBack: (=¿Está la publicación de vuelta?) es una variable de tipo “local” para identificar si la página ha sido cargada por primera vez o es una recarga:
    *FALSE => indica que es la 1ª carga.
    *TRUE => indica que es una recarga de página.
85
Q

ASP.NET es un framework desarrollado por Microsoft para crear aplicaciones web. Utiliza los lenguajes C# o VB.NET y se basa en el patrón de diseño Modelo-Vista-Controlador (MVC).
Y tiene 3 modelos para hacer las aplicaciones: Web Forms (.aspx=> Code-Behind), MVC (elimnina Code-Behind con la capa Control) y Web API (SOAP y REST), define el modelo Web Forms:

A
  1. ASP.net WEB FORMS: sistema más tradicional de Micrososft.

*El motor ASP.net llama a distintos métodos de la página => CICLO DE VIDA:
a) Init ( ) => inicia la página.
b) Load ( ) => se carga.
c) … => se muestra al navegador la información del Code-Behind (con MVC se suprime el Code-Behind).

*Puedes sobrescribir estos métodos porque el Code_Behind tiene esta forma:

public class ConsultaUsuarios
inherits System.Web.UI.Page => obligatorio heredar de “Page” para crear el Code-Behind.

NOTA: puedes preguntar dentro de una página de esta forma:
*if (IsPostBack) => PROPERTY: identifica si es la primera vez que se carga la página (FALSE= 1ª carga).

BOTÓN “submit”: para distinguir cuando se invoca a tú página con datos de formulario.

Code_Behind: es un fichero parejo a cada página .ASPX y puede ser C# o vb.net: al poner las etiquetas con <asp:etiqueta> se pueden manipular en el code-behind. Se llaman "etiquetas de servidor":</asp:etiqueta>

<asp:bottom>
<asp:table>
<asp:textbox>

2. ASP.net MVC
</asp:textbox></asp:table></asp:bottom>

86
Q

ASP.NET es un framework desarrollado por Microsoft para crear aplicaciones web. Utiliza los lenguajes C# o VB.NET y se basa en el patrón de diseño Modelo-Vista-Controlador (MVC).
Y tiene 3 modelos para hacer las aplicaciones: Web Forms (.aspx=> Code-Behind), MVC (elimnina Code-Behind con la capa Control) y Web API (SOAP y REST).
Resume el proceso de Web Forms:

A

Tras la consulta (HTTP Request) obtendríamos un primer documento o página .ASPX (HTML, CSS, JS y Etiquetas de Servidor), que se puede manejar / manipular desde el Code-Behind, gracias al motor ASP.net.

NOTA: MVC suprime este Code-Behind con el módulo CONTROL => así el flujo de la página pasaría primero por dicho modulo quien decidiría si pasa o no a la VISTA, en lugar de programarse directamente en la página en el Code-Behind.

87
Q

ASP.NET es un framework desarrollado por Microsoft para crear aplicaciones web. Utiliza los lenguajes C# o VB.NET y se basa en el patrón de diseño Modelo-Vista-Controlador (MVC).
Y tiene 3 modelos para hacer las aplicaciones: Web Forms (.aspx=> Code-Behind), MVC (elimina Code-Behind con la capa Control) y Web API (SOAP y REST), define el modelo MVC:

A

Ya NO se pasa primero por la página .aspx (Web Forms), sino que la URL tiene el siguiente formato:
request (/factura/consulta)

que es una request que llega a:
FacturaController
sub Consulta(…)

IMPORTANTE: Controller es la entidad que gobierna el flujo MVC y hereda de:
System.Web.MVC.Controller

88
Q

ASP.Net es el FW de desarrollo de aplicaciones web de .NET, para lo cual se usan 2 APIs o Servicios Web: SOAP y REST.
Expón las características de REST:

A

*REST utiliza los métodos y protocolos estándar de HTTP, como GET, POST, PUT y DELETE, para realizar operaciones en recursos.

*Los servicios web RESTful son stateless => NO almacenan información de estado del cliente en el servidor.

*Los recursos en un servicio web RESTful se identifican mediante URIs (Identificadores Uniformes de Recursos).

*REST permite el intercambio de datos en varios formatos, como XML y JSON.

*REST utiliza los métodos HTTP para realizar operaciones CRUD (Crear, Leer, Actualizar, Eliminar) en los recursos, por ejemplo:
GET: para leer un recurso.
POST: para crear un recurso.
PUT: para actualizarlo.
DELETE: para eliminarlo

*Utiliza mensajes HTTP autoexplicativos para transmitir información entre el cliente y el servidor: como 200 OK, 404 Not Found o 500 Internal Server Error.

*Utiliza HATEOAS, que significa “Hypermedia as the Engine of Application State” (hipermedia como el motor del estado de la aplicación) => incluye enlaces hipermedia en las respuestas (proporcionan información y acciones), agilizando la navegación.

NOTA: REST es la elección preferida para el diseño y desarrollo de servicios web en la actualidad.

89
Q

REST y API RESTful, debido a su simplicidad y facilidad de uso, es la elección preferida para el diseño y desarrollo de servicios web en la actualidad, por encima del obsoleto SOAP.
Pero, ¿qué principio arquitectónico utiliza?

A

HATEOAS, que significa “Hypermedia as the Engine of Application State” (hipermedia como el motor del estado de la aplicación)

Propone que las respuestas de un servicio web contengan enlaces (hypermedia => proporcionan información y acciones) que permitan a los clientes descubrir y navegar dinámicamente a través de los recursos relacionados.

90
Q

ASP.NET es un framework desarrollado por Microsoft para crear aplicaciones web. Utiliza los lenguajes C# o VB.NET y se basa en el patrón de diseño Modelo-Vista-Controlador (MVC).
Y tiene 3 modelos para hacer las aplicaciones: Web Forms (.aspx=> Code-Behind), MVC (elimina Code-Behind con la capa Control) y Web API (REST), define la Web API:

A

Es otra parte de la arquitectura para hacer los Servicios Web basados en REST, aunque hayá 2 tipos de estos Web Services:

SOAP: QUE SE IMPLEMENTA CON EL FRAMEWORK WCF (Windows Communication Foundation)
.asmx (asp.net antigua) métodos con <WebMethod ( )>, que aquí se llaman atributos, pero es igual que las @anotacioens de Java, aunque aquí se declaran entre corchetes [ ].

REST: NO es para usuario final, es decir, te hace falta implementar un cliente REST (x ejemplo con Angular) para hacer pruebas sin tener que desarrollar dicho cliente.

*Web API es muy similar a MVC con 2 diferencias:

a) Clases que heredan de ApiController:
public class HOLA : ApiController
b) En lugar de retornar vistas, retornan HTTP, STATUS o CODES.

En resumen, Web API es para hacer un modelo de servicios REST, con los que se da funcionalidades de datos JSON a otra parte de la aplicación que se haría con un FRAMEWORK:
*Angular: marco frontal completo.
Vue.JS: marco progresivo.
ReactJS: biblioteca de interfaz de usuario.
EmberJS: FrameWork para programar de forma sencilla (The Ember Way) con pocas lineas de código y siempre adaptándonos a las limitaciones del marco.

91
Q

¿En qué esta basado el modelo de autorización en .NET?

A

En ROLES => se definen roles para el acceso a los métodos, clases, …

PASO1: Autenticación:
Cuando el host autentica al usuario crea una entidad (objeto) de seguridad, que es un objeto lPrincipal (Identity+Roles).
Este objeto Principal encapsula a un objeto Identity (contiene la info del usuario) y los Roles / Grupos asociados a este.

Existen diferentes mecanismos de autenticación:
*Basic Auth (consiste en enviar las credenciales de usuario (nombre y contraseña) en texto plano a través de las cabeceras de la solicitud HTTP).
*Por formulario
*Integrada de Windows=> <authentication></authentication>
*OAuth2 (Open Authorization 2.0) es un protocolo de autorización y delegación de acceso para permitir que las aplicaciones accedan a los recursos en nombre de un usuario sin compartir directamente las credenciales de inicio de sesión.

PASO2: Autorización:
[Authorize (Users=”Oliver, Martina”)]

92
Q

Bouncy Castle es la librería de terceros que usa Java para CRIPTOGRAFÍA, ¿cuál es la que usa .NET y que clases o interfaces aporta?

A

LIBREARÍA (Dependencias):
System.Security.Cryptography

  1. Clases/Interfaces SIMÉTRICAS:
    SymmetricAlgorithm: abstracción de nivel superior para todos los algoritmos de criptografía simétrica: RC2, DES, TripleDES y Rijndael: subclases derivadas del algoritmo simétrico (SymmetricAlgorithm).
  2. Clases/Interfaces ASIMÉTRICAS:
    AsymmetricAlgorithm: abstracción de nivel superior para todos los algoritmos de criptografía asimétrica: RSA y DSA: abstracciones de cifrado de clave pública, que derivan del algoritmos asimétrico (AsymmetricAlgorithm).

IMPORTANTE: IcryptoTransform: la definición de la interfaz para las transformaciones de cifrado y descifrado; los objetos de este tipo se generan mediante métodos en algoritmos simétricos.
I => Interfaz
crypto => cifrado
Transform => transformación

93
Q

¿Quién desarrolla el lenguaje C#?

A

ECMA 334

ISO/IEC 23270

94
Q

¿Para qué sirve la declaración “sealed” en una clase c#?

A

Para definir que nadie puede heredar de ella.

Es equivalente al final de Java (para clases) y al NotInheritable de VB.Net.

95
Q

El atributo de Java se llama CAMPO (field) en .NET, pero ¿qué es un atributo en .NET?

A

Similar a las anotaciones de Java, pero, en .NET no se usa con “@”, sino con [ ].
Ej:
[serializable]

CAMPO (.NET) -> ATRIBUTO (Java)
[ATRIBUTO] (.NET) -> @ANOTACIÓN (Java)

Una manera de “configurar” en el propio código fuente distintos aspectos.

Se puede aplicar sobre métodos, clases y parámetros.

Podemos acceder a esa información mediante “Reflexion”.

96
Q

¿Para qué se usa el modificador de acceso “internal” en c#?

A

Para definir que ese elemento (clase o miembro) solo se puede “ver” desde su mismo ensamblado.

97
Q

Nombre tres “implementaciones” o entornos de ejecución de .NET:

A
  1. .Net Framework (MonoPlataforma)
  2. .Net CORE (MultiPlataforma)
  3. Mono (Icaza => Ximian)
98
Q

¿Qué componente del .Net Framework se encarga de la gestión de hilos, memoria, seguridad, …?

A

CLR (Common Language Runtime) =>JRE en Java.

99
Q

En c#, ¿qué diferencia hay entre una declaración “const” o “readonly”?

A
  1. Cuando se declara una constante con la palabra clave “const”, también se debe asignar el valor.
  2. Con “readonly” se puede inicializar más tarde.
100
Q

En c#, ¿qué diferencia hay entre declarar un parámetro como “out” o “ref”?

A

Los dos son parámetros que vamos a pasar por referencia, pero “out”, al ser solo de salida, NO obliga a que el parámetro esté inicializado cuando se invoca al método.

101
Q

Si queremos usar un método de una clase pero sin tener que crear ningún objeto, ¿cómo habría que declararlo?

A

static en c# (igual que en Java)

shared en vb.net

102
Q

Cuando se compila un programa .NET, ¿cómo se denomina al producto generado?

A

CIL (Common Intermediate Language).

Antes llamado MSIL.

NOTA: es equivalente al bytecode de Java.

103
Q

¿Cuáles son los ficheros de librerías equivalentes en .NET a los Jar de JAVA?

A

Assemblies (tienen extensiones .dll o .exe)

104
Q

¿Qué podemos implementar si estamos usando ficheros con extensión .ASMX en .NET?

A

Web Services SOAP (Simple Object Access Protocol).

NOTA: REST (Representational State Transfer) es otro enfoque diferente para crear y consumir servicios web. Diferencias:

REST usa los métodos HTTP (GET, POST, PUT, DELETE) y la representación de recursos a través de URLs (SOAP usa XML).
Con HATEOAS, componente de la arquitectura de aplicación REST que lo distingue de otras arquitecturas, proporcionan información dinámicamente a través de enlaces hipermedia. Esto es diferente de los servicios basados en SOAP, donde el cliente y el servidor interactúan mediante un contrato fijado (WSDL => (Web Services Description Language) es un lenguaje basado en XML que se utiliza en la tecnología SOAP para describir la interfaz y la estructura de un servicio web).

REST es más simple, flexible y moderno que SOAP

105
Q

¿Con que tecnología podemos desarrollar servicios REST y SOAP en .NET?

A

REST => ASP.NET Web API.

SOAP => utilizando el framework Windows Communication Foundation (WCF).

106
Q

¿En .NET cual es la tecnología de tipo ORM equivalente a JPA/Hibernate de JAVA?

A

Entity Framework

107
Q

¿Cómo se denomina al recurso equivalente de los métodos get y set de JAVA en .NET?

A

PROPERTY

108
Q

En .NET, qué es System.Security.Cryptography?

A

System.Security.Cryptography es un espacio de nombres (NameSpace) en la biblioteca de clases de .NET Framework que proporciona implementaciones de algoritmos de cifrado, hash, firma digital y autenticación de claves pública y privada.

NOTA: Java usa Bouncy Castle: librería de terceros para CRIPTOGRAFÍA.

109
Q

¿Sabemos que .net Maui fue introducido en .NET 6, pero, qué es?

A

NET MAUI: es un marco multiplataforma para crear aplicaciones móviles y de escritorio nativas con C# y XAML.
Con . NET MAUI, puede desarrollar aplicaciones MULTIPLATAFORMAS (Android, iOS, macOS y Windows) desde una sola base de código compartida.

NOTA: XAML (Extensible Application Markup Language) es un lenguaje de marcado utilizado para definir las interfaces de usuario en aplicaciones de plataforma Microsoft, como aplicaciones de escritorio, móviles y web.