This article will explain the foundation and structure of .Net framework architecture. It begins with some explanations about previous most-used programming languages and frameworks and their drawbacks. Next, it talks about .Net advantages and features that made it a suitable choice for developing enterprise applications. It covers basic features of the .Net standard and their specifications.
Understanding the developing before .NET
When Microsoft began to design .Net framework, they’ve took some
other programming languages experiences into consideration. These
considerations have based on other languages drawbacks and success. It would be
useful for beginners who recently became familiar with .Net framework to know
about the other programming languages specifics and issues. Moreover, it is
useful for professional developers to remind them what difficulties motivated
the genesis of Microsoft’s current platform. (Meanwhile, not all professional developers
are familiar with all programming language structure!)
To begin with, a brief history of these decades programming
will be mentioned to understand the limitations of the previous state of affairs
of programming. Next, the numerous benefits provided by the .NET platform will
Programming with C/Windows API
In the past, talking about Windows family software development has
involved using of C with the Windows application programming interface (API). Although
various types of applications have been created using this technology, using
the API is a complex approach. The first problem is that C is a very laconic language. Developers
are forced to deal with manual memory management, pointer
arithmetic, and syntactical constructs. Furthermore, C is a structured language and it doesn't provide the object-oriented approach. Combination of many global functions and
data types defined by the Windows API to a robust complicated language; made many
Programming with C++/MFC
C++ can be thought of as an object-oriented layer on top of
C. Thus, even though C++ programmers benefit from the facilities of OOP, they
still feel the painful aspects of the C language like manual memory management
and pointer arithmetic. Despite its complexity, many C++ frameworks exist
today. Regardless of the helpful assistance offered by C++-based windowing
toolkits, the fact is that C++ programming was difficult and prone to error.
Programming with Visual Basic 6.0
VB6 was popular because of its easy designer for complex UI, code libraries, and easy database accessibility. Much more than MFC, VB6
hid the complexities of the raw Windows API. Its major drawback is that it is not a fully OO language.
Indeed it is object based language.
E.g. VB6 does not allow the programmer to establish classical inheritance and has no support for parameterized object construction.
Moreover, VB6 doesn't provide the ability to build multithreaded applications unless
you call low-level APIs which are complex
Programming with Java
Java is an OOP language which has derived some its syntactic structure
from C++. Java’s is platform
independence language and as a language, it has many revisions for C++ unpleasant syntactical pieces.
As a platform, it provides a large number of predefined packages (Class libraries).
One issue is that by using Java, you must probably use Java and
only Java during the development cycle. Java provides little language
integration and true
cross-language integration because of limited ability to access
non-Java APIs. This is against
the Java’s primary goal: “Single programming language for every need”.
Programming with COM
COM (Component Object Model) is Microsoft’s previous application
development framework and introduced in 1993 with the OLE. COM architecture tries
to build types which follow common rules. Therefore, they can end up with blocks
which are reusable binary code. These COM binary codes are called
“COM servers”. One benefit is that they are language-independent. However, there is no
support for inheritance. Thus it’s not possible to derive a new COM class. Another benefit is their location-transparent nature by
using structures like the system registry, application identifiers
(AppIDs), stubs, proxies, and COM runtime environment.
COM DLL can be placed in various locations of a server or local host.
Although COM can be considered a very successful model, it
is extremely complex in the real world. There are many issues with COM DLLs
especially when applications have been installed and uninstalled on a system many
times. These issues tragically termed as “DLL hell”. The difficulties consist
of conflicts between DLL versions
(Incompatible versions), DLLs obtaining
difficulty (DLL stomping), Incorrect
COM registration, and unnecessary DLL
COM assists the construction of software applications by using
different programming languages. However, its nature is not truly language-independent. Part of this complexity
comes from the fact the structures that are mixed together are completely
unrelated from the infrastructure point of view. As a result, we face a confused
mishmash of technologies. In addition, technologies type systems are not identical.
Apart from the fact that each API has its own collection of code library, even
basic data types cannot always be treated identically.
Microsoft .NET Framework
The .NET Framework is a software platform for building systems on the Windows family
of operating systems, as well as many non-Microsoft operating systems. Among
the difficulties of other programming languages and platforms which has
mentioned, the .NET Framework is an approach to making our lives easier. Here are
some core’s features of .NET have mentioned:
- Interoperability: Existing COM binaries can shuffle with
newer .NET binaries and vice versa.
In .NET 4.0, it has been further simplified with the “dynamic” keyword.
programming languages: Various types of languages supported by .NET.
runtime engine: This engine has a well-defined set of types
that each .NET-aware language understands.
language integration: .NET supports cross-language inheritance, exception handling, and debugging of code.
class library: This library provides a simple structure in
contrast with complexities of raw API calls and offers a common consistent
- No more
COM drawbacks: .NET is simplified and doesn’t have COM complexities.
deployment model: In .NET, there is no need to register binary unit into the system
registry. Furthermore, .NET allows
multiple versions of the same DLL to exist. The .NET platform has
nothing to do with COM (beyond the fact that both frameworks originated from
Microsoft). In fact, the only way .NET and COM types can interact with each
other is using the interoperability layer.