1 / 62

MONO – свободна имплементация на .NET Framework

Програмиране за .NET Framework. http://www.nakov.com/dotnet-project/. MONO – свободна имплементация на .NET Framework. Антон Андреев Факултет по Математика и Информатика на СУ "Св. Климент Охридски". За презентацията. Целта на настоящата презентация е ви запознае с инициативата MONO

shira
Download Presentation

MONO – свободна имплементация на .NET Framework

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Програмиране за .NET Framework http://www.nakov.com/dotnet-project/ MONO – свободна имплементация на .NET Framework Антон Андреев Факултет по Математика и Информатика на СУ "Св. Климент Охридски"

  2. За презентацията • Целта на настоящата презентация е ви запознае с инициативата MONO • Необходими знания: • Елементарни познания по Линукс • Базови познания за езика C# • За настоящата изготвянето на презентация е използван свободен софтуер • OpenOffice.org

  3. Съдържание • Значение на не Microsoft имплементациите на .NET • Проектът Mono • Статус на проекта • Поддържани операционни системи • Инсталиране и конфигуриране на Mono под Linux • Компилаторът на C# • Виртуалната машина • Графични интерфейси в Mono • Windows Forms

  4. Съдържание (2) • Графични интерфейси в Mono • GTK# • Gnome# • Cococa# за MAC OS • Glade# • Документацията Monodoc • Среди за разработка • MonoDevelop • Eclipse • ADO.NET под Mono

  5. Съдържание (3) • Java запод .NET CLR • ASP.NETпод Mono • Модулът mod_mono • Сървърът XSP • Mono класовев Mono • Mono във ФМИ на СУ • Mono софтуер • Mono – полезни връзки

  6. Не Microsoft имплементациите на .NET • Изцяло с отворен код • Всеки може да участва в разработката • Лесно прехвърляне на друга хардуерна платформа или операционна система • Мощта на .NET може да направи други ОС като Linux и BSD по-привлекателни за разработчиците (стига с тези с C / C++ :) • Намалява се монопола на Microsoft • Появява се конкуренция • В следствие се подобрява на качеството на продуктите

  7. Имплементации на .NET • Microsoft .NET Framework • Сайт: msdn.microsoft.com/netframework/ • DotGNU Portable.NET • Сайт: http://www.dotgnu.org/ • Виртуална машина, assembler, disassembler • Има компилатори за C и C# • Java и VB.NET – в процес на разработка • Работи се по цялостно ре-имплементиране на Windows Forms • Възможно e GNU да прибавят към gcc и компилатор за C#, който генерира native код

  8. Проектът Mono • www.go-mono.com • Зад проекта Mono стоят Ximian и Novell • Лицензионни проблеми с Microsoft

  9. Статус на проекта Mono • Има версия 1.0 и тя ре-имплементира .NET Framework 1.1 • Поддържа се C# компилатор • VB.NET е в напреднал стадии, но все още е нестабилен • Настоящата версия е 1.05 stable и 1.1.3 unstable • До средата на 2005 ще излезе Mono 1.2. Ще включва следните новости: • Поддръжка на Generics • Обновен на C# компилатор

  10. Статус на проекта Mono • Нова версия на основните библиотеки • ASP.NET 2.0 подобрения • Remoting подобрения от Whidbey • System.XML подобрения • Поддръжка за достъп до конзолата и серийните портове • Нови компилатори: VB.NET и JScript поддръжка • Имплементации на WSE1/WSE2 • System.Windows.Forms ще има по-солидна поддръжка • Mono 2.0 е планирано за 2006 • Ще поддържа напълно .NET Framework 2.0

  11. Поддържани ОС • Достъпни са компилирани пакети за: • RedHat Linux 9.0 • SuSe Linux • Fedora Linux • Mac OS X • Microsoft Windows • За всички останали трябва да се прекомпилира изходният код • Mono се включва и port системите на повечето BSD-базирани ОС • Някои ОС ще включват Mono като част от своите дистрибуции (напр. Gnoppix Linux)

  12. Инсталиране и конфигуриране на Mono под Linux • Вече има графичен инсталатор за Linux • Mono се инсталира бързо и лесно

  13. Инсталиране и конфигуриране на Mono под Linux • Инсталацията под Windows е лесна: • Представлява обикновен Windows Setup • Включва GTK# и Web-сървър за ASP.NET • Може да работи и под cygwin (cygwin е емулация на Linux за Windows) • Под cygwin може да се прекомпилира сорс-кодът на Mono • Под Fedora Linux може да се използва yum repository • Използва се командата yum • Избягва се “Dependency hell”

  14. Инсталиране и конфигуриране на Mono под Linux • Има неофициални Debian Mono пакети • Сами решавате дали да предпочете тях или прекомпилация • Компилацията би трябвало да протича без проблем • Извършва по стандартния начин: • Има и CVS, от който можете да изтеглите текущата версия ./configure && make && make install

  15. Компилаторът на Mono за C# • Самият компилатор е писан на C# и може да се самопрекомпилира • Поддържа стандарта ECMA #334 за C# 1.0 • Работи се по компилатор за C# 2.0 • Как се използва: #mcs proba.cs proba.exe #mcs –-help #man mcs

  16. Виртуалната машина на Mono • 32-битов JIT (Just-In-Time compiler) • Поддържа: Linux/x86, Linux/PPC, Solaris/SPARC S390 и MacOS X • 64-битов JIT • Поддържа: Linux/x86-64, Solaris/SPARCv9 • Има го само в Mono 1.1 • Интерпретаторът mint работи на следните платформи: • Linux/86, Linux/PPC, S390, StrongARM, SPARC, HPPA, SPARC v9

  17. Виртуалната машинана Mono • --optimize – активираоптимизациите • --aot • Ahead-of-time – предварително компилиране (като ngen в MS .NET) • Цялата програма минава през JIT и тогава се стартира • Има спор кое е по-бързо: managed или native код • Има GAC кеш, Remoting и планове за поддръжка на COM и XPCOM

  18. Графични интерфейси (GUI) • Desktop приложенията не могат без тях • Windows Forms не се поддържа напълно • Поддържат се други интерфейси • Целта им е: • Всяко графично приложение да изглежда по съответният за всяка една ОС начин • Това го няма в Java AWT/Swing

  19. Windows Formsпод Mono • В началото се работеше по модела: wine + System.Drawing (wine изпълнява Windows приложения под Linux) • В момента се работи по native имплементация без wine • 100% поддръжка на Windows Forms се очаква в края на 2005 • Има забавяне в разработката поради преминаването към втория модел • Трябва да се инсталират: libgdiplus и графичната библиотека Cairo

  20. GTK# • Под Linux има стандартна библиотека (API) за изграждане на графичен потребителски интерфейс – GTK • GTK може да се ползва от Mono • GTK# е C# обвивката на GTK • С GTK# можете да разработвате графични приложения, ползващи GTK • GTK има имплементация и за Windows (напр. GAIM за Windows)

  21. GNOME# • GNOME# са класове за работа с GNOME API-то • По-удобни от GTK# • Не са портнати за Windows • Приложенията с графичен интерфейс, писани за Mono, са трудно преносими • Често се налага търсене на библиотеки • Трудно е за обикновения потребител • В бъдеще такива проблеми ще намаляват

  22. COCOA# • Библиотека с класове за native look and fell под MacOS X

  23. GLADE# • Библиотека за GUI за Mono • Разделя графичния интерфейс от презентационната логика • Графичният интерфейс се описва в отделен XML файл, а не в C# кода

  24. GLADE – примерен XML файл <?xml version="1.0" standalone="no"?> <!--*- mode: xml -*--> <!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd"> <glade-interface> <widget class="GtkWindow" id="window1"> <property name="visible">True</property> <property name="title" translatable="yes">win2</property> <property name="type">GTK_WINDOW_TOPLEVEL</property> ... <child> <widget class="GtkButton" id="button1"> <property name="border_width">10</property> <property name="visible">True</property> <property name="label">button1</property> ... </widget> </child> </widget> </glade-interface>

  25. GLADE • Примерът задава една форма, един бутон и параметрите им • Подобен начин за създаване на графични интерфейси се очаква и в Avalon на Microsoft в следващата версия на Windows – Longhorn • Позволява се динамично зареждане • Можем да променяме формите без прекомпилация и програмистки умения • Различни платформи/програмни езици могат да използват един и същ XML файл за генериране на графичен интерфейс

  26. Glade Interface Designer • Ползва се стандартният подход: • Лента с контроли • Форма със свойствата на контролата • Дизайнерът автоматично генерира XML файл за създадената форма

  27. Съответстващият C# код using System; using Gtk; using Glade; using GtkSharp; public class GladeTest { [Glade.Widget] Button button1; public GladeTest(string[] args) { Application.Init(); Glade.XML gxml = new Glade.XML( "file.glade", "window2", null); gxml.Autoconnect(this); button1.BorderWidth = 10; Application.Run(); }(примерът продължава)

  28. Съответстващият C# код /* Connect the Signals defined in Glade */ public void OnWindowDeleteEvent(object o, DeleteEventArgs args) { Application.Quit(); args.RetVal = true; } public void OnButton1Clicked(System.Object obj, EventArgs e) { Console.WriteLine("Button 1 clicked"); } public static void Main(string[] args) { new GladeTest(args); } }

  29. Документацията Monodoc • Monodoc e браузър задокументацията на Mono и включва: • Описание на езика C# • Mono handbook – наръчник на Mono разработчика • Документация за средите за разработка • GTK# и GNOME# • Самоучители • Прилича на браузърa на MSDN Library

  30. Средата MonoDevelop • Сайт: www.monodevelop.com • Monodevelop e средата за разработка, която се пише от програмистите на Mono • Представлява порт на SharpDevelop (което е среда за разработка за .NET под Windows) • Настоящата версия е 0.5.1 • Включва следните възможности: • Вградена документация и дебъгер • Поддръжка на Java, NEMERALE (друг език за .NET) и HTML • Отваря Visual Studio .NET проекти • Все още има бъгове

  31. Средата за разработка Eclipse • Eclipse e свободна среда за разработка (IDE) • Разработен е основно от IBM, с отворен код • Писан е на Java • Ползва се главно от Java разработчици • Eclipse може да използва plugins • Един plugin добавя някаква функционалност: • поддръжка на даден програмен език • поддържане на шаблони за проекти • code autocomplete • много други • Eclipse има plugin за C# (малко стар)

  32. ADO.NET под Mono • Mono поддържа следните ADO.NET Data Providers: • DB – MySQL • DB – IBM DB2 • DB – Firebird / Interbase • DB – MS SQL Server • DB – ODBC • DB – OLE DB • DB – Oracle • DB – Sybase • DB – SQL Lite • DB – PostgreSQL

  33. Mono и ADO.NET – пример • Използваме MySql Data Provider "ByteFX" • Този provider го има и под Windows (http://www.bytefx.com/) • Създаваме таблица с PHPMyAdmin на сървъра debian.fmi.uni-sofia.bg: • Създаваме просто приложение за достъп до таблицата • C# кода е показан на следващия слайд (DatabaseDemo.cs) CREATE TABLE employee( firstname varchar(32), lastname varchar(32));

  34. Mono и ADO.NET – пример using System; using System.Data; using ByteFX.Data.MySqlClient; public class DatabaseDemo { const string CONNECTION_STRING = "Server=debian.fmi.uni-sofia.bg;" + "User ID=toncho;" + "Password=T0n40;" + "Database=toncho;"; public static void Main(string[] args) { IDbConnection dbCon = new MySqlConnection(CONNECTION_STRING); dbCon.Open(); using (dbCon) {(примерът продължава)

  35. Mono и ADO.NET – пример IDbCommand dbCmd = dbCon.CreateCommand(); dbCmd.CommandText = "SELECT * FROM employee"; IDataReader reader = dbCmd.ExecuteReader(); using (reader) { while(reader.Read()) { string firstName = (string) reader["firstname"]; string lastName = (string) reader["lastname"]; Console.WriteLine("Name: {0} {1}", firstName, lastName); } } } } }

  36. Java под .NET CLR • Сайт на проекта: www.ikvm.net • Има 2 основни цели: • Java класове да могат да се изпълняват под виртуалната машина на Mono • Java класове/програми да бъдат транслирани от Java byte код до .NET IL • Огромната база от код написан на Java ще може да бъде преизползван под .NET • Пример: • Eclipse (Java програма) работи под Mono • ОС е Windows • Mono работи под cygwin

  37. ASP.NET под Mono • Има два начина за поддръжка на ASP.NET • mod_mono – модул към Apache • Apache използва модулна архитектура и има модули за Perl и PHP например • http://www.gotmono.net/documentation/mod-mono-howto.html • XSP – Web сървър писан на C# • Обслужва ASP.NET заявките • Няма нужда от Apache • Производителността на XSP вече е добра • Поддържат се доста ASP.NET контроли, но още има какво да се довършва • Прегледайте документация и форуми

  38. Модулът mod_mono • След като се инсталира mod_nono в httpd.conf се правят следните промени: • Рестартира се Apache и за тест се ползва следната страница: http://your-server/demo/index.aspx • LoadModule mono_module modules/mod_mono.so • ... • Alias /demo "/usr/share/doc/xsp/test" MonoApplications "/demo:/usr/share/doc/xsp/test" • ... • <Directory /usr/share/doc/xsp/test> • SetHandler mono • <IfModule mod_dir.c> DirectoryIndex index.aspx </IfModule> • </Directory>

  39. Допълнителни класове в Mono • Cairo • Графична библиотека • Commons.Xml • Commons.Xml.Relaxng • Commons.Xml.Relaxng.Rnc • Mono.Math • BigInteger • Mono.Math.Prime • Прости числа • Mono.Math.Prime.Generator • Генериране на прости числа

  40. Допълнителни класове в Mono • Mono.Posix • Системни извиквания • Mono.Security • Mono.Security.Authenticode • Mono.Security.Cryptography • MD4 managed, MD5 unmanaged, RSA managed, SHA1 unmanaged • Mono.Security.Protocol.Ntlm • Mono.Security.Protocol.Tls • Работа със SSL (Secure Socket Layer)

More Related