There are few terms being used when you deal with project development with
Microsoft .Net technology. If you are a Team Lead or a senior developer or
simply a beginner you may want to know about these terms which are extensively
being used when working on project of .Net.
Application - refers to an assembly that has an entry point . When an
application is run, a new application domain is created. Several different
instantiations of an application can exist on the same machine at the same time,
and each has its own application domain.
Application vs. program
Note that an application is just an assembly with an entry point, and an
application may be used as a class library by another application. Common usage
often has the terms application and program interchangeable, but there is a
defined difference in C#; see the definition of program in the following text.
Application domain - an entity that enables application isolation by
acting as a container for application state. An application domain acts as a
container and boundary for the types defined in the application and the class
libraries it uses. Types loaded into one application domain are distinct from
the same type loaded into another application domain, and instances of objects
are not directly shared between application domains. For instance, each
application domain has its own copy of static variables for these types, and a
static constructor for a type is run at most once per application domain.
Implementations are free to provide implementation-specific policy or mechanisms
for the creation and destruction of application domains.
Argument - an expression in the comma-separated list bounded by the
parentheses in a method or instance constructor call expression or bounded by
the square brackets in an element access expression. It is also known as an
actual argument.
Assembly - refers to one or more files that are output by the compiler as
a result of program compilation. An assembly is a configured set of loadable
code modules and other resources that together implement a unit of
functionality. An assembly can contain types, the executable code used to
implement these types, and references to other assemblies. The physical
representation of an assembly is not defined by this specification. Essentially,
an assembly is the output of the compiler.
Assembly vs. class files
It is interesting to compare the granularity of Java and C# compiler outputs. A
C# compiler will probably emit an assembly, a Java compiler a collection of
class files. This emphasizes an important C# design goal-to support components
rather than individual types.
Behavior - external appearance or action.
Behavior, implementation-defined - unspecified behavior where each
implementation documents how the choice is made.
Behavior, undefined - behavior, upon use of a non-portable or erroneous
construct or of erroneous data, for which this International Standard imposes no
requirements. [Possible handling of undefined behavior ranges from ignoring the
situation completely with unpredictable results, to behaving during translation
or execution in a documented manner characteristic of the environment (with or
without the issuance of a diagnostic message), to terminating a translation or
execution (with the issuance of a diagnostic message)].
Behavior, unspecified - behavior where this International Standard
provides two or more possibilities and imposes no further requirements on which
is chosen in any instance.
Class library - refers to an assembly that can be used by other assemblies. Use
of a class library does not cause the creation of a new application domain.
Instead, a class library is loaded into the application domain that uses it. For
instance, when an application uses a class library, that class library is loaded
into the application domain for that application. If an application uses a class
library A that itself uses a class library B, then both A and B are loaded into
the application domain for the application.
Accessing class libraries
The mechanism by which class libraries are made available to the current
compilation is not defined by this specification.
Diagnostic message - a message belonging to an implementation-defined subset of
the implementation's output messages.
Error, compile-time - an error reported during program translation.
Exception - an error condition that is outside the ordinary expected
behavior.
Implementation - particular set of software (running in a particular
translation environment under particular control options) that performs
translation of programs for, and supports execution of methods in, a particular
execution environment.
Namespace - a logical organizational system that provides a way of
presenting program elements that are exposed to other programs.
Parameter - a variable declared as part of a method, instance
constructor, operator, or indexer definition, which acquires a value on entry to
that function member. It is also known as a formal parameter.
Program - refers to one or more source files that are presented to the
compiler. Essentially, a program is the input to the compiler.
Programs, assemblies, applications and class libraries
This definition of program differs from common usage. In C#, a program is just
the input to the compiler. The output of the compiler is an assembly, which is
either an application or a class library.
Program, valid - a C# program constructed according to the syntax rules
and diagnosable semantic rules.
Program instantiation - the execution of an application.
Recommended practice - specification that is strongly recommended as
being aligned with the intent of the standard, but that might be impractical for
some implementations.
Source file - an ordered sequence of Unicode characters. Source files
typically have a one-to one correspondence with files in a file system, but this
correspondence is not required.
Unsafe code - code that is permitted to perform such lower-level
operations as declaring and operating on pointers, performing conversions
between pointers and integral types, and taking the address of variables. Such
operations provide functionality such as permitting interfacing with the
underlying operating system, accessing a memory-mapped device, or implementing a
time-critical algorithm.
Warning, compile-time - an informational message reported during program
translation, that is intended to identify a potentially questionable usage of a
program element.