Click here to Skip to main content
12,507,089 members (63,251 online)
Click here to Skip to main content
Add your own
alternative version


70 bookmarked

.Net Framework Infrastructure

, 29 Sep 2012 CPOL
Rate this:
Please Sign up or sign in to vote.
This article will explain the foundation and structure of .Net framework architecture


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 be discussed.

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 buggy applications. 

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 and dangerous.

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 copies existence.

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.
  • Support programming languages: Various types of languages supported by .NET.
  • Common runtime engine: This engine has a well-defined set of types that each .NET-aware language understands.
  • Complete language integration: .NET supports cross-language inheritance, exception handling, and debugging of code.
  • Comprehensive class library: This library provides a simple structure in contrast with complexities of raw API calls and offers a common consistent object model.
  • No more COM drawbacks: .NET is simplified and doesn’t have COM complexities.
  • Simplified 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. 


This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


About the Author

Saeid Pournejati
Software Developer
United States United States
Saeid is a health informaticist and software engineer with professional experience working on different range of medical software projects from conception to delivery. Master’s degree student in health informatics with expertise in designing and implementing EMR and RIS systems and contributed to a wide range of enterprise and academic health information projects using different range of technologies including C#, ASP.NET, SQL Server, Python, PHP, Java, Redis, MongoDb, and ElasticSearch.

You may also be interested in...


Comments and Discussions

GeneralMy vote of 5 Pin
DenisK1-Oct-12 5:02
memberDenisK1-Oct-12 5:02 
AnswerRe: My vote of 5 Pin
Saeid Pournejati1-Oct-12 5:22
memberSaeid Pournejati1-Oct-12 5:22 
GeneralRe: My vote of 5 Pin
DenisK1-Oct-12 5:59
memberDenisK1-Oct-12 5:59 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

| Advertise | Privacy | Terms of Use | Mobile
Web02 | 2.8.160927.1 | Last Updated 29 Sep 2012
Article Copyright 2012 by Saeid Pournejati
Everything else Copyright © CodeProject, 1999-2016
Layout: fixed | fluid