Assemblies
are the basic building blocks required for any application to function
in the .NET realm. They are partially compiled code libraries that form
the fundamental unit of deployment, versioning, activation scoping,
reuse, and security. Typically, assemblies provide a collection of types
and resources that work together to form a logical unit of
functionality. They are the smallest deployable units of code in .NET.
Compared to the executable files assemblies are far more reliable, more
secure, and easy to manage. An assembly contains a lot more than the
Microsoft Intermediate Language (MSIL) code that is compiled and run by
the Common Language Runtime (CLR). In other words, you can say that an
assembly is a set of one or more modules and classes compiled in MSIL,
and metadata that describes the assembly itself, as well as the
functionalities of the assembly classes.
2. Name the different components of an assembly.
An assembly is a logical unit that is made up of the following four different types of components:
- Assembly manifest
- MSIL source code
- Type metadata
- Resources
3. What are the different types of assemblies? Explain them in detail.
The following are the two types of assemblies:
- Private Assembly - Refers to the assembly that is used by a single application. Private assemblies are kept in a local folder in which the client application has been installed.
- Public or Shared Assembly - Refers to the assembly that is allowed to be shared by multiple applications. A shared assembly must reside in Global Assembly Cache (GAC) with a strong name assigned to it.
4. Can one DLL file contain the compiled code of more than one .NET language?
No, a DLL file can contain the compiled code of only one programming language.
5. What is the maximum number of classes that can be contained in a DLL file?
There is no limit to the maximum number of classes that can be contained in a DLL file.
6. What is a satellite assembly?
Satellite
assemblies are assemblies that are used to deploy language and culture
specific resources for an application. In an application, a separate
product ID is assigned to each language and a satellite assembly is
installed in a language specific sub-directory.
7. Is versioning applicable to private assemblies?
No,
versioning is not applicable to private assemblies as these assemblies
reside in their individual folders. Versioning can be applied to GAC
only.
8. What is metadata?
An
assembly metadata describes every data type and member defined in the
code. It stores the description of an assembly, such as name, version,
culture, public key of an assembly along with the types exported, other
assemblies dependent on this assembly, and security permissions needed
to run the application. In addition, it stores the description of types,
such as the name, visibility, base class, interfaces implemented, and
members, such as methods, fields, properties, events, and nested types.
It also stores attributes. Metadata is stored in binary format. Therefore, metadata of an assembly is sharable among applications that execute on various platforms. It can also be exported to other applications to give information about the services and various features of an application.
It also stores attributes. Metadata is stored in binary format. Therefore, metadata of an assembly is sharable among applications that execute on various platforms. It can also be exported to other applications to give information about the services and various features of an application.
9. What is Assembly Manifest?
Assemblies maintain all their information in a special unit called the manifest. Every assembly has a manifest.
The followings are the contents of an Assembly Manifest:
The followings are the contents of an Assembly Manifest:
- Assembly name - Represents a text string that specifies the assembly's name.
- Version number - Represents a major and minor version number, as well as a revision and build number. The CL.R makes use of these numbers to enforce version policy.
- Culture - Represents information of the culture or language, which the assembly supports. An assembly is a container of only resources containing culture- or language-specific information.
- Strong name information - Represents the public key from the publisher, if a strong name is assigned to an assembly.
- List of all files in the assembly - Represents a hash of each file contained in the assembly and a file name.
- Type reference information - Represents the information used at the runtime to map a type reference to the file that contains its declaration and implementation.
- Information on referenced assemblies - Represents a list of other assemblies that are statically referenced by the assembly. Each reference includes the names of dependent assemblies, assembly metadata (version, culture, operating system, and so on), and public key, if the assembly is strong named.
10. What is the value of the Copy Local property when you add an assembly in the GAC?
False.
11. What is Native Image Generator?
The Native Image Generator (Ngen.exe)
is a tool that creates a native image from an assembly and stores that
image to native image cache on the computer. Whenever, an assembly is
run, this native image is automatically used to compile the original
assembly. In this way, this tool improves the performance of the managed
application by loading and executing an assembly faster.
Note that native images are files that consist of compiled processor-specific machine code. The Ngen.exe tool installs these files on to the local computer.
Note that native images are files that consist of compiled processor-specific machine code. The Ngen.exe tool installs these files on to the local computer.
No comments:
Post a Comment