Many API changes. For the elaborated listing, view [http://www.gotdotnet.com/team/upgrade/apiChanges.aspx GotDotNet: API Changes between versions of the .NET Framework].
Enterprise infrastructure
.NET presents the platform-independent target for software package development, by having several built-inherent features including Internet integration & features designed to enhance security. It relies fully in software componentry and the component-oriented programming paradigm. In that respect it largely replaces a previous Component Object Model (COM).
Them primary components of .NET come a Common Language Infrastructure (CLI) and a Common Language Runtime (CLR).
a CLI occurs as placed of specifications for the runtime environment, including the most common nature & severity rules, base class library, and a machine-independent medium code called the Common Intermediate Language (CIL). a CLR will bring a platform for going code that conforms to the CLI; prior to CIL may be executed, the CLR must translate it (occasionally via just-in-time compilation) into native machine code.
Tons CIL is self-describing across .NET metadata. A CLR checks in metadata to assure that the correct method is known as. Metadata is normally generated by language compilers however developers could produce their have metadata across custom-made attributes.
In case the language implementation generates CIL, it may be hosted using the CLR & may so interact by using information by any more .Nett language. CLR is likewise designed to become operating system independent.
Code is housed around .NET assemblies, which for the Windows implementation means a Portable Executable (PE) DLL or EXE file. Assemblies come a .Nett unit of deployment, versioning & security. A assembly may be processed higher of of these or even additional files, however one of these must contain a manifest, which has a metadata for the assembly. A complete title of an assembly contains its PE computer filetitle, version total, culture & public key token; it must contain a PE name, however a others come optional. a public key token occurs as 64 bit hash of the public key of a public-personal key pair, & is utilized to assure the singularity of the assembly title. An assembly that has the public key token is said to have a hard title. This appellative scheme means that assemblies may be unambiguously identified per CLR, & while combined using a Global Assembly Cache, allows multiple versions of the equivalent library to survive on the same machine while forgoing danger of the incorrectly version existence loaded.
.NET has its have security mechanism, by owning deuce general features: code access security, & validation and verification. Code access security is according to grounds to believe that is associated using the specific assembly. Usually a grounds to believe is a source of the assembly (whether it is installed on the local machine, or even even has been downloaded from either the intranet or Internet). Code access security utilizes grounds to believe to determine a permissions granted to the code. More code potty require that vocation code is granted the specified permission. the require drives a CLR to perform a call for for fold hike: both assembly of each method in the call fold is prevent for the involved permission & whenever any assembly is non granted the permission so a security exception is thrown.
Whilst an assembly is loaded a CLR performs various tests. Both such tests come validation & verification. In a period of validation a CLR checks that a assembly contains valid metadata & CIL, & it checks that the internal tables come right. Verification is non and so accurate. A verification mechanism checks to view in case a code does any tool that is 'insecure'. A algorithmic rule utilized is quite conservative & hence for instance code that is 'safe' is non verified. Insecure code might exclusively become executed whenever a assembly has a 'ignore verification' permission, which typically means code that is installed on the local machine.
By owning .NET we could interact by having different Web services using SOAP.
Standardization and Licensing
Around August, 2000, Microsoft, Hewlett-Packard, and Intel worked to standardize CLI and a C# programming language. By December, 2001, each were sanctioned ECMA standards ([http://www.ecma-international.org/publications/standards/Ecma-335.htm ECMA 335] and [http://www.ecma-international.org/publications/standards/Ecma-334.htm ECMA 334]). ISO followed in April, 2003 ([http://www.iso.org/iso/en/CatalogueDetailPage.CatalogueDetail?CSNUMBER=36769 ISO/IEC 23271] & [http://www.iso.org/iso/en/CatalogueDetailPage.CatalogueDetail?CSNUMBER=36768 ISO/IEC 23270]).
This occurs as deliberate chance, however it might encourage standards-compliant implementations, to provide an on-going bridge for non-Windows package to exist as converted to Microsoft .NET. 1 class action promoting this as a standard is the International .NET Association (INETA).
When Microsoft & their partners hang on to patents for CLI & C#, ECMA & ISO takes that tons patents necessity to implementation exist as mass produced available under "reasonable and non-discriminatory (RAND) terms." a corporations stand agreed, instead, to produce the patents available under "royalty-free and otherwise RAND terms."
.NET vs. Java EE
A CLI, a CIL, & C# keep around similarities to Sun's JVM & Java; hence, it is fierce contender. Each utilize their have average byte-code, Microsoft calling theirs Common Intermediate Language (CIL). CIL is designed for just-in-time compilation (JITting), while Java bytecode originally was designed to become interpreted, non JITted. .NET is presently merely fully available in Windows platforms, whereas Java is fully available in numerous platforms. Even so, implementations presently within progress like Mono or Shared source CLI can be used to begin a bit of .Nett applications in Unix-prefer operating systems like Linux, FreeBSD, and Mac OS X. Sun's product, J2EE, provides equivalent functionality to more Microsoft technologies like COM+ (previously MTS) and MSMQ which are tightly integrated into the Windows operating models.
Supplementary cooperation is possible sustaining a software system "IKVM", which is an implementation of the Java Virtual Machine in .NET.
Java has an guide implementation of remote procedure calls and network transparency called remote method invocation (RMI). RMI inside its "RMI over IIOP" (RMI-IIOP) variant is also compatible by owning CORBA.
.NET vs. COM
A former software component technology endorsed by Microsoft for even large-shell software package was COM, utilizing COM+ or MTS sweetening for distributed transactional components. Patch .NET could diaper COM-objects & the other way around, Microsoft known as it Runtime Callable Wrapper (RCW) & COM Callable Wrapper (CCW) severally, it has been clearly stated by Microsoft that .NET may sooner or later replenish COM as a package component architecture. Microsoft hopes that developers writing freshly applications for the Win32 platform begin applying .NET instead of COM, using utilize of existent services via abstracted interfaces (e.g. transactional .Nett components presently have COM+).
.Net Remoting & XML WebServices
A .Nett remoting infrastructure is an abstract approach to interprocess communication.
Microsoft® .Nett Remoting will bring the rich & extensile framework for objects sleep inside different AppDomains, inside different processes, & in different machines to communicate sustaining both more seamlessly. .Nett Remoting offers the mighty eventually elementary programming model & runtime trend lines for making these interactions transparent.
XML Web services come a fundamental building jams in the move to distributed computing using your internet browser. Open standards & a center communication & collaboration among humans & applications keep close at hand created an environment in which XML Web services come becoming a platform for application integration. Applications come constructed utilizing multiple XML Web services from either various sources that act together no matter of in which it reside or even how else it were implemented.
.NET languages
A CLI is designed to provide trend lines for any object-oriented programming language, sharing the most most common object model & a big common class library. .NET supports assibilate Forty programing language. Numbers of one compilers come loose (a vender sell IDEs).
Virtually all languages stand important adjustments to healthy into a .Nett Framework. A vender use at times typically utilized this as an chance to vary more features of a languages at the equivalent instance.
Built-in languages
C#, an object-oriented language similar to C++ and Sun's Java
JScript .NET, a compiled version of Microsoft's JScript
J#, a Java and J++ (the Microsoft variant of Java) .NET transitional language
Managed C++, a variant of the C++ programming language for the .NET platform
Visual Basic .NET, an improved, object-oriented, multi-threaded version of the classic Visual Basic programming language
Some available third-party languages
Ada, see A#.
APL
Boo, based on Python
COBOL
Component Pascal (Component Pascal is closer to Oberon than to Pascal)
Delphi 8 and Delphi 2005
Eiffel
F#, a member of the ML programming language family.
Forth
FORTRAN
IKVM, Java
IronPython, Python
Lexico, a didactic inside Spanish object-oriented language
Lisp
Mercury
Mondrian functional language designed to provide an easy way of scripting components
Nemerle functional/imperative hybrid language
Oberon
Perl
RPG
Smalltalk
ASP.NET & ADO.NET
ASP.NET, an update to the classic Active Server Pages (ASP) web programming technology, implements .NET and has a .NET class library, but is not itself a language as it may be written in any .NET language.
ADO.NET is a new version of ActiveX Data Objects (ADO) for the .NET framework. Extensible Markup Language (XML) plays an important role when procedures come provided to serialize information objects as XML data.
Alternative implementations
Piece a Microsoft .Nett Framework is the flagship implementation of .Nett technologies, there survive more implementations.
Microsoft's Shared Source Common Language Infrastructure is a shared source implementation of the .NET Framework by Microsoft. It diarrhea in Microsoft Windows XP, FreeBSD, and Mac OS X 10.2.
Mono is an open source implementation of the .NET runtime & development libraries. Infectious mononucleosis is existence developed by Ximian (a a share of Novell, Inc.) and the open source software development community. These are quickly maturing, including trend lines for ASP.NET, Bustle.NET, & evolving trend lines for Windows Forms libraries. It too includes the C# compiler & the VB.Nett compiler is around pre-beta form. Infectious mononucleosis includes a development of fresh libraries & technologies, which include:
Gtk#: A .Nett wrapper for the Gtk+ GUI toolkit.
XSP: A web server written inside C# by using trend lines for hosting ASP.Nett applications.
MonoDevelop: A port of SharpDevelop, a GPLed IDE for .NET, to Gtk# and Infectious mononucleosis.
Novell.Directory.Ldap class libraries: The loose implementation of Lightweight Directory Access Protocol (LDAP) for .NET.
SerialPortNet: A serial port library for .Net & Mono implementing .NET 2.0 specifications.
DotGNU Portable.NET is less mature than Mono due to the fact that Portable.NET was not written initially using Microsoft's development framework.