Microsoft .NET
|
- For the Top-level domain (TLD), see .net (top-level domain)
Microsoft_dotNET_Logo.jpg
The .NET framework created by Microsoft is a software development platform focused on rapid application development, platform independence and network transparency. .NET is Microsoft's strategic initiative for server and desktop development for the next decade. According to Microsoft, .NET includes many technologies that are designed to facilitate rapid development of Internet and intranet applications.
.NET has brought new functionalities and tools to the API (Application programming interface). These innovations allow programmers to develop applications for both Windows and the web as well as components and services (web services). .NET provides a new object oriented API. .NET is designed to be sufficiently generic that many different high-level languages can be compiled.
In many aspects, the .NET framework is an evolutionary development of Sun's Java Virtual Machine (JVM) technology.
There is a collection of development tools specifically developed for use with the .NET platform. The principal example is Visual Studio .NET, an integrated development environment provided by Microsoft.
Contents |
History
Some technologies used in .NET were originally developed by Microsoft as their version of Java. When Microsoft decided to end their future use of Sun's Java technologies in 1998, the existing Microsoft J++ (Java) product was transformed into the beginnings of the .NET project. Code from the .NET CLR (Common Language Runtime) was said to have come from Colusa Software's OmniVM, which Microsoft acquired on March 12, 1996.
.NET as a software platform was released in 2002.
Enterprise infrastructure
.NET presents a platform-independent target for software development, with many built-in features including Internet integration and features intended to enhance security. It relies fully on software componentry and the component-oriented programming paradigm. In this respect it largely replaces the former Component Object Model (COM).
The two primary components of .NET are the Common Language Infrastructure (CLI) and the Common Language Runtime (CLR). The CLI is a set of specifications for a runtime environment, including a common type system, base class library, and a machine-independent intermediate code known as the Common Intermediate Language (CIL). The CLR provides a platform for running code that conforms to the CLI; before CIL can be executed, the CLR must translate it (typically via just-in-time compilation) into native machine code.
All CIL is self-describing through .NET metadata. The CLR checks on metadata ensure that the correct method is called. Metadata is usually generated by language compilers but developers can create their own metadata through custom attributes.
If a language implementation generates CIL, it can be hosted using the CLR and can then interact with data produced by any other .NET language. CLR is also designed to be operating system independent.
Code is housed in .NET assemblies, which for the Windows implementation means a PE (Portable Executable) DLL or EXE file. Assemblies are the .NET unit of deployment, versioning and security. The assembly can be made up of one or more files, but one of these must contain the manifest, which has the metadata for the assembly. The complete name of an assembly contains its PE file name, version number, culture and public key token; it must contain the PE name, but the others are optional. The public key token is a 64 bit hash of the public key of a public-private key pair, and is used to ensure the uniqueness of the assembly name. An assembly that has a public key token is said to have a strong name. This naming scheme means that assemblies can be uniquely identified by the CLR, and when combined with the Global Assembly Cache, allows multiple versions of the same library to exist on the same machine without danger of the wrong version being loaded.
.NET has its own security mechanism, with two general features: code access security, and validation and verification. Code access security is based on evidence that is associated with a specific assembly. Typically the evidence is the source of the assembly (whether it is installed on the local machine, or has been downloaded from the intranet or Internet). Code access security uses evidence to determine the permissions granted to the code. Other code can demand that calling code is granted a specified permission. The demand causes the CLR to perform a call stack walk: every assembly of each method in the call stack is check for the required permission and if any assembly is not granted the permission then a security exception is thrown.
When an assembly is loaded the CLR performs various tests. Two such tests are validation and verification. During validation the CLR checks that the assembly contains valid metadata and CIL, and it checks that the internal tables are correct. Verification is not so exact. The verification mechanism checks to see if the code does any thing that is 'unsafe'. The algorithm used is quite conservative and hence sometimes code that is 'safe' is not verified. Unsafe code will only be executed if the assembly has the 'skip verification' permission, which generally means code that is installed on the local machine.
With .NET you can interact with different Web services using SOAP.
Standardization
Microsoft has submitted a part of the specifications of .NET to ECMA and ISO for standardization. This is a calculated risk, but it may encourage standards-compliant implementations, to provide an ongoing bridge for non-Windows software to be converted to Microsoft .NET. One group promoting this as a standard is INETA.
.NET vs. J2EE
The CLI, the CIL, and C# have similarities to Sun's JVM and Java; hence, they are fierce competitors. Both use their own intermediate bytecode, Microsoft called it MSIL (Microsoft Intermediate Language). .NET bytecode is designed for just-in-time compilation (JITting), while Java bytecode originally was designed to be interpreted, not JITted. .NET is currently only fully available on Windows platforms, whereas Java is fully available on many platforms. However, progressive implementations (which will eventually be fully implemented) such as Mono or Rotor can be used to run .NET application on Unix-like OSes such as Linux, FreeBSD, and Mac OS X. Sun's product, J2EE, provides equivalent functionality to other Microsoft technologies such as COM+ (previously MTS) and MSMQ which are tightly integrated into the Windows operating system. However with .NET, its components make full use of these existing technologies in an abstracted manner.
More cooperation is possible with the software "IKVM", which is an implementation of the Java Virtual Machine in .NET.
.NET vs. COM
The previous software component technology endorsed by Microsoft for large-scale software systems was COM, using COM+ or MTS enhancements for distributed transactional components. While .NET may wrap COM-objects and vice versa, Microsoft called it Runtime Callable Wrapper (RCW) and COM Callable Wrapper (CCW) respectively, it has been clearly stated by Microsoft that .NET will eventually replace COM as a software component architecture. Microsoft hopes that developers writing new applications for the Win32 platform start using .NET instead of COM, with use of existing services via abstracted interfaces (e.g. transactional .NET components currently use COM+).
.NET languages
The CLI is designed to provide support for any object-oriented programming language, sharing a common object model and a large common class library. .NET supports over 40 programming languages. Many of these compilers are free (the vendors sell IDEs).
Most languages have significant adjustments to fit into the .NET Framework. The vendors have often used this as an opportunity to change other features of the languages at the same time.
Built-in languages
- C# programming language, an object-oriented language similar to 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 in 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.
Alternative implementations
While the Microsoft .NET Framework is the flagship implementation of .NET technologies, there exist other implementations.
- Microsoft Rotor, or the Shared Source Common Language Infrastructure is a shared source implementation of the .NET Framework by Microsoft. It runs on Microsoft Windows XP, FreeBSD, and Mac OS X 10.2.
- Mono is an open source implementation of the .NET runtime and development libraries. Mono is being developed by Ximian (a part of Novell, Inc.) and the open source software development community. It is quickly maturing, including support for ASP.NET, ADO.NET, and evolving support for Windows Forms libraries. It also includes a C# compiler and a VB.NET compiler is in pre-beta form. Mono includes the development of new libraries and technologies, which include:
- Gtk#: A .NET wrapper for the Gtk+ GUI toolkit.
- XSP: A web server written in C# with support for hosting ASP.NET applications.
- MonoDevelop: A port of SharpDevelop, a GPLed IDE for .NET, to Gtk# and Mono.
- Novell.Directory.Ldap class libraries: A free 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.
External links
- Microsoft's official .NET Resource (http://www.microsoft.com/net)
- Microsoft's .Net Framework class library reference (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/cpref_start.asp)
- GotDotNet (http://www.gotdotnet.com/)
- ASP.NET; Website focusing on WebForm development in .NET (http://www.asp.net/)
- WindowsForms.com; Website focusing on WinForm development in .NET (http://www.windowsforms.com/)
- Guidelines to referencing the Microsoft® .NET brand (http://www.microsoft.com/mscorp/legal/trademarks/netguide.asp)
- .NET Framework General Reference Capitalization Styles (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpgenref/html/cpconcapitalizationstyles.asp)
- .NET Monster: news, articles, and discussions for .NET developers (http://www.dotnetmonster.com/)
- .NET Rocks!, internet audio talk show for .NET developers (http://www.dotnetrocks.com/default.aspx)
- List of third-party languages (http://www.dotnetpowered.com/languages.aspx)
- Mono Project (http://www.mono-project.com/Main_Page)
- List of the available development tools and libraries for .NET (http://SharpToolbox.com)de:.NET
fr:.Net hr:.net ja:.NET pl:.NET pt:Microsoft .NET ru:Microsoft .NET zh:.NET