Das .NET Framework ist die ursprüngliche Variante von Microsoft .NET, die Microsoft in den Jahren 2002 bis 2019 veröffentlicht hat. Das .NET Framework wurde seit 2016 schrittweise von .NET Core abgelöst, wobei .NET Core seit Ende 2020 mit Erscheinen der Version 5.0 offiziell nur noch ".NET" heißt.

Das .NET Framework (abgekürzt .NET) ist eine in direkter Konkurrenz zu Java stehende betriebssystem- und hardwareneutrale Softwareentwicklungsplattform.

Versionsgeschichte des klassischen .NET Framework:

Erste Erwähnung durch Bill Gates: Juni 2000
Erste öffentliche Alpha-Version: Juli 2000 auf Professional Developers Conference (PDC)
[VERSIONEN]

Bedeutung

Das im Jahr 2002 eingeführte .NET Framework hat – im Gegensatz zu anderen, von Microsoft zum Hype erklärten Neuerungen – die Softwareentwicklung auf der Windows Plattform grundsätzlich verändert. Vergleichbare Veränderungen waren der Schritt von DOS zu Windows und von 16-Bit-Windows zu 32-Bit-Windows.

Technische Merkmale des .NET Framework

Wesentliche Merkmale des .NET Framework sind:
 Plattformunabhängigkeit durch Zwischensprache / Intermediation mit Just-in-Time-Compiler wie bei Java (Write Once Run Anywhere-Prinzip)
 Sprachunabhängigkeit (mehr als 70erschiedene Programmiersprachen) mit sprachübergreifenden Aufrufen und sprachübergreifender Vererbung
 Durchgängige Objektorientierung: auch elementare Datentypen wie Zahlen und Zeichenketten sind Objekte
 Unterstützung für wiederverwendbare Softwarekomponenten
 Verschiedene Anwendungstypen (Fat-Clients, Standard-Webanwendungen, Rich Internet Applications, Systemdienste, Webdienste, Pocket-Programmcode-Anwendungen, SmartPhone-Anwendungen)
 Einheitliche Laufzeitumgebung mit Diensten wie Codeüberprüfung (Sicherheit, Array-Grenzen etc.), Threading, Speicherbereinigung und Ausnahmebehandlung
 Umfangreiche Klassenbibliothek mit mehr als 12.000 Klassen, einheitlich für alle .NET-fähigen Pro-grammiersprachen
 XML-basierte Konfiguration von Anwendungen (Abkehr von der Windows-Registrierungsdatenbank)
 Parallelbetrieb verschiedener .NET Framework-Versionen (eine .NET-Anwendung startet automatisch mit der Framework-Version, für die sie entwickelt wurde)
 Bereitstellen von Metadaten über den Programmcode (automatische Metadatengenerierung und manu-elle Metadaten)
 Lose Schnittstellenverträge, die ermöglichen, dass man Klassenmitglieder ergänzt, ohne den Schnitt-stellenvertrag zu brechen (Der Vertrag wird erst gebrochen, wenn man Mitglieder oder Parameter ent-fernt bzw. Datentypen ändert.)
Xcopy-Deployment (Verteilung von Anwendungen durch einfaches Kopieren der Programmdateien sowie der zugehörigen Bibliotheken und Ressourcendateien)
 Interoperabilität zu älteren Plattformen (COM, Windows 32 API) sowie über XML-Webservices zu anderen Plattformen
 Schutz vor »gefährlichem« Programmcode durch Sandbox-Konzepte wie in Java.

Links:

http://msdn.microsoft.com/net/
http://www.dotnetframework.de/

Varianten:

Eine Differenzierung in allgemeine Anwendungen (Java SE) und Unternehmensanwendungen (Java EE) gibt es nicht. .NET differenziert vielmehr zwischen Funktionen für den Client („.NET Framework Client Profile“) und zusätzlichen Funktionen für Server („.NET Framework Extended“).

Kernbausteine des .NET Framework

Common Language Runtime (CLR)
Laufzeitumgebung mit Gar-bage Collector, Exception Handling, Multi-Threading, Code-Sicherheit, u.a.

Microsoft Intermediate Language (MSIL)
Zwischensprache

Common Type System (CTS)
Sprachunabhängiges Typkonzept

Common Language Specification (CLS)
Regelwerk für Sprachinteroperabilität

C#, Managed C++, Visual Basic .NET, Jscript .NET, C#, u.a.
.NET-fähige Programmierhochsprachen

.NET Framework Class Library (FCL)
Klassenbibliothek
Zu der Klassenbibliothek gehören auch die Benutzerschnittstellentechnologien wie ASP.NET, Windows Forms und WPF, ebenso wie Datenzugriff (ADO.NET, ADO.NET Entity Framework, System.Xml) und Verteilungstechnologie wie .NET Remoting und WCF.

Geschichte

.NET kann als die dritte Evolutionsstufe der Programmierung mit Microsoft Windows bezeichnet werden. In Zeit vor 1993 wurden Windows-Anwendungen hauptsächlich mit C und C++ geschrieben. Das Wieder-verwendungsmodell basierte auf einfachen C-DLL. Verteilung basierte auf Remote Procedure Calls (RPC). Für den Zugang zu Betriebssystemresourcen stand das Windows-16-API, später das Windows-32-API, jeweils als eine Sammlung von DLLs zur Verfügung. Skriptprogrammierung basierte auf der DOS-Shell-Batchsprache.

1993 führte Microsoft das Component Object Model (COM) und später auch die Verteilung auf Basis des Distributed Component Object Model (DCOM). COM/DCOM stellte ein sprachunabhängiges Software-komponnetenmodell dar. Es gab mit Visual Basic, Delphi, VBScript, JavaSctipt, Perl u.a. Sprachen, die COM/DCOM nutzten. Skriptprogrammierung wurde im Rahmen von "Active Scripting" stark verallge-meinert und diente nun nicht mehr nur dem Scripting des Betriebssystems, sondern auch innerhalb von Anwendungen wie dem Internet Explorer-Webbrowser und dem Microsoft Exchange-Mailserver. Viele Teile des Windows-32-API wurden in COM-Komponenten gekapselt.

Trotz des gemeinsamen Komponentenmodells musste jede Programmiersprache unter Windows weiterhin eine eigene Laufzeitumgebung implementieren, insbesondere auch für den Zugriff auf lokale und entfernte Komponenten. Dies führte zu großen Unterschiedenen in der Programmierung. Auch waren COM-Komponenten nicht plattformneutral. Sie lagen immer in Maschinencode vor, der für jede Prozessorarchi-tektur und jedes Betriebssystem separat zu kompilieren war. Zudem bot COM kein Sicherheitsmodell zum Schutz vor bösem Code. Eine weitere Schwäche vom COM war, dass Softwarekomponenten in der Win-dows-Registrierungsdatenbank verzeichnet werden mussten und es dort schnell zur sogenannten "DLL-Hölle" kam, wenn zwei Anwendungen jeweils eine verschiedene Version einer einzigen COM-Komponente benötigten.

Das 2002 eingeführte .NET Framework eliminierte diese Nachteile. Es gibt zahlreiche Programmierspra-chen für .NET, die alle auf die .NET-Laufzeitumgebung zurückgreifen. Das Kompilat verwendet genau wie Java eine Zwischensprache, sodass .NET plattformneutral ist. .NET bietet ein Sicherheitsmodell und erfordert nicht mehr, dass man Softwarekomponenten in der Windows-Registrierungsdatenbank zentral verzeichnet. Jede Anwendung kann vielmehr eine eigene, dezentrale Version einer Komponente besitzen, sodass die "DLL-Hölle" vermieden wird. Die Verteilung hauptsächlich basiert auf dem plattformunabhän-gigen Webservices.

Auch fast 10 Jahre nach der Einführung von .NET basieren heute aber noch sehr viele Anwendungen auf den beiden Vorgängermodell. Auch das Windows-Betriebssystem selbst basiert noch komplett auf C, C++ sowie COM/DCOM. Nicht alle Funktionen des Windows-Betriebssystem stehen als .NET-Softwarekomponente zur Verfügung und Microsoft führt auch in neuen Windows-Betriebssystemen immer neue C-basierte Programmierschnittstellen ein ohne dafür einen Wrapper als .NET-Komponente bereitzu-stellen.

Daher ist die Abwärtskompatibilität sehr wichtig. .NET kann auf sowohl COM/DCOM-Komponenten als auch C-DLLs zugreifen. Auch umgekehrt kann man von den alten Welten auf .NET-Komponenten zugrei-fen.

Weitere Informationen finden Sie in diesen Beiträgen:

.NET
.NET 2015
.NET 3.0
.NET 3.5
.NET 4.0
.NET 4.5
.NET 5.0
.NET 6.0
.NET 9.0
.NET Compact Framework
.NET Compiler Platform
.NET Connected
.NET Core
.NET Core 1.1
.NET Core 2.0
.NET Core 2.1
.NET Core 3.0
.NET Core 3.1
.NET Core 5.0
.NET Core Common Language Runtime
.NET Design Guidelines
.NET Enterprise Library
.NET Enterprise Servers
.NET Enterprise Services
.NET for the Cloud
.NET for Windows Store Apps
.NET Framework 1.0
.NET Framework 1.1
.NET Framework 2.0
.NET Framework 2005
.NET Framework 3.0
.NET Framework 3.5
.NET Framework 4.0
.NET Framework 4.5
.NET Framework 4.5.1
.NET Framework 4.5.2
.NET Framework 4.6
.NET Framework 4.7
.NET Framework 4.7.1
.NET Framework 4.8
.NET Framework 4.8.1
.NET Framework 5.0
.NET Framework 64-Bit
.NET Framework Class Library
.NET Framework Client Profile
.NET Framework Standard Library
.NET Micro Framework
.NET Multi-Platform App UI
.NET Native
.NET Open Source
.NET Remoting
.NET Software Development Kit
.NET Standard
.NET-Dienste
.NET-Komponente
.NET-Plattform
.NET-Profile
.NET-Sprache
Abstract Windowing Toolkit
Active Data Objects .NET
Active Data Objects .NET 2.0
Active Directory Management Objects
Active Directory Service Interface
Active Directory Web Services
Active Server Pages .NET
Active Server Pages .NET 2.0
ActiveX
ADO.NET Entity Framework
ADO.NET Entity Framework 4.0
ADO.NET Object Services
Aero
Ahead-of-Time-Compilation
Aliaseigenschaft
Allow Partially Trusted Callers
Always Encrypted
Anders Hejlsberg
ASP.NET 3.5 Extensions
ASP.NET AJAX Control Toolkit
ASP.NET Compiler
ASP.NET Core
ASP.NET Core 1.1
ASP.NET Core 2.0
ASP.NET Core 8.0
ASP.NET Core SignalR
ASP.NET Dynamic Data Website
ASP.NET Mobile Control
ASP.NET Precompilation
ASP.NET Web Site Administration Tool
ASP.NET Webforms
ASP.NET Webforms 2.0
ASP.NET Webforms 3.5
ASP.NET-Webservice
ASP.NET-Werkzeuge
Assembly
Assembly Download Cache
Assemblylinker
Avalon
Avalonia XPF
Azure Container Registry
Base Class Library
BASTA
Benutzerdefinierte Codegruppe
Blazor Static Server Side Rendering
Boxing
C# 13.0
Classic Code
Click-Once-Deployment
CLI-Dienste
CLI-Komponente
CLR-Komponente
Code Access Security
Codeanalyse
COM+
COM-fähige Sprachen
Commandlet
Common Language Infrastructure
Common Language Specification
Common Object Runtime
Component Object Model
Component Object Runtime
Core Windows Communication Foundation
CSharp
CSharp 10.0
CSharp 12.0
CSharp 2.0
CSharp 4.0
CSharp 5.0
CSharp 6.0
CSharp 7.1
CSharp 7.3
CSharp 8.0
CSharp 9.0
CSPROJ
Data Annotation
Data Protection API
DataSet
Dateisystem
Datenbankschnittstelle
DBNULL
Debugger
Design Time Control
Developer Division
Developer Division Compatibility Council
Directory Services Markup Language
Distributed Component Object Model
Docker Hub
DOTNET
DOTNET Scripting Host
Dublin
Durable Service
Dynamic Language Runtime
edge.JS
Eigenschaftssatz
Entity Framework Core
Entity Framework Core 2.0
Entity Framework Core 3.1
Entity Framework Core 5.0
Entwicklungsumgebung
Ereignisprotokoll
European Computer Manufacturers Association
eXtensible Application Markup Language
FORMATETC
Framework-dependent Deployment
FSharp
FxCOP
Getter
Git Credential Manager
Global Unique Identifier
Graphics Device Interface+
HTTP-API
Hypertext Transfer Protocol
IAsyncResult
IComponent
IDisposable
IEnumerable
Imagine Cup
In-Memory Database
In-Place-Update
Int64
Integer8
Internet Information Server 7.0/7.5
IronPython
Isolated Storage
J/Direct
J++
Java
Java User Migration Path to Microsoft .NET
Java Virtual Machine
JScript .NET
JSharp
Klasse
Klassenbrowser
Language Integrated Query
Large Object Heap
LINQ-to-SQL
Machine.config
Managed C++
Managed Code
Managed Component
Managed Debugger
Managed JScript
Managed Object
Managed Profile Guided Optimization
Marker Interface
Metadaten
Metaobjekt
Microsoft ASP.NET AJAX
Microsoft Build
Microsoft BUILD-Konferenz
Microsoft BUILD-Konferenz 2015
Microsoft BUILD-Konferenz 2016
Microsoft BUILD-Konferenz 2017
Microsoft Certified Application Developer
Microsoft Content Management Server
Microsoft Intermediate Language
Microsoft Silverlight
Microsoft SQL Server 2005
Microsoft SQL Server 2008
Microsoft Synchronization Services for ADO.NET
Microsoft Transaction Server
Microsoft Unity Container
Mobile Internet Toolkit
Mono
MS Build Everett Environment
MSIX Windows Application Packaging
Multi File Assembly
Multitargeting
Multi-Targeting
Native Image
Native Image Cache
Native Image Generation
Next Generation Windows Service
NoGCRegion
Notizeigenschaft
No-Touch-Deployment
NuGet Library Package Manager
Objectspaces
Open Data Protocol
Open XML
Orcas
Parallel LINQ
Partielle Klasse
Platform Invoke
Plattformunabhängigkeit
Pocket PC
Polly
Portable Class Library
PowerShell
PowerShell Core
Primary Interop Assembly
Project 7
Project K
Qualifier
Reference Assembly
Regulärer Ausdruck
Representational State Transfer
Resilienz
Ressourcendatei
Runtime Callable Wrapper
RyuJIT
Script for .NET
Serialisierung
Serviced Component
Setter
Shared Project
Shared Source Common Language Infrastructure
Side-By-Side Execution
Simple Mail Transfer Protocol
Simple Object Access Protocol
Skripteigenschaft
SOAP-Extension
Softwarekomponente
SqlBulkCopy
SqlServerCe
Standard-Term-Support
Strongly Named Assembly
Strongly-Typed Ressource
System
System.CodeDom
System.CodeDom.Compiler
System.Collections
System.Collections.Specialized
System.ComponentModel
System.ComponentModel.Design
System.ComponentModel.Design.Serialization
System.Configuration
System.Configuration.Assemblies
System.Configuration.Install
System.Console
System.Data
System.Data.Common
System.Data.ObjectSpaces
System.Data.OleDb
System.Data.SqlClient
System.Data.SqlTypes
System.Deployment
System.Diagnostics
System.Diagnostics.Design
System.Diagnostics.SymbolStore
System.Drawing
System.Drawing.Design
System.Drawing.Drawing2D
System.Drawing.Imaging
System.Drawing.Printing
System.Drawing.Text
System.EnterpriseServices
System.EnterpriseServices.CompensatingResourceManager
System.EnterpriseServices.Internal
System.Globalization
System.IO
System.IO.IsolatedStorage
System.Management.Instrumentation
System.Messaging
System.Messaging.Design
System.Net
System.Net.Sockets
System.Object
System.Reflection
System.Reflection.Emit
System.Resources
System.Runtime.CompilerServices
System.Runtime.InteropServices
System.Runtime.InteropServices.CustomMarshalers
System.Runtime.InteropServices.Expando
System.Runtime.Remoting
System.Runtime.Remoting.Activation
System.Runtime.Remoting.Channels
System.Runtime.Remoting.Channels.Http
System.Runtime.Remoting.Channels.Tcp
System.Runtime.Remoting.Contexts
System.Runtime.Remoting.Lifetime
System.Runtime.Remoting.Messaging
System.Runtime.Remoting.Metadata
System.Runtime.Remoting.Metadata.W3cXsd2001
System.Runtime.Remoting.MetadataServices
System.Runtime.Remoting.Proxies
System.Runtime.Remoting.Services
System.Runtime.Serialization
System.Runtime.Serialization.Formatters
System.Runtime.Serialization.Formatters.Binary
System.Runtime.Serialization.Formatters.Soap
System.Security
System.Security.Cryptography
System.Security.Cryptography.X509Certificates
System.Security.Cryptography.Xml
System.Security.Permissions
System.Security.Policy
System.Security.Principal
System.ServiceProcess
System.ServiceProcess.Design
System.Text
System.Text.Json
System.Text.RegularExpressions
System.Threading
System.Timers
System.Type
System.ValueType
System.Web
System.Web.Caching
System.Web.Configuration
System.Web.Handlers
System.Web.Hosting
System.Web.Mail
System.Web.RegularExpressions
System.Web.Security
System.Web.Services
System.Web.Services.Configuration
System.Web.Services.Description
System.Web.Services.Discovery
System.Web.Services.Protocols
System.Web.SessionState
System.Web.UI
System.Web.UI.Control
System.Web.UI.Design
System.Web.UI.Design.WebControls
System.Web.UI.HtmlControls
System.Web.UI.WebControls
System.Web.Util
System.Windows.Forms
System.Windows.Forms.ComponentModel.Com2Interop
System.Windows.Forms.Design
System.Windows.Forms.PropertyGridInternal
System.Xml
System.Xml.Schema
System.Xml.Serialization
System.Xml.XPath
System.Xml.Xsl
Transactional File System
Triton
Typkonzept
Value Type
VBPROJ
Versionierung
Virtual Execution System
Visual Basic
Visual Basic .NET 2002
Visual Basic .NET 2003
Visual Basic 2012
Visual Basic 2015
Visual Basic 8.0
Visual Basic 9.0
Visual Studio
Visual Studio .NET 2002
Visual Studio 2005
Visual Studio 2013
Visual Studio Software Development Kit
WCF Data Service
WCF Rich Internet Application Services
Web Platform Installer
Web Services Enhancements
web.config
Web-API
Whidbey
Windows CardSpace
Windows CE
Windows Compatibility Pack
Windows Compatibility Pack for .NET Core
Windows Forms
Windows Forms 2.0
Windows Framework
Windows Nano Server
Windows PowerShell 2.0
Windows PowerShell 5.0
Windows PowerShell 5.1
Windows Presentation Foundation
Windows Runtime
Windows Server 2003
Windows Server System
Windows UI Library 3
Windows Workflow Foundation
Wisej.NET
WMI+
Xamarin
XAML Browser Application
XAML Standard
XML Schemas DataTypes Support Utility
XML.NET
XmlDocument
XmlLite
XmlReader
XmlWriter
XNA Framework
XPath Data Model
XPathNavigator
YAML Ain't Markup Language