Mono

Од Сподели wiki
Прејди на: содржини, барај
Mono 1.0 анимирано лого

Mono е слободна, мултиплатформска имплементација за .NET опкружувањето главно наменета за GNU/Linux и *nix оперативните системи. Mono е проект спонзориран од Novell. Досега има портови до: GNU/Linux, Free BSD, Solaris, Unix, Mac OS X, Windows.

Целта на овој проект е да се креира слободна, мултиплатформска .NET имплементација на повеќе .NET компатибилни алатки вклучувајќи и C# компајлер, CLR (Common Language Runtime) кои ќе ги следат ECMA стандардите.

Историја

Miguel de Icaza бил еден од првите луѓе од светот на слободен софтвер кој се заинтересирал за .NET. Тој добро ја проучил и создал C# компајлер (mcs) напишан во C# кој тогаш можел сам себе да се компајлира.

Подоцна компанијата Ximian барала лесен начин за развивање на програми под GNU/Linux. Откако тие го виделе .NET опкружувањето веднаш се заинтересирале за него и сакале да создадат своја .NET имплементација. Почнале да го прават проектот, ама меѓувремено Micrososft ја издава CLI-то од .NET опкружувањето под Shared Open Source License. Ximian бидејќи немале доволно финансиски средства и луѓе за да го продолжат проектот тие го прават Mono проектот кој ќе биде слободен проект под спонзорство на Ximian. За Ximian да направеле целосно компатибилна .NET имплементација тие го гледале кодот од CLI-то кое неодамна било издадено од Microsoft.

Подоцна Novell ја превзема одговорноста и спонзорството кон Mono проектот.

На 30 Јуни, 2004 излезе Mono 1.0.

Mono е шпански збор кој значи Мајмун. Затоа и логото на Mono проектот е горила.

Тековен статус

Најновата верзија на Mono е 1.2.3 од Февруари 2007. Оваа верзија го вклучува централното API од .NET Framework 2.0 но сеуште не е довршена. Целосна поддршка се очекува во Mono 2.2 кој е планиран да излезе при крајот на 2007 година.

Поддршка за .NET Framework 3.0 е под голем развој со име Olive но поддршка за ова .NET опкружување сеуште не е планирано

Делови на Mono

Mono се содржи од 3 дела:

  1. Централни делови
  2. Слој за Mono/Linux/GNOME развивање
  3. Слој за компатибилност со Microsoft .NET Framework

Mono архитектура

Упростена Mono архитектура

Библиотека на класи

Библиотеката на класи овозможува алатки за развивање на апликации како компајлери, парсери, библиотеки и слично, а не IDE (Interactive Development Enviroment). Главно е напишана во C# но со помош на Common Language Specification оваа библиотека може да се користи во секој .NET програмски јазик како C#, VB.Net, J#, Boo...

Оваа библиотека е испуштена во namespace-ови и поделена во класи. Сите овие namespace-ови и класи спаѓаат во една библиотека која во .NET се вика assemblies. Кога се збори за .NET ние во главно мислиме на оваа библиотека.

Namespaces и assemblies

Namespaces се еден вид на механизам за логичко подредување и групирање на класи со слични методи во .NET јазиците, притоа спречувајќи проблеми со именувањето на класи или методи. Структурата на користење на namespace-овите се врши со одвојување на имињата со точка (.). На пример: System.IO, System.Net, System.Xml...

Assemblies се спакувани класи во физичка форма. Односно, сите класи кои имаат методи кои вршат слична функција се пакуваат во .dll датотеки. Но, ова не смее да се помеша со Win32 библиотеките кои, исто така, имаат .dll завршеток. Вакви assemblies се: mscorelib.dll, System.dll, System.IO.dll, Mono.Xml.dll...

Common Language Infrastructure и Common Language Specification

Common Language Infrastructure (CLI) или позната како Common Language Runtime (CLR) се вклучени во Mono програмата која служи за пуштање на искомпајлирани .NET/Mono програми. CLI е дефинирано според ECMA-335 стандардот.

Common Language Specification (CLS) е дефинирана според член 6 од ECMA-335 стандардот и е интерфејсот за CLI-то. Преку CLS-то Mono компајлерот компајлира слика на CLS-от според CIL (Common Intermediate Language). Mono runtime-от ја зима оваа слика и ја пушта.

Менаџиран и неменаџиран код

Во обична .NET/Mono апликација целиот код е менаџиран; всушност се вклопува со менаџментот на меморија и безбедноста на нишките на CLI-то. Сите други апликации кои користат надворешни библиотеки кои не се .NET/Mono тогаш таа апликација има неменаџиран код. Во Mono многу апликации ја користат оваа можност за да направат поврзувачи (bindings) кон други надворешни бибилотеки. Оваа опција ја користи Gtk# како за пример.

Слични проекти

Gtk# - поврзувачи за GTK тулкитот

Cocoa# - поврзувачи за Mac OS X тулкитот Cocoa

Gecko# - поврзувачи за Gecko енџинот (Mozilla)

Tao - поврзувачи за графика (Open GL...)

Лиценца

Mono е двојно лиценциран од Novell со тоа што:

Сите овие лиценци се слободен софтвер и исто така е и Mono. Сите развивачи кои сакаат да помогнат кон Mono проектот мора да потпишат договор со Novell за авторски права кој ќе им даде право на Novell да го комерцијализираат Mono.

Надворешни врски

Mono

Документација за Mono

GotMono?

Гласот на Mono

Mono живо CD

Novell Inc.