Tuesday, March 10, 2009

interview Questions Part II

1.What is Assembly?

Assemblies are the building blocks of .NET Framework applications; they form the
fundamental unit of deployment, version control, reuse, activation scoping, and security
permissions. An assembly is a collection of types and resources that are built to work
together and form a logical unit of functionality. An assembly provides the common
language runtime with the information it needs to be aware of type implementations. To
the runtime, a type does not exist outside the context of an assembly.Assemblies are a
fundamental part of programming with the .NET Framework. An assembly performs the
following functions: It contains code that the common language runtime executes.
Microsoft intermediate language (MSIL) code in a portable executable (PE) file will not
be executed if it does not have an associated assembly manifest. Note that each assembly
can have only one entry point (that is, DllMain, WinMain, or Main). It forms a security
boundary. An assembly is the unit at which permissions are requested and granted. It
forms a type boundary. Every type's identity includes the name of the assembly in which
it resides. A type called MyType loaded in the scope of one assembly is not the same as a
type called MyType loaded in the scope of another assembly. It forms a reference scope
boundary. The assembly's manifest contains assembly metadata that is used for resolving
types and satisfying resource requests. It specifies the types and resources that are
exposed outside the assembly. The manifest also enumerates other assemblies on which it
depends. It forms a version boundary. The assembly is the smallest versionable unit in the
common language runtime; all types and resources in the same assembly are versioned as
a unit. The assembly's manifest describes the version dependencies you specify for any
dependent assemblies. It forms a deployment unit. When an application starts, only the
assemblies that the application initially calls must be present. Other assemblies, such as
localization resources or assemblies containing utility classes, can be retrieved on
demand. This allows applications to be kept simple and thin when first downloaded. It is
the unit at which side-by-side execution is supported. Assemblies can be static or
dynamic. Static assemblies can include .NET Framework types (interfaces and classes),
as well as resources for the assembly (bitmaps, JPEG files, resource files, and so on).
Static assemblies are stored on disk in PE files. You can also use the .NET Framework to
create dynamic assemblies, which are run directly from memory and are not saved to disk
before execution. You can save dynamic assemblies to disk after they have
executed.There are several ways to create assemblies. You can use development tools,
such as Visual Studio .NET, that you have used in the past to create .dll or .exe files. You
can use tools provided in the .NET Framework SDK to create assemblies with modules
created in other development environments. You can also use common language runtime
APIs, such as Reflection.Emit, to create dynamic assemblies

2.What are the contents of assembly?

In general, a static assembly can consist of four elements: 1.The assembly manifest,
which contains assembly metadata. 2.Type metadata. 3.Microsoft intermediate language
(MSIL) code that implements the types. 4. A set of resources.

3.What are the different types of assemblies?

Private, Public/Shared, Satellite

4.What is the difference between a private assembly and a shared assembly?

a. Location and visibility: A private assembly is normally used by a single application,
and is stored in the application's directory, or a sub-directory beneath. A shared assembly
is normally stored in the global assembly cache, which is a repository of assemblies
maintained by the .NET runtime. Shared assemblies are usually libraries of code which
many applications will find useful, e.g. the .NET framework classes.
b. Versioning: The runtime enforces versioning constraints only on shared assemblies,
not on private assemblies.

5.What are Satellite Assemblies? How you will create this? How will you get the
different language strings?

Satellite assemblies are often used to deploy language-specific resources for an
application. These language-specific assemblies work in side-by-side execution because
the application has a separate product ID for each language and installs satellite
assemblies in a language-specific subdirectory for each language. When uninstalling, the
application removes only the satellite assemblies associated with a given language and
.NET Framework version. No core .NET Framework files are removed unless the last
language for that .NET Framework version is being removed.(For example, English and
Japanese editions of the .NET Framework version 1.1 share the same core files. The
Japanese .NET Framework version 1.1 adds satellite assemblies with localized resources
in a \ja subdirectory. An application that supports the .NET Framework version 1.1,
regardless of its language, always uses the same core runtime
files.)

6.What is Assembly manifest? what all details the assembly manifest will contain?

Every assembly, whether static or dynamic, contains a collection of data that describes
how the elements in the assembly relate to each other. The assembly manifest contains
this assembly metadata. An assembly manifest contains all the metadata needed to
specify the assembly's version requirements and security identity, and all metadata
needed to define the scope of the assembly and resolve references to resources and
classes. The assembly manifest can be stored in either a PE file (an .exe or .dll) with
Microsoft intermediate language (MSIL) code or in a standalone PE file that contains
only assembly manifest information.It contains Assembly name, Version number,
Culture, Strong name information, List of all files in the assembly, Type reference
information, Information on referenced assemblies.

7.Difference between assembly manifest & metadata?

assembly manifest - An integral part of every assembly that renders the assembly self-
describing. The assembly manifest contains the assembly's metadata. The manifest
establishes the assembly identity, specifies the files that make up the assembly
implementation, specifies the types and resources that make up the assembly, itemizes the
compile-time dependencies on other assemblies, and specifies the set of permissions
required for the assembly to run properly. This information is used at run time to resolve
references, enforce version binding policy, and validate the integrity of loaded
assemblies. The self-describing nature of assemblies also helps makes zero-impact install
and XCOPY deployment feasible.
metadata - Information that describes every element managed by the common language
runtime: an assembly, loadable file, type, method, and so on. This can include
information required for debugging and garbage collection, as well as security attributes,
marshaling data, extended class and member definitions, version binding, and other
information required by the runtime.

8.What is Global Assembly Cache (GAC) and what is the purpose of it? (How to
make an assembly to public? Steps) How more than one version of an assembly can
keep in same place?

Each computer where the common language runtime is installed has a machine-wide
code cache called the global assembly cache. The global assembly cache stores
assemblies specifically designated to be shared by several applications on the computer.
You should share assemblies by installing them into the global assembly cache only
when you need to.Steps- Create a strong name using sn.exe tooleg: sn -k keyPair.snk-
with in AssemblyInfo.cs add the generated file name eg: [assembly:
AssemblyKeyFile("abc.snk")]- recompile project, then install it to GAC by eitherdrag &
drop it to assembly folder (C:\WINDOWS\assembly OR C:\WINNT\assembly)
(shfusion.dll tool)orgacutil -i abc.dll

9.How to find methods of a assembly file (not using ILDASM)
By using Reflection .

No comments:

Post a Comment