que namespace multiple help example documentacion development c# .net namespaces assemblies

multiple - namespace c# que es



¿Espacio de nombres o Asamblea? (8)

Me estoy confundiendo mucho entre Namespaces y Assemblies. ¿Son espacios de nombres o ensamblados System.Data y System.Web ?

He notado que estos se llaman espacios de nombres y al mismo tiempo están presentes en la carpeta GAC_32 . Entonces, ¿qué son exactamente?


Como dice @amdluigi, "generalmente, el nombre del ensamblado es el mismo que el que contiene pero no siempre".

Hay una captura de pantalla anterior de System.Data.dll en el Examinador de objetos en Studio. Es un excelente ejemplo para explorar los problemas aquí. Tenga en cuenta que la mayoría de los espacios de nombres contenidos en el ensamblado son System.Data o un subespacio de nombres de System.Data.

En general, es una buena práctica que los nombres de ensamblado estén relacionados con los espacios de nombres dentro de ellos. Tenga en cuenta que cuando Studio crea por primera vez un proyecto para construir un ensamblaje, una de las propiedades del proyecto es un espacio de nombre predeterminado. Al principio, Studio da al espacio de nombre predeterminado el mismo nombre que el proyecto en sí. Si alguna vez elige cambiar el nombre de un proyecto, considere cambiar también su espacio de nombres predeterminado.

Hay dos espacios de nombres adicionales: Microsoft.SqlServer es comprensible. Algunos tipos de SQL Server que no quisieron empaquetar en un ensamblaje separado.

Pero, ¿qué pasa con System.Xml ???? Hay un ensamblado System.Xml.dll. ¿Por qué este espacio de nombres también aparece en System.Data.dll?

Observe que un ensamblado puede reabrir un espacio de nombre y agregarle más; eso es exactamente lo que System.Data.dll está haciendo con el espacio de nombres System.Xml.

La razón es que los espacios de nombres tienen cero implicaciones de rendimiento, pero los ensamblajes sí lo tienen. Si tiene 1000 clases con cantidades sustanciales de código, no desea un ensamblaje con una memoria de gran tamaño. Tampoco quieres 1000 conjuntos cada uno con una clase. Cualquier ensamblaje debe cargarse en la memoria antes de poder ejecutar su contenido. Desea que un ensamblaje contenga un número razonable de clases interrelacionadas, por lo que una vez que su aplicación ha cargado un ensamblado para obtener una de sus clases, obtiene otras clases que la aplicación probablemente necesite de forma gratuita. La granularidad es importante: no demasiado grande, no demasiado pequeña, perfecta.

Observe que System.Data.dll vuelve a abrir System.Xml y agrega exactamente una clase: XmlDataDocument. Sucede que esta clase se usa para interpretar datos relacionales como un documento XML. Si su aplicación solo usa XML, no necesitará esta clase. Si su aplicación trata con datos relacionales, podría. Entonces, mientras XmlDataDocument hereda de XmlDocument y está en el espacio de nombres System.Xml, está empaquetado en el ensamblado System.Data.dll.

Todo esto es particularmente importante si tiene antecedentes con Java, donde solo hay un concepto, el paquete. En .NET hay dos, el ensamblado y el espacio de nombres. Los dos son ortogonales. Un ensamblaje obviamente puede contener más de un espacio de nombres. Un ensamblaje puede reabrir un espacio de nombre y agregarle más; en otras palabras, los tipos en un espacio de nombre pueden abarcar más de un ensamblaje.


El archivo que ve en GAC es System.Data.dll que es un ensamblado y contiene espacios de nombres, incluido System.Data . Si ve las propiedades de Referencia en Visual Studio, verá:

Más adelante, si hace clic con el botón derecho en la referencia y selecciona ver en el navegador de objetos, verá espacios de nombres en ese ensamblaje en particular.


En breve:

Montaje:

Un conjunto proporciona una unidad fundamental de agrupamiento de código físico. Es una unidad de salida. Es una unidad de Despliegue y una unidad de control de versiones. Los ensambles contienen código MSIL.

Espacio de nombres:

Un espacio de nombres proporciona una unidad fundamental de agrupación de códigos lógicos. Es una colección de nombres en la que cada nombre es único. Constituyen el límite lógico para un grupo de clases. El espacio de nombres se debe especificar en Propiedades del proyecto.


Otros han dado respuestas muy buenas y detalladas a esta pregunta. Pero quiero señalar que cuando no esté seguro, puede buscar en MSDN. La biblioteca de MSDN explica de forma muy clara y simple el espacio de nombres y el conjunto en el que reside un tipo determinado. Incluso dice el nombre del archivo (in System.Data.dll) por lo que no hay ambigüedad.


Son espacios de nombres. Las System.dll contienen más de un espacio de nombres. Por ejemplo: System.dll contiene estos espacios de nombres (y más):

Además, un espacio de nombres puede contener espacios de nombres anidados. Son simplemente nombres lógicos para organizar el código. Solo tenga en cuenta que los archivos DLL son ensamblados que contienen espacios de nombres.

GAC es caché de ensamblaje global . De acuerdo con MSDN:

El caché de ensamblaje global almacena ensamblajes específicamente designados para ser compartidos por varias aplicaciones en la computadora.

Por lo tanto, los ensamblados comúnmente utilizados se almacenan en el GAC y, por lo tanto, no es necesario copiar todos los archivos de ensamblaje en el directorio del proyecto al que hace referencia desde su proyecto. Los ensamblados almacenados en el GAC son ensamblados de Strong-Named cuando agrega una referencia a un ensamblado de su proyecto que no tiene un Strong-Named , se creará una copia de su archivo .dll su carpeta bin/Debug Si lo desea, puede hacer que su ensamblaje (proyecto de biblioteca de clase, por ejemplo) sea de nombre fuerte. Vea : Cómo: Firmar una asamblea con un nombre fuerte


System.Data es un espacio de nombres , System.Data.DLL (el archivo) es un ensamblado .

Un espacio de nombres es una agrupación lógica de tipos (principalmente para evitar colisiones de nombres). Un ensamblado puede contener tipos en múltiples espacios de nombres ( System.DLL contiene algunos ...), y un único espacio de nombre puede distribuirse entre ensambles (por ejemplo, System.Threading ).


Namespace es una agrupación lógica de clases que pertenece a la misma funcionalidad. Entonces System.Web y System.Data son espacios de nombres

MSDN lo describe como:

Los espacios de nombres se usan mucho en la programación de C # de dos maneras. Primero, .NET Framework usa espacios de nombres para organizar sus muchas clases. En segundo lugar, declarar sus propios espacios de nombres puede ayudar a controlar el alcance de los nombres de clases y métodos en proyectos de programación más grandes.

Assembly es un fragmento de código (precompilado) que puede ser ejecutado por el entorno de tiempo de ejecución de .NET. Contiene uno o más de un espacio de nombres. Un programa .NET consta de uno o más conjuntos.

System.Web.dll y System.Data.dll son ensamblados.

MSDN lo describe como:

Los ensambles son los componentes básicos de las aplicaciones .NET Framework; ellos forman la unidad fundamental de implementación, control de versiones, reutilización, alcance de activación y permisos de seguridad. Un ensamblaje es una colección de tipos y recursos que están diseñados para funcionar juntos y formar una unidad lógica de funcionalidad. Un ensamblado proporciona el tiempo de ejecución de lenguaje común con la información que necesita para conocer las implementaciones de tipo. Para el tiempo de ejecución, un tipo no existe fuera del contexto de un ensamblaje.


En breve:

  • El ensamblaje se almacena como archivos .EXE o .DLL.
  • El espacio de nombres es una forma de agrupar nombres de tipos y reducir la posibilidad de colisiones de nombres.

Consejos.

Un conjunto contiene una colección de tipos (por ejemplo, l''assembly System contiene muchos espacios de nombres incluidos System, System.IO, ecc). Por lo general, el nombre del ensamblado es el mismo del espacio de nombres que contiene, pero no siempre.

Otro ejemplo de ensamblados y espacios de nombres.

Ensamblaje 1 ( CoreAssembly.DLL )

Contiene espacios de nombres Namespace1.subnamespace1

Assembly 2 ( ExtensionCoreAssembly.DLL )

Contiene espacios de nombres Namespace1.subnamespace1

Es posible usar el nombre del ensamblado que contiene diferentes espacios de nombres y extender un ensamblaje existente con otro ensamblaje mediante esta técnica.

DEFINICIONES

Asambleas

Un ensamblaje es una colección de tipos y recursos que forma una unidad lógica de funcionalidad. Todos los tipos en .NET Framework deben existir en ensamblajes; el tiempo de ejecución de idioma común no admite tipos fuera de ensamblados. Cada vez que crea una aplicación de Microsoft Windows®, un servicio de Windows, una biblioteca de clases u otra aplicación con Visual Basic .NET, está creando un solo ensamblaje. Cada ensamblaje se almacena como un archivo .exe o .dll. Nota Aunque es técnicamente posible crear ensamblajes que abarquen múltiples archivos, no es probable que use esta tecnología en la mayoría de las situaciones.

Espacios de nombres

Otra forma de organizar su código de Visual Basic .NET es mediante el uso de espacios de nombres. Los espacios de nombres no reemplazan los ensamblados, sino un segundo método de organización que complementa los ensamblados. Los espacios de nombres son una forma de agrupar nombres de tipos y reducir la posibilidad de colisiones de nombres. Un espacio de nombre puede contener tanto otros espacios de nombres como tipos. El nombre completo de un tipo incluye la combinación de espacios de nombres que contienen ese tipo.

Enlace: http://msdn.microsoft.com/en-us/library/ms973231.aspx