Está en la página 1de 13

Marco Besteiro y Miguel Rodrguez Introduccin al lenguaje C#

Introduccin.
C# es un lenguaje orientado a objetos (es ms correcto decir orientado a componentes)
diseado para el CLR (Common Language Runtime) de la plataforma .NET que se
llam en un principio NGWS, es decir, Next Generation Windows Services.

El CLR es un entorno de ejecucin basado en componentes, ofrecidos por el Framework


de la tecnologa .NET.

Visual Studio.NET soporta esta plataforma y tambin el lenguaje C#, as como C++,
Visual Basic y los lenguajes de script VBScript y JScript.

Con C# se pretende combinar la facilidad de Visual Basic y la potencia de C++. C#


deriva de C y C++. Elimina caractersticas inseguras y complejas de stos y les aade
otras que ofrecen mayor comodidad.

Por ejemplo: se eliminan los punteros (es posible utilizarlos en un cdigo llamado
inseguro), las macros, las plantillas, la herencia mltiple, los ficheros de cabecera, IDL,
libreras de tipos... Adems se aaden otras caractersticas, como orientacin a objetos
casi pura, seguridad de tipos, versiones, gestin automtica de memoria (garbage
collector)...

C# se compila a un lenguaje intermedio llamado IL (MSIL) (Intermediate Language),


que no es binario dependiente de la plataforma, sino que se ejecuta sobre una mquina
virtual que provee el Common Language Runtime. Esto no quiere decir que C# no
pueda compilarse a cdigo binario dependiente de la plataforma. Simplemente ha sido
pensado para el CLR.
Existe una solucin intermedia, que es la posibilidad de utilizar cdigo nativo desde C#.
El inconveniente de esta solucin es que rompe la portabilidad.

En definitiva, desde C# se puede utilizar no slo el API provisto por el Framework


.NET, sino que tambin se puede utilizar el API COM, la Automatizacin y las APIs de
estilo C.

Diferencias entre C# y C/C++.


C# ha sido diseado para ser fcilmente aceptado por los desarrolladores de C y C++.
No obstante presenta importantes diferencias:

- La gestin de memoria es automtica, lo cual quiere decir que el desarrollador


slo ha de preocuparse de crear un objeto cuando lo necesite pero no de
eliminarlo, ya que esta tarea queda a cargo del garbage collector (recolector de
basura). Este hecho cambia el sentido del destructor de una clase.
- No se utilizan punteros. En su lugar se utilizan referencias a objetos. No
obstante, se permite utilizar punteros en casos especiales, como por ejemplo
cuando es necesario acceder a cdigo nativo (dll) al que hay que pasarle o que
devuelve punteros (al cdigo C# de este tipo se le denomina cdigo inseguro).
Existe una posibilidad de utilizar punteros en cdigo seguro y es a travs de
objetos de un tipo especial llamados Delegates Su comportamiento es similar a

1/13 1
Marco Besteiro y Miguel Rodrguez Introduccin al lenguaje C#

los punteros a funciones, con la ventaja de ser ms seguro y respetar los tipos de
datos.
- Se cambian ciertos aspectos referentes a los operadores:
o No se utilizan los operadores -> ni ::. El nico operador de acceso a
mtodos de objetos que se utiliza es el operador punto . .
o Se incluyen dos operadores nuevos: is y typeof.
o Se cambia el funcionamiento de los operadores lgicos &, ^ y |.
o La sobrecarga de operadores es diferente.
- Hay ciertas palabras clave que se utilizan de modo distinto, como extern y
static.
- El mtodo Main se declara de modo distinto.
- No se permiten las declaraciones adelantadas (forward).
- El manejo de errores se hace mediante excepciones.
- No se soportan las macros, aunque s las directivas de preprocesador.
- No se utilizan ficheros de cabecera (.h) ni similares (IDL y libreras de tipos). El
cdigo es compilado en unidades llamadas assemblies, en las cuales se almacena
la representacin del cdigo en un lenguaje intermedio llamado IL y los
metadatos, que sustituyen a los ficheros .h de C++ (o a las libreras de tipos y
entradas de registro). Los assemblies se pueden generar a partir de cdigo escrito
en otros lenguajes, como C++ o Visual Basic, lo cual quiere decir que desde C#
se puede utilizar cdigo IL generado a partir de otros lenguajes.
- Los assemblies se agrupan en namespaces (que siguen una estructura
jerrquica).
- No existe una librera de tiempo de ejecucin (Runtime) C# como en C y C++.
En su lugar existe un Runtime .NET accesible a travs de la clase System.
- El mecanismo de herencia sufre cambios:
o No se permite herencia mltiple en clases pero s en interfaces.
o La sobrescritura de mtodos se ha de hacer utilizando el operador
explcito override.
o El modificador new permite ocultar miembros heredados.
- Existen tres posibles grupos de tipos:
o Tipos valor: son tipos primitivos como char, int, struct... C# incluye
dos tipos nuevos, boolean (True o False, se utiliza en las sentencias
condicionales, en lugar de integer, como se haca en C++) y decimal
(para operaciones financieras). Las variables de tipo valor se guardan en
la pila.
o Tipos referencia: incluye los tipos class, interface, delegate y
array. Los objetos referenciados por variables de tipo referencia se
guardan en el heap o montn. Existen dos tipos de referencia
predefinidos, object y string. object es el tipo base de la jerarqua de
clases .NET. Todo dato deriva del tipo object mediante herencia simple
(slo se permite herencia mltiple de interfaces). Todo dato de cualquier
otro tipo puede convertirse a object (a esta conversin se la llama
boxing) permitindose tambin la operacin inversa (unboxing). Esto
permite la existencia de lo que se denomina sistema de tipos unificado.
o Tipos puntero: slo se permite su utilizacin en cdigo inseguro.
- Las sentencias sufren ciertos cambios y aparecen otras nuevas:
o La sentencia switch admite string.
o La sentencia foreach se puede aplicar a tipos y colecciones.

2/13 2
Marco Besteiro y Miguel Rodrguez Introduccin al lenguaje C#

o Las sentencias checked y unchecked permiten controlar


desbordamientos.
- El mantenimiento de versiones es ms sencillo que en C y C++. Entre otros
aspectos, la compatibilidad a nivel binario deja de ser un problema.
- Se utilizan Atributos (Attributes) que son anotaciones que se adjuntan a una
clase para almacenar cierta informacin (ficheros de ayuda, versin, etc...) y que
pueden ser obtenidos mediante reflexin.

Razones para utilizar C#.


C# es un lenguaje elegante, sencillo, orientado a componentes y ofrece un manejo de
tipos seguro.

Adems, C# ofrece la posibilidad de construir componentes de sistema perdurables en


base a:
- Soporte total a la plataforma COM para permitir la integracin con cdigo ya
existente.
- Posibilidad de construir cdigo robusto gracias a la seguridad de tipos y a la
gestin automtica de memoria (garbage collector).
- Seguridad a nivel de cdigo basada en mecanismos de confianza.
- Soporte total a los metadatos y a sus posibles extensiones.

Por ltimo, C# permite la interoperacin con otros lenguajes en base a las siguientes
caractersticas:
- Acceso a libreras a travs de COM+ y los servicios .NET.
- Soporte XML para interaccin basada en componentes.
- Simplificacin de la administracin y desarrollo de aplicaciones y componentes
gracias a un cuidado mecanismo de versiones.

3/13 3
Marco Besteiro y Miguel Rodrguez Introduccin al lenguaje C#

La plataforma .NET
Podra pensarse en la plataforma .NET como un sustituto de la arquitectura Windows
DNA (Distributed Network Architecture) pero sera una comparacin insuficiente. La
arquitectura DNA se centra en la construccin de aplicaciones de tres capas para
Windows basndose en tecnologas como ASP, COM, etc...

La plataforma .NET es una nueva plataforma para el desarrollo de aplicaciones en


general (no necesariamente para Windows, ni de tres capas) que cubre todos los
aspectos que afectan a tales aplicaciones, desde un entorno de ejecucin comn (CLR)
hasta lenguajes especficamente diseados para rentabilizar al mximo las
caractersticas de esta plataforma.

El objetivo principal de la plataforma .NET es ofrecer una red de servicios que se


ejecuten sobre el CLR y que hayan sido diseados con cualquier lenguaje compatible
con el CLR (lenguajes de este tipo son C#, C++ y Visual Basic, pero podra aadirse
cualquier lenguaje para el que se haya diseado un compilador a IL, que es el lenguaje
intermedio que entiende el CLR).

Figura 1.1. Framework .NET

El CLR ofrece las bases para poder ejecutar los servicios. Las clases base ofrecen el
control de tipos de datos bsico, las clases de tipo coleccin y de otras clases generales.
Los servicios de datos permiten el acceso a los datos desde los servicios Web y
Windows, para lo cual tienen clases de soporte de datos y XML.

La plataforma .NET ha hecho que las siguientes tecnologas se vuelvan obsoletas:


- La Librera de tiempo de ejecucin C/C++ (Runtime Library)

4/13 4
Marco Besteiro y Miguel Rodrguez Introduccin al lenguaje C#

- STL (Standard Template Library)


- MFC (Microsoft Foundation Class Library)
- ATL (Active Template Library)
- WTL (Windows Template Library)
- ADO (ActiveX Data Objects)
- ASP (Active Server Pages)
- VBScript & VBA (Visual Basic Script y VB for Applications)
- COM (Component Object Model)
- Win32 API

No obstante, es posible acceder al API Win32 o a componentes COM desde


aplicaciones .NET, aunque las tecnologas emergentes son las que se recomiendan:
- Runtime .NET
- COM+
- ATL+
- ADO+
- ASP+
- El API de Win32 es encapsulado en la plataforma .NET por la BCL (Base Class
Library).

El CLR y la Librera de Clases Base (BCL, Base Class Library).


El CLR es un entorno de ejecucin comn, capaz de ejecutar aplicaciones codificadas
en un lenguaje intermedio (no dependiente de la mquina) llamado IL (MSIL).

La ventaja que implica soportar un lenguaje intermedio es que las aplicaciones que se
ejecutan sobre el CLR son portables. Al no depender de una mquina concreta, slo
necesitan para ejecutarse sobre cualquier mquina que el CLR est instalado en tal
mquina.

Como todo entorno de ejecucin, el CLR se ayuda de una librera de clases para ofrecer
una serie de servicios a los desarrolladores, permitiendo que puedan desarrollar
aplicaciones sencilla y rpidamente reutilizando componentes as como que puedan
desarrollar componentes reutilizables.

Las aplicaciones y componentes que los desarrolladores compilan con compiladores


para el CLR son llamados de cdigo dirigido (managed code). El managed code
se beneficia de caractersticas tales como:

- Soporte multi-lenguaje: cualquier lenguaje para el que se disponga de


compilador a IL permitir desarrollar aplicaciones y componentes que puedan
interaccionar directamente con componentes y aplicaciones desarrollados en
otros lenguajes para los que tambin exista compilador a IL. EL lenguaje IL
sigue una especificacin estndar, llamada CLS (Common Languaje
Specification) que indica el formato con el que han de generar el cdigo los
compiladores a IL. Adems, para que el soporte multi-lenguaje no se vea
afectado por los diferentes tipos de datos de los diferentes lenguajes se ha creado
un sistema de tipos comn (CTS), de modo que slo se debern utilizar tipos del
CTS si se desea la interoperabilidad con otros lenguajes.

5/13 5
Marco Besteiro y Miguel Rodrguez Introduccin al lenguaje C#

- Gestin de excepciones multilenguaje: es una caracterstica que deriva del


soporte multi-lenguaje y permite el control de excepciones en aplicaciones
creadas a partir de fuentes en diferentes lenguajes.
- Seguridad mejorada.
- Soporte para versiones.
- Modelo simple de interaccin entre componentes.
- Servicios de debug.

Metadatos.
Para permitir al CLR ofrecer servicios al managed code los compiladores no slo han
de generar el cdigo IL correspondiente al cdigo fuente, sino tambin metadatos, los
cuales se almacenarn junto con el cdigo intermedio IL y harn innecesario el registro
del sistema (los metadatos son a la plataforma .NET lo que las bibliotecas de tipos, las
entradas del registro del sistema y algn que otro dato son a COM). Para un objeto de la
plataforma .NET, los metadatos guardan informacin necesaria para utilizar el objeto,
como puede ser:

- El nombre del objeto.


- Los nombres y tipos de todos sus campos.
- Los nombres de todos los mtodos, as como los nombres y tipos de sus
parmetros.

Figura 1.2. Jerarqua de los Metadatos.

6/13 6
Marco Besteiro y Miguel Rodrguez Introduccin al lenguaje C#

El CLR utilizar los metadatos para localizar y cargar clases, resolver invocaciones a
mtodos, generar cdigo nativo, gestionar la seguridad, manejar las instancias de clases
y fijar los lmites del contexto de tiempo de ejecucin.

El CLR tambin se encarga de la gestin de memoria dinmica con la consecuente


desaparicin de errores asociados a la gestin manual de memoria. A los objetos cuyo
tiempo de vida es gestionado por el CLR se les llama managed data (datos dirigidos
o gestionados). Para que el CLR pueda trabajar con managed data es necesario que
el cdigo sea tambin managed code. No obstante hay ocasiones en que por utilizar
caractersticas distintas de distintos lenguajes en el desarrollo no es posible utilizar
managed code ni managed data, en este caso se habla de unmanaged code y
unmanaged data.

Assemblies.
El CLR trabaja realmente con assemblies. Un assembly es un fichero con un formato
muy parecido al formato PE (el que se utiliza en los ficheros .exe o .dll tradicionales)
que contiene el cdigo IL resultado de compilar el cdigo fuente, los metadatos y otros
ficheros necesarios para poder ejecutar el paquete o assembly. Adems, un assembly
contiene un fichero llamado fichero de manifiesto o manifest, el cual indica los
assemblies de los que depende, los ficheros que contiene, controla los tipos y recursos
expuestos por el assembly y establece un mapeo entre esos tipos y recursos y los
ficheros que contienen esos tipos y recursos.

Existen dos tipos de assemblies:


- aplicaciones: tienen un punto de entrada principal y nico (Main) y suelen tener
extensin .exe.
- libreras: no tienen un punto de entrada principal (Main) y suelen tener
extensin .dll.

El CLR provee APIs que los motores de scripts pueden utilizar para crear
dinmicamente un assembly a partir de un script. A este tipo de assemblies se les llama
assemblies dinmicos y podra ser considerado como un tercer tipo.

Un assembly puede estar fsicamente contenido en varios ficheros o en uno slo. La


ventaja de utilizar varios ficheros es que en caso de ser pedidos a travs de la red, slo
se han de pasar los necesarios.

7/13 7
Marco Besteiro y Miguel Rodrguez Introduccin al lenguaje C#

Figura 1.3. Tipos de assemblies. De uno o de varios ficheros.

Como puede verse, el fichero de manifiesto (manifest) puede ser almacenado de varios
modos:
- Para un assembly de un fichero, el manifiesto es incorporado al fichero PE.
- Para un assembly de varios ficheros, el manifiesto puede almacenarse como un
fichero separado o puede incorporarse en uno de los ficheros PE del assembly.

El assembly que contiene los tipos bsicos del CLR se llama mscorlib.dll y es el
nico que se toma por defecto al compilar. Si se desea utilizar un tipo que est en otro
assembly, ha de indicarse al compilador el nombre de tal assembly.

Namespaces.
As como un assembly es una agrupacin fsica de clases, otros tipos e informacin
sobre tales, un namespace es una agrupacin lgica. De este modo, al escribir el cdigo
de una aplicacin y utilizar clases y otros tipos se ha de indicar (en el cdigo) el
namespace al que pertenecen tales tipos, no el assembly. Como se ha comentado, el
assembly se ha de pasar como parmetro al compilador.

La lgica que lleva a esta separacin es muy sencilla. Supngase que se crean 5
assemblies con tipos relacionados con el manejo de redes. Aunque fsicamente son 5
ficheros distintos, lgicamente se refieren al mismo tema, de modo que podran estar
agrupados bajo un mismo nombre lgico (ntese que namespace significa espacio de
nombre).

De modo similar, un assembly puede contener clases y tipos dispares que puedan ser
divididos en varios namespace. De hecho, tal es el caso del assembly mscorlib.dll en
el que uno de sus namespace es System. El namespace System incluye los tipos de bajo
nivel bsicos, como el tipo base Object, Byte, Int32, Math y Delegate.

8/13 8
Marco Besteiro y Miguel Rodrguez Introduccin al lenguaje C#

Los namespace forman una jerarqua lgica, lo cual quiere decir que se pueden anidar.
Por ejemplo, dentro del namespace System se encuentra el namespace Collections
que incluye tipos como ArrayList, BitArray, Queue y Stack.

Figura 1.4. Namespaces del Framework .NET.

Se podra pensar, recordando que un assembly puede ser partido en varios ficheros, que
el assembly puede tambin realizar la funcin del ejemplo comentado. Visto as es
cierto, pero el hecho de partir un assembly en varios ficheros se realiza por motivos de
eficiencia en la transmisin de slo parte del assembly, no por motivos de organizacin
lgica.

Attributes.
Para poder convertir una clase en un componente es necesaria informacin adicional
sobre la clase como:

- Informacin sobre persistencia.


- Modo en que han de ser manejadas las transacciones.

El CLR de la plataforma .NET soporta atributos personalizados como un modo de


asociar informacin sobre el componente a los metadatos y despus poder recuperarla
mediante el mecanismo de reflexin.

Los atributos no son valores concretos y son extensibles, lo cual puede hacerlo el propio
programador.

9/13 9
Marco Besteiro y Miguel Rodrguez Introduccin al lenguaje C#

JIT (Just In Time) Compiler.


El CLR posee un compilador en lnea o JIT que tiene como labor convertir el cdigo IL
de un assembly a cdigo nativo de la plataforma para que sea ejecutado.

Esta conversin se realiza una sola vez, si se vuelve a invocar durante la ejecucin un
cdigo ya compilado a cdigo nativo, se utiliza el cdigo nativo.
Por defecto no se elige la opcin de compilar todo el assembly a nativo, ya que implica
un coste de tiempo que en la mayora de los casos no se ve justificado, ya que es raro
que se ejecute todo el cdigo del assembly en una ejecucin concreta.

Segn lo comentado, la ejecucin del cdigo intermedio de un assembly por parte del
CLR es algo as:

Figura 1.5. Funcionamiento del entorno de tiempo de ejecucin CLR.

CTS (Common Type System).


El CTS es la especificacin formal del sistema de tipos implementado por el CLR. El
CTS especifica cmo estn definidas las clases de objetos, tambin llamadas tipos.

Por ejemplo: el CTS permite a un tipo clase contener cero o ms miembros, los cuales
pueden ser campos, mtodos, propiedades o eventos.

El CTS tambin especifica reglas para:

10/13 10
Marco Besteiro y Miguel Rodrguez Introduccin al lenguaje C#

- La visibilidad de tipos y el acceso a miembros de un tipo. Los tipos pueden ser


visibles desde el exterior de su assembly, desde los clientes de su assembly o
slo desde el cdigo de su mismo assembly.
- La herencia y las funciones virtuales.
- La raz de la jerarqua de herencia: todos los tipos de clase de la plataforma
.NET deben derivar de un tipo de clase predefinido llamado System.Object
(System es un namespace). De este modo, todos los tipos de clase que se
definan heredarn las caractersticas de la clase Object.
- El ciclo de vida de un objeto.

Si se desarrolla una aplicacin para la plataforma .NET, independientemente del


lenguaje utilizado, sta debe ajustarse al CTS. Esto implica que no siempre van a poder
ser utilizadas todas las caractersticas de un lenguaje determinado. Por ejemplo, si se
desarrolla con C++ para la plataforma .NET, aunque este lenguaje soporte la herencia
mltiple no puede ser utilizada (en este caso concreto, el compilador para la plataforma
.NET de Visual C++ avisa del error).

Figura 1.6. Sistema de Tipos del Framework .NET.

CLS (Common Language Specification)


El CLR de la tecnologa .NET permite generar un assembly partiendo de varios
lenguajes, de modo que los objetos de los diferentes lenguajes puedan interoperar entre
s. Esto es posible gracias a que el CLR tiene un conjunto de tipos estndar, metadatos
para hacer que la informacin de tipos sea auto descriptiva y un entorno de ejecucin
comn.

Al intentar llevar a cabo esta interoperabilidad entre lenguajes el primer problema que
aparece son las diferencias que hay entre los diversos lenguajes. Para salvar este

11/13 11
Marco Besteiro y Miguel Rodrguez Introduccin al lenguaje C#

problema a la hora de crear tipos .NET que sean fcilmente accesibles desde otros
lenguajes de programacin es necesario utilizar caractersticas de cada lenguaje que
sean compatibles con los dems. Para hacer esta labor ms sencilla, Microsoft ha
definido el CLS, que informa a los proveedores de compiladores del conjunto mnimo
de caractersticas que han de soportar sus compiladores para adaptarse al CLR.

Se dice que un tipo es compatible con el CLS si todas sus partes accesibles
pblicamente:
- Estn compuestas slo por tipos compatibles con el CLS.
- En caso de que alguna no est compuesta por tipos compatibles con el CLS ha
de estar marcada explcitamente como no compatible con el CLS.

Se dice que una herramienta es un consumidor compatible con el CLS si puede utilizar
ntegramente cualquier tipo compatible con el CLS, es decir, llamar a cualquier mtodo
compatible con el CLS, crear una instancia de cualquier tipo compatible con el CLS,
leer y modificar cualquier campo compatible con el CLS, etc...

Por ltimo, se dice que una herramienta es un extensor compatible con el CLS si es un
consumidor compatible con el CLS y adems puede extender cualquier clase base
compatible con el CLS, implementar cualquier interface compatible con el CLS, definir
nuevos interfaces compatibles con el CLS y situar cualquier atributo compatible con el
CLS en todos los elementos de metadatos apropiados.

Sistema de Ejecucin Virtual (Virtual Execution System, VES)


El Sistema de Ejecucin Virtual implementa y refuerza el modelo CTS. Es responsable
de cargar y ejecutar los programas escritos para el CLR.

El VES ofrece los servicios necesarios para ejecutar managed code y managed data,
as como utilizar los metadatos para conectar en tiempo de ejecucin (enlace tardo o
late binding) mdulos que han sido generados por separado.

Verificacin y Seguridad.
La seguridad es inherente al diseo de la plataforma .NET. Entra en accin tan pronto
como una clase es cargada realizando chequeos para verificar el cdigo (seguridad de
tipos...).

Tras los chequeos controla el acceso del cdigo a los recursos. La seguridad de la
plataforma .NET ofrece mecanismos para controlar la identidad y las posibilidades del
cdigo. Estos mecanismos alcanzan los lmites del contexto, del proceso y de la
mquina para asegurar la seguridad de los datos en escenarios remotos. Estos
mecanismos de seguridad trabajan y extienden los mecanismos de seguridad del
Sistema Operativo.

Las reas que abarca el mecanismo de seguridad de la plataforma .NET son:


- Seguridad de tipos: el cdigo que respeta la seguridad de tipos slo referencia
memoria que haya sido reservada para su uso y slo accede a los objetos a travs
de sus interfaces. El CLR cumple la seguridad de tipos combinando un sistema
de tipos fuerte en los metadatos (parmetros, miembros y elementos de arrays,

12/13 12
Marco Besteiro y Miguel Rodrguez Introduccin al lenguaje C#

valores de retorno de mtodos y valores estticos) con un sistema de tipos fuerte


en el lenguaje intermedio MSIL (variables locales y manejo de la pila). Es
posible saltar la verificacin utilizando justificantes de confianza.
- Identificacin de cdigo: slo existen dos modos para que el cdigo se pueda
ejecutar, a travs del class loader (cargador de clases) o a travs de los
servicios de interoperabilidad. Ambos son proporcionados por el CLR y se
basan en informacin que se conoce (como puede ser la direccin de origen del
cdigo, o la identidad de quien lo ha publicado...), la cual cotejan con la que
extraen al cargar el cdigo.
- Seguridad de acceso del cdigo: Esta seguridad se basa en plizas o justificantes
asociados a los assemblies en las que se indican conjuntos de permisos que
especifican qu es lo que puede y no puede hacer el cdigo de un assembly.
- Permisos sobre recursos: Estos permisos son utilizados para saber si el cdigo
tiene derechos de acceso a recursos concretos en tiempo de carga y/o en tiempo
de ejecucin.
- Permisos de identificacin: se basan en datos de un assembly como el lugar de
origen, quin lo ha publicado, el nombre compartido del assembly... y permiten
controlar el acceso a los mtodos de las clases (son similares en cuanto a su
origen a la identificacin de cdigo).
- Seguridad declarativa: es un mecanismo muy potente que permite insertar
controles de seguridad en las clases, campos o mtodos mediante anotaciones.
- Seguridad imperativa: es similar a la declarativa, pero en lugar de anotaciones se
utiliza cdigo, con lo cual se pueden realizar controles de seguridad dinmicos,
es decir, durante la ejecucin.
- Seguridad basada en plizas o justificantes: Este tipo de seguridad consiste en
crear archivos o plizas que indiquen qu puede hacer o no un determinado
cdigo en funcin de su origen... (por ejemplo: se puede confiar en cdigo local
y en cdigo del servidor x pero no en cdigo del servidor y).
- Seguridad basada en roles: es similar a la basada en plizas pero en este caso es
el papel de un cdigo en una cierta situacin el que determina lo que puede
hacer. Por ejemplo, se puede limitar el dinero a transferir en una transaccin
dependiendo de quien la haga y en que entidad bancaria.
- Seguridad remota: Cuando se superan los lmites de una mquina, ciertos
aspectos de la seguridad como la autenticacin, autorizacin, confidencialidad e
integridad se vuelven crticos. La plataforma .NET ha de proveer soporte para
estos mecanismos de un modo compatible con los protocolos de red existentes y
con la infraestructura remota. De este modo, las aplicaciones podrn soportar
este tipo de seguridad de un modo cmodo.
- Criptografa: La plataforma .NET ofrece un conjunto de objetos criptogrficos
que soportan los algoritmos conocidos y su utilizacin ms comn (hashing,
encriptacin y firmas digitales). Los objetos criptogrficos son utilizados por la
plataforma .NET para soportar servicios internos y adems estn disponibles
para los desarrolladores que necesiten soporte criptogrfico.

13/13 13

También podría gustarte