Opentopia Directory Encyclopedia Tools

DotGNU

Encyclopedia : D : DO : DOT : DotGNU



 

DotGNU a Free Software replacement of Microsoft .NET solutions for webservices and C# programs.

Main development projects

Currently, the main DotGNU software release is Portable.NET, an implementation of the Common Language Infrastructure that is able to compile and run .NET-compilable languages such as C# and VB.NET, among others, on numerous computing platforms. It is a "language agnostic" platform in the sense that many languages can use one universal set of APIs.

The Mono project from Novell, Inc. is in some sense similar to the Portable.NET project.

Framework Architecture

right

Class Library

The class library provides a comprehensive set of facilities for application development. They are primarily written in C#, but thanks to the Common Language Specification they can be used by any .NET language. The class library is structured into Namespaces, and deployed in shared libraries known as Assemblies. When we speak of the .NET framework, we are primarily referring to this class library.

It's important to note that the main goal of the DotGNU and Portable.NET projects and the Microsoft Shared Source CLI (Rotor) code base is to provide a class library that is 100% CLS (Common Language Specification) compliant. In contrast, the main goal of another open source CLI implimentation, the Mono Project is to provide 100% compatible class libraries for both the CLS specification and with the class library currently released by Microsoft for their commercial version of .NET, which itself does not currently fully comply the CLS specification published by ECMA.

Namespaces and Assemblies

Namespaces are a mechanism for logically grouping similar classes into a hierarchical structure. This prevents naming conflicts. The structure is implemented using dot-separated words, where the most common top-level namespace is System, such as System.IO and System.NET (a complete list can be found in [Portable .NET Library Documentation]). There are other top-level namespaces as well, such as Accessibility and DotGNU are examples. New namespaces can also be created prefixed with the organization.

Assemblies are the physical packaging of the class libraries. These are .dll files, just as (but not to be confused with) Win32 shared libraries. Examples of assemblies are mscorlib.dll, System.dll, System.Data.dll and Accessibility.dll. Namespaces are often distributed among several assemblies and one assembly can be composed of several files.

Common Language Infrastructure and Common Language Specification

The Common Language Infrastructure (CLI), or more commonly known as the Common Language Runtime, is implemented by the .NET executable. The runtime is used to execute compiled .NET applications. The common language infrastructure is defined by the ECMA standard ECMA-335. To run an application, you must invoke the runtime with the relevant parameters.

The Common Language Specification (CLS) is specified in chapter 6 of ECMA-335 and defines the interface to the CLI, such as conventions like the underlying types for Enum. The Portable .NET compiler generates an image that conforms to the CLS. This is the Common Intermediate Language. The Portable .NET runtime takes this image and runs it. The ECMA standard formally defines a library that conforms to the CLS as a framework.

Managed and Unmanaged Code

Within a native .NET application, all code is managed; that is, it is governed by the CLI's style of memory management and thread safety. .NET applications can use legacy code, which is referred to as unmanaged, by using the System.InterOpServices libraries to create C# bindings.

Developers

External links

  1. redirect[[Template:Portal]]

 


From Wikipedia, the Free Encyclopedia. Original article here. Support Wikipedia by contributing or donating.
All text is available under the terms of the GNU Free Documentation License See Wikipedia Copyrights for details.


Search Titles
0123456789
ABCDEFGHIJ
KLMNOPQRST
UVWXYZ?

E-mail this article to:

Personal Message: