Compartir a través de


Consideraciones generales

Todas las llamadas realizadas entre el código administrado y no administrado deben negociar los requisitos impuestos por cada modelo de programación respectivo. Los modelos de programación administrado y no administrado son diferentes en numerosos aspectos. En la siguiente tabla se muestran las características que definen cada modelo.

Característica Modelo no administrado Modelo administrado

Modelo de codificación

Basado en interfaces

Basado en objetos

Identidad

GUID

Nombres seguros

Mecanismo de control de errores

Valores HRESULT

Excepciones

Compatibilidad de tipos

Estándar binario

Estándar de tipo

Definiciones de tipo

Biblioteca de tipos

Metadatos

Seguridad de tipos

Sin seguridad de tipos

Con seguridad de forma opcional

Control de versiones

Inmutable

Resiliente

Algunas características del modelo de programación tienen entidades asociadas que puede ver, como las bibliotecas de tipos y los metadatos. Algunas de ellas pueden pasarse como argumentos, como los identificadores únicos globales (GUID) y los nombres seguros. Otras características son más conceptuales: sin duda alguna tendrá en cuenta su impacto en el diseño de su aplicación, pero no encontrará ninguna asignación directa entre los modelos administrado y no administrado para estas características.

En las siguientes secciones se explica con más detalle cada una de estas características.

  • Modelos de codificación
    Los objetos no administrados siempre se comunican a través de interfaces; las clases y los objetos administrados pueden pasar datos directamente sin implementar interfaces.

    De manera predeterminada, la interoperabilidad COM genera una interfaz de clase para exponer funcionalidad administrada mediante una interfaz a COM cuando el objeto o la clase no implementa ninguna.

  • Mecanismos de control de errores
    Los métodos COM suelen devolver un valor HRESULT, que indica que la llamada se realizó correctamente o produjo un error. El código administrado incorpora excepciones. De manera predeterminada, la interoperabilidad COM asigna las excepciones administradas a valores HRESULT de error.
  • Identidades
    Los GUID identifican un tipo administrado específico y no proporcionan información de ubicación para dicho tipo. Los nombres seguros constan de un nombre de ensamblado único además de un nombre de tipo. Como el nombre de ensamblado identifica de forma única el tipo, puede reutilizar un nombre de tipo en varios ensamblados. Un ensamblado también proporciona información de clave, versión y ubicación a un tipo administrado. Los servicios de interoperación generan GUID y tienen nombres seguros.
  • Compatibilidad de tipos
    Los tipos varían entre el código administrado y no administrado, y también entre los lenguajes.
  • Definiciones de tipo
    Si está acostumbrado a trabajar con bibliotecas de tipos, sabe que sólo contienen tipos públicos. Además, una biblioteca de tipos es opcional. En el modelo de programación administrado, la información de tipos es obligatoria para todos los tipos. Los servicios de interoperación proporcionan herramientas que convierten las bibliotecas de tipos en metadatos en los ensamblados y los metadatos en bibliotecas de tipos.
  • Seguridad de tipos
    Los compiladores no administrados no proporcionan comprobación de tipos para los tipos de puntero, lo que hace al código susceptible de posibles actividades peligrosas. En general, el código administrado requiere un nivel de confianza superior. Los programadores pueden seguir utilizando punteros en código administrado, aunque el código tiene restricciones debido a su comportamiento no seguro. Los servicios de interoperación impiden que el código administrado que no es de confianza tenga acceso al código no administrado.
  • Control de versiones
    Las interfaces COM son inmutables. Si cambia una interfaz, debe cambiar su nombre con un nuevo GUID. Los tipos administrados pueden evolucionar y conservar el mismo nombre.

Vea también

Otros recursos

Consideraciones de diseño para interoperaciones