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

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

  • Upload
    shira

  • View
    52

  • Download
    0

Embed Size (px)

DESCRIPTION

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

Citation preview

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

MONO – MONO – свободна свободна

имплементация имплементация на .NET на .NET

FrameworkFramework

Програмиране за .NET FrameworkПрограмиране за .NET Framework

http://www.nakov.com/dotnet-project/http://www.nakov.com/dotnet-project/

Антон АндреевАнтон АндреевФакултет по Математика и ИнформатикаФакултет по Математика и Информатикана СУ "Св. Климент Охридски"на СУ "Св. Климент Охридски"

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

За презентациятаЗа презентацията Целта на настоящата презентация е Целта на настоящата презентация е

ви запознае с инициативата MONOви запознае с инициативата MONO Необходими знания:Необходими знания:

Елементарни познания по ЛинуксЕлементарни познания по Линукс Базови познания за езика C#Базови познания за езика C#

За настоящата изготвянето на За настоящата изготвянето на презентация е използван свободен презентация е използван свободен софтуерсофтуер OpenOffice.orgOpenOffice.org

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

СъдържаниеСъдържание Значение на не Microsoft Значение на не Microsoft

имплементациите на .NETимплементациите на .NET Проектът Проектът MonoMono

Статус на проектаСтатус на проекта Поддържани операционни системиПоддържани операционни системи Инсталиране и конфигуриране на Mono Инсталиране и конфигуриране на Mono

под Linuxпод Linux Компилаторът на C#Компилаторът на C# Виртуалната машинаВиртуалната машина

Графични интерфейси в MГрафични интерфейси в Monoono Windows FormsWindows Forms

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

Съдържание (2)Съдържание (2) Графични интерфейси в MonoГрафични интерфейси в Mono

GTK#GTK# Gnome#Gnome# Cococa# за MAC OSCococa# за MAC OS Glade#Glade#

Документацията MonodocДокументацията Monodoc Среди за разработкаСреди за разработка

MonoDevelopMonoDevelop EclipseEclipse

ADO.NET под MonoADO.NET под Mono

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

Съдържание (3)Съдържание (3) Java заJava за под .NET под .NET CLRCLR ASP.NETASP.NET под под MonoMono

Модулът mod_monoМодулът mod_mono Сървърът Сървърът XSPXSP

Mono класовеMono класове в в MonoMono Mono във ФМИ на СУMono във ФМИ на СУ Mono софтуерMono софтуер Mono – полезни връзкиMono – полезни връзки

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

Не Microsoft имплементациите Не Microsoft имплементациите на .NETна .NET Изцяло с отворен кодИзцяло с отворен код Всеки може да участва в разработкатаВсеки може да участва в разработката Лесно прехвърляне на друга хардуерна Лесно прехвърляне на друга хардуерна

платформа или операционна системаплатформа или операционна система Мощта на .NET може да направи други ОС Мощта на .NET може да направи други ОС

като Linux и BSD по-привлекателни за като Linux и BSD по-привлекателни за разработчиците разработчиците (стига с тези с (стига с тези с C / C++C / C++ :) :)

Намалява се монопола на MicrosoftНамалява се монопола на Microsoft Появява се конкуренцияПоявява се конкуренция В следствие се подобрява на качеството В следствие се подобрява на качеството

на продуктитена продуктите

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

Имплементации на .NETИмплементации на .NET Microsoft .NET FrameworkMicrosoft .NET Framework

Сайт: msdn.microsoft.com/netframework/Сайт: msdn.microsoft.com/netframework/ DotGNU Portable.NETDotGNU Portable.NET

Сайт: http://www.dotgnu.org/Сайт: http://www.dotgnu.org/ Виртуална машина, assembler, disassemblerВиртуална машина, assembler, disassembler Има компилатори за C и C#Има компилатори за C и C# Java и VB.NET – в процес на разработкаJava и VB.NET – в процес на разработка Работи се по цялостно ре-имплементиране Работи се по цялостно ре-имплементиране

на Windows Formsна Windows Forms Възможно e GNU да прибавят към gcc и Възможно e GNU да прибавят към gcc и

компилатор за C#, който генерира native кодкомпилатор за C#, който генерира native код

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

Проектът MonoПроектът Mono www.go-mono.comwww.go-mono.com

Зад проекта Mono стоят Зад проекта Mono стоят Ximian и Novell Ximian и Novell

Лицензионни проблеми Лицензионни проблеми с Microsoftс Microsoft

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

Статус на проекта MonoСтатус на проекта Mono Има версия 1.0 и тя реИма версия 1.0 и тя ре--имплементира .NET имплементира .NET

Framework 1.1Framework 1.1 Поддържа се C# компилаторПоддържа се C# компилатор VB.NET е в напреднал стадии, но все още е VB.NET е в напреднал стадии, но все още е

нестабиленнестабилен Настоящата версия е 1.05 stable и 1.1.3 Настоящата версия е 1.05 stable и 1.1.3

unstableunstable До средата на 2005 ще излезе Mono 1.2. Ще До средата на 2005 ще излезе Mono 1.2. Ще

включва следните новости:включва следните новости: Поддръжка на GenericsПоддръжка на Generics Обновен на C# компилаторОбновен на C# компилатор

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

Нова версия на основните библиотекиНова версия на основните библиотеки ASP.NET 2.0 подобренияASP.NET 2.0 подобрения Remoting подобрения от WhidbeyRemoting подобрения от Whidbey System.XML подобренияSystem.XML подобрения Поддръжка за достъп до конзолата и Поддръжка за достъп до конзолата и

серийните портовесерийните портове Нови компилатори: VB.NET и JScript Нови компилатори: VB.NET и JScript

поддръжкаподдръжка Имплементации на WSE1/WSE2Имплементации на WSE1/WSE2 System.Windows.Forms ще има по-солидна System.Windows.Forms ще има по-солидна

поддръжкаподдръжка Mono 2.0 е планирано за 2006Mono 2.0 е планирано за 2006

Ще поддържа напълно .NET Framework 2.0Ще поддържа напълно .NET Framework 2.0

Статус на проекта MonoСтатус на проекта Mono

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

Поддържани ОСПоддържани ОС Достъпни са компилирани пакети за:Достъпни са компилирани пакети за:

RedHat Linux 9.0RedHat Linux 9.0 SuSe LinuxSuSe Linux Fedora LinuxFedora Linux Mac OS XMac OS X Microsoft WindowsMicrosoft Windows

За всички останали трябва да се За всички останали трябва да се прекомпилира изходният кодпрекомпилира изходният код

Mono се включва и port системите на Mono се включва и port системите на повечето BSD-базирани ОСповечето BSD-базирани ОС

Някои ОС ще включват Mono като част от Някои ОС ще включват Mono като част от своите дистрибуции (напр. Gnoppix Linux)своите дистрибуции (напр. Gnoppix Linux)

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

Вече има графичен инсталатор за Вече има графичен инсталатор за LinuxLinux

Mono се инсталира бързо и лесноMono се инсталира бързо и лесно

Инсталиране и конфигуриране на Инсталиране и конфигуриране на Mono под Linux Mono под Linux

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

Инсталиране и конфигуриране на Инсталиране и конфигуриране на Mono под Linux Mono под Linux Инсталацията под Windows е лесна:Инсталацията под Windows е лесна:

Представлява обикновен Windows SetupПредставлява обикновен Windows Setup Включва GTK# и WebВключва GTK# и Web--сървър за ASP.NETсървър за ASP.NET Може да работи и под Може да работи и под cygwincygwin ( (cygwincygwin е е

емулация на Linux за Windows)емулация на Linux за Windows) Под Под cygwincygwin може да се прекомпилира може да се прекомпилира

сорс-кодът на Mono сорс-кодът на Mono

Под Fedora Linux може да се използва Под Fedora Linux може да се използва yum repositoryyum repository Използва се командата Използва се командата yumyum Избягва се “Dependency hell”Избягва се “Dependency hell”

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

Има неофициални Debian Mono пакетиИма неофициални Debian Mono пакети Сами решавате дали да предпочете тях или Сами решавате дали да предпочете тях или

прекомпилацияпрекомпилация Компилацията би трябвало да протича без Компилацията би трябвало да протича без

проблемпроблем Извършва по стандартния начин:Извършва по стандартния начин:

Има и CVS, от който можете да Има и CVS, от който можете да изтеглите текущата версияизтеглите текущата версия

./configure && make && make install./configure && make && make install

Инсталиране и конфигуриране на Инсталиране и конфигуриране на Mono под Linux Mono под Linux

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

Компилаторът на Mono за C#Компилаторът на Mono за C# Самият компилатор е писан на C# и може Самият компилатор е писан на C# и може

да се самопрекомпилирада се самопрекомпилира Поддържа стандарта ECMA #334 за C# 1.0Поддържа стандарта ECMA #334 за C# 1.0

Работи се по компилатор за C# 2.0Работи се по компилатор за C# 2.0 Как се използва:Как се използва:

#mcs proba.cs proba.exe#mcs proba.cs proba.exe#mcs –-help#mcs –-help#man mcs#man mcs

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

Виртуалната машина на MonoВиртуалната машина на Mono 32-битов JIT (Just-In-Time compiler)32-битов JIT (Just-In-Time compiler)

Поддържа: Linux/Поддържа: Linux/xx86, Linux/PPC, 86, Linux/PPC, Solaris/SPARC S390 и MacOS XSolaris/SPARC S390 и MacOS X

64-битов JIT64-битов JIT Поддържа: Linux/x86-64, Поддържа: Linux/x86-64,

Solaris/SPARCv9Solaris/SPARCv9 Има го само в Mono 1.1Има го само в Mono 1.1

Интерпретаторът Интерпретаторът mintmint работи на следните работи на следните платформи:платформи: Linux/86, Linux/PPC, S390, StrongARM, Linux/86, Linux/PPC, S390, StrongARM,

SPARC, HPPA, SPARC v9SPARC, HPPA, SPARC v9

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

Виртуалната машинаВиртуалната машина на на MonoMono --optimize--optimize – активира – активира

оптимизациитеоптимизациите --aot--aot

Ahead-of-time – предварително Ahead-of-time – предварително компилиране (като компилиране (като ngenngen в MS .NET) в MS .NET)

Цялата програма минава през JIT и Цялата програма минава през JIT и тогава се стартиратогава се стартира

Има спор кое е по-бързо: managed Има спор кое е по-бързо: managed или native кодили native код

Има GAC кеш, Remoting и планове Има GAC кеш, Remoting и планове за поддръжка на COM и XPCOMза поддръжка на COM и XPCOM

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

Графични интерфейсиГрафични интерфейси (GUI) (GUI) DesktopDesktop приложенията не могат без тях приложенията не могат без тях Windows Forms не се поддържа Windows Forms не се поддържа

напълнонапълно Поддържат се други интерфейсиПоддържат се други интерфейси Целта им е:Целта им е:

Всяко графично приложение да Всяко графично приложение да изглежда по съответният за всяка една изглежда по съответният за всяка една ОС начинОС начин

Това го няма в JavaТова го няма в Java AWT/SwingAWT/Swing

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

Windows FormsWindows Forms под под MonoMono В началото се работеше по модела: В началото се работеше по модела: winewine

+ + System.DrawingSystem.Drawing ( (winewine изпълнява изпълнява Windows приложения под Linux) Windows приложения под Linux)

В момента се работи по native В момента се работи по native имплементация без имплементация без winewine 100% поддръжка на Windows Forms се 100% поддръжка на Windows Forms се

очаква в края на 2005очаква в края на 2005 Има забавяне в разработката поради Има забавяне в разработката поради

преминаването към втория моделпреминаването към втория модел Трябва да се инсталират: Трябва да се инсталират: libgdipluslibgdiplus и и

графичната библиотека графичната библиотека CairoCairo

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

GTK#GTK# Под Linux има стандартна библиотека Под Linux има стандартна библиотека

(API) за изграждане на графичен (API) за изграждане на графичен потребителски интерфейс – GTKпотребителски интерфейс – GTK

GTK може да се ползва от MonoGTK може да се ползва от Mono GTK# е C# обвивката на GTKGTK# е C# обвивката на GTK С GTK# можете да разработвате С GTK# можете да разработвате

графични приложения, ползващи GTK графични приложения, ползващи GTK

GTK има имплементация иGTK има имплементация и за Windows (напр. за Windows (напр. GAIMGAIM за за Windows) Windows)

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

GNOME#GNOME# GNOME# са класове за работа с GNOME GNOME# са класове за работа с GNOME

API-тоAPI-то По-удобни от GTK#По-удобни от GTK# Не са портнати за WindowsНе са портнати за Windows

Приложенията с графичен интерфейс, Приложенията с графичен интерфейс, писани за Mono, са трудно преносимиписани за Mono, са трудно преносими Често се налага търсене на библиотекиЧесто се налага търсене на библиотеки Трудно е за обикновенияТрудно е за обикновения

потребителпотребител В бъдеще такива проблемиВ бъдеще такива проблеми

ще намаляватще намаляват

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

COCOA#COCOA# Библиотека с класове за native lookБиблиотека с класове за native look

and felland fell под MacOS X под MacOS X

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

GLADE#GLADE# Библиотека за Библиотека за GUIGUI за за MonoMono Разделя графичния интерфейс от Разделя графичния интерфейс от

презентационната логикапрезентационната логика Графичният интерфейс се описва в Графичният интерфейс се описва в

отделен XML файл, а не в отделен XML файл, а не в C#C# кода кода

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

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

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

GLADEGLADE Примерът задава една форма, един бутон Примерът задава една форма, един бутон

и параметрите ими параметрите им Подобен начин за създаване на графични Подобен начин за създаване на графични

интерфейси се очаква и в Avalon на интерфейси се очаква и в Avalon на Microsoft в следващата версия на Windows Microsoft в следващата версия на Windows – Longhorn– Longhorn

Позволява се динамично зарежданеПозволява се динамично зареждане Можем да променяме формите без Можем да променяме формите без

прекомпилация и програмистки уменияпрекомпилация и програмистки умения Различни платформи/програмни езици Различни платформи/програмни езици

могат да използват един и същ XML файл могат да използват един и същ XML файл за генериране на графичен интерфейсза генериране на графичен интерфейс

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

Glade Interface DesignerGlade Interface Designer Ползва се стандартният подход:Ползва се стандартният подход:

Лента с контролиЛента с контроли Форма със свойствата на контролатаФорма със свойствата на контролата

Дизайнерът автоматично генерира Дизайнерът автоматично генерира XML файл за създадената формаXML файл за създадената форма

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

Съответстващият C# кодСъответстващият C# кодusing System;using System;using Gtk;using Gtk;using Glade;using Glade;using GtkSharp;using GtkSharp;

public class GladeTestpublic class GladeTest{{ [Glade.Widget] Button button1;[Glade.Widget] Button button1;

public GladeTest(string[] args)public GladeTest(string[] args) {{ Application.Init();Application.Init(); Glade.XML gxml = new Glade.XML(Glade.XML gxml = new Glade.XML( "file.glade", "window2", null);"file.glade", "window2", null); gxml.Autoconnect(this);gxml.Autoconnect(this); button1.BorderWidth = 10;button1.BorderWidth = 10; Application.Run();Application.Run(); }} (примерът продължава)(примерът продължава)

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

Съответстващият C# кодСъответстващият C# код /* Connect the Signals defined in Glade *//* Connect the Signals defined in Glade */ public void OnWindowDeleteEvent(object o,public void OnWindowDeleteEvent(object o, DeleteEventArgs args)DeleteEventArgs args) {{ Application.Quit();Application.Quit(); args.RetVal = true;args.RetVal = true; }}

public void OnButton1Clicked(System.Object obj,public void OnButton1Clicked(System.Object obj, EventArgs e)EventArgs e) {{ Console.WriteLine("Button 1 clicked");Console.WriteLine("Button 1 clicked"); }}

public static void Main(string[] args)public static void Main(string[] args) {{ new GladeTest(args);new GladeTest(args); }}}}

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

Monodoc e браузър заMonodoc e браузър за документацията на Mono и включва:документацията на Mono и включва: Описание на езика C#Описание на езика C# Mono handbook – наръчник на Mono Mono handbook – наръчник на Mono

разработчика разработчика Документация за средите за разработкаДокументация за средите за разработка GTK# и GNOME# GTK# и GNOME# СамоучителиСамоучители

Прилича на браузърПрилича на браузърaa на на MSDN LibraryMSDN Library

Документацията MonodocДокументацията Monodoc

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

Средата MonoDevelopСредата MonoDevelop Сайт: www.monodevelop.comСайт: www.monodevelop.com Monodevelop e средата за разработка, която Monodevelop e средата за разработка, която

се пише от програмистите на Monoсе пише от програмистите на Mono Представлява порт на SharpDevelop (което Представлява порт на SharpDevelop (което

е среда за разработка за .NET под Windows)е среда за разработка за .NET под Windows) Настоящата версия е 0.5.1Настоящата версия е 0.5.1 Включва следните възможности:Включва следните възможности:

Вградена документация и дебъгерВградена документация и дебъгер Поддръжка на Java, NEMERALE (друг Поддръжка на Java, NEMERALE (друг

език за .NET) и HTMLезик за .NET) и HTML Отваря Visual Studio Отваря Visual Studio .NET.NET проекти проекти

Все още има бъговеВсе още има бъгове

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

Средата за разработка EclipseСредата за разработка EclipseEclipse e свободна среда за разработка (IDE)Eclipse e свободна среда за разработка (IDE)Разработен е основно от IBM, с отворен кодРазработен е основно от IBM, с отворен кодПисан е на JavaПисан е на JavaПолзва се главно от Java разработчициПолзва се главно от Java разработчициEclipse може да използва pluginEclipse може да използва pluginss

Един plugin добавя някаква функционалност:Един plugin добавя някаква функционалност: поддръжка на даден програмен езикподдръжка на даден програмен език поддържане на шаблони за проектиподдържане на шаблони за проекти code autocompletecode autocomplete много други много други

Eclipse има plugin за C#Eclipse има plugin за C# (малко стар)(малко стар)

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

ADO.NETADO.NET под под MonoMono Mono поддържа следните Mono поддържа следните ADO.NET ADO.NET Data Data

PProviders:roviders: DB – MySQLDB – MySQL DB – IBM DB2DB – IBM DB2 DB – Firebird / InterbaseDB – Firebird / Interbase DB – MS SQL ServerDB – MS SQL Server DB – ODBCDB – ODBC DB – OLE DBDB – OLE DB DB – OracleDB – Oracle DB – SybaseDB – Sybase DB – SQL LiteDB – SQL Lite DB – PostgreSQLDB – PostgreSQL

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

Използваме MySql Data Provider "ByteFX"Използваме MySql Data Provider "ByteFX" Този provider го има и под Windows Този provider го има и под Windows

(http://www.bytefx.com/)(http://www.bytefx.com/) Създаваме таблица с PHPMyAdmin на Създаваме таблица с PHPMyAdmin на

сървъра сървъра debian.fmi.uni-sofia.bgdebian.fmi.uni-sofia.bg::

Създаваме просто приложение за достъп Създаваме просто приложение за достъп до таблицатадо таблицата

C# кода е показан на следващия слайд C# кода е показан на следващия слайд ((DatabaseDemo.csDatabaseDemo.cs))

CREATE TABLE employee(CREATE TABLE employee( firstname varchar(32),firstname varchar(32), lastname varchar(32));lastname varchar(32));

Mono Mono и ADO.NET – примери ADO.NET – пример

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

using System;using System;using System.Data;using System.Data;using ByteFX.Data.MySqlClient;using ByteFX.Data.MySqlClient; public class DatabaseDemopublic class DatabaseDemo{{ const string CONNECTION_STRING = const string CONNECTION_STRING = "Server=debian.fmi.uni-sofia.bg;" +"Server=debian.fmi.uni-sofia.bg;" + "User ID=toncho;" +"User ID=toncho;" + "Password=T0n40;" +"Password=T0n40;" + "Database=toncho;";"Database=toncho;";

public static void Main(string[] args)public static void Main(string[] args) {{ IDbConnection dbCon = IDbConnection dbCon = new MySqlConnection(CONNECTION_STRING);new MySqlConnection(CONNECTION_STRING); dbCon.Open();dbCon.Open(); using (dbCon)using (dbCon) {{ ((примерът продължавапримерът продължава))

Mono Mono и ADO.NET – примери ADO.NET – пример

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

IDbCommand dbCmd = dbCon.CreateCommand();IDbCommand dbCmd = dbCon.CreateCommand(); dbCmd.CommandText = "SELECT dbCmd.CommandText = "SELECT ** FROM employee"; FROM employee";

IDataReader reader = dbCmd.ExecuteReader();IDataReader reader = dbCmd.ExecuteReader(); using (reader)using (reader) {{ while(reader.Read()) while(reader.Read()) {{ string firstName = string firstName = (string) reader["firstname"];(string) reader["firstname"]; string lastName =string lastName = (string) reader["lastname"];(string) reader["lastname"]; Console.WriteLine("Name: {0} {1}",Console.WriteLine("Name: {0} {1}", firstName, lastName);firstName, lastName); }} }} }} }}}}

Mono Mono и ADO.NET – примери ADO.NET – пример

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

Java под .NET CLRJava под .NET CLR Сайт на проекта: www.ikvm.netСайт на проекта: www.ikvm.net Има 2 основни цели:Има 2 основни цели:

Java класове да могат да се изпълняват Java класове да могат да се изпълняват под виртуалната машина на Monoпод виртуалната машина на Mono

Java класове/програми да бъдат Java класове/програми да бъдат транслирани от Java byte код до .NET ILтранслирани от Java byte код до .NET IL

Огромната база от код написан на Java ще Огромната база от код написан на Java ще може да бъде преизползван под .NETможе да бъде преизползван под .NET

Пример:Пример: Eclipse (Java програма) работи под MonoEclipse (Java програма) работи под Mono ОС е WindowsОС е Windows Mono работи под cygwinMono работи под cygwin

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

ASP.NET под ASP.NET под MonoMono Има два начина за поддръжка на ASP.NETИма два начина за поддръжка на ASP.NET

mod_monomod_mono – модул към Apache – модул към Apache Apache използва модулна архитектура и Apache използва модулна архитектура и

има модули за Perl и PHP напримерима модули за Perl и PHP например http://www.gotmono.net/documentation/http://www.gotmono.net/documentation/

mod-mono-howto.htmlmod-mono-howto.html XSPXSP – Web сървър писан на C# – Web сървър писан на C#

Обслужва ASP.NET заявкитеОбслужва ASP.NET заявките Няма нужда от ApacheНяма нужда от Apache Производителността на XSP вече е Производителността на XSP вече е

добрадобра Поддържат се доста ASP.NET контроли, но Поддържат се доста ASP.NET контроли, но

още има какво да се довършваоще има какво да се довършва Прегледайте документация и форумиПрегледайте документация и форуми

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

Модулът Модулът mmod_monood_mono След като се инсталира След като се инсталира mod_nonomod_nono в в

httpd.confhttpd.conf се правят следните промени: се правят следните промени:

Рестартира се Apache и за тест се ползва Рестартира се Apache и за тест се ползва следната страница: следната страница: http://your-server/demo/index.aspxhttp://your-server/demo/index.aspx

LoadModule mono_module modules/mod_mono.so LoadModule mono_module modules/mod_mono.so ... ... Alias /demo "/usr/share/doc/xsp/test" Alias /demo "/usr/share/doc/xsp/test" MonoApplications MonoApplications "/demo:/usr/share/doc/xsp/test" "/demo:/usr/share/doc/xsp/test" ......<Directory /usr/share/doc/xsp/test><Directory /usr/share/doc/xsp/test> SetHandler monoSetHandler mono <IfModule mod_dir.c> DirectoryIndex <IfModule mod_dir.c> DirectoryIndex index.aspx </IfModule>index.aspx </IfModule></Directory></Directory>

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

Допълнителни класове в Допълнителни класове в MonoMono CairoCairo

Графична библиотекаГрафична библиотека Commons.XmlCommons.Xml Commons.Xml.RelaxngCommons.Xml.Relaxng Commons.Xml.Relaxng.RncCommons.Xml.Relaxng.Rnc Mono.MathMono.Math

BigIntegerBigInteger Mono.Math.PrimeMono.Math.Prime

Прости числаПрости числа Mono.Math.Prime.GeneratorMono.Math.Prime.Generator

Генериране на прости числаГенериране на прости числа

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

Mono.PosixMono.Posix Системни извикванияСистемни извиквания

Mono.SecurityMono.Security Mono.Security.AuthenticodeMono.Security.Authenticode Mono.Security.CryptographyMono.Security.Cryptography

MDMD4 managed, 4 managed, MDMD5 unmanaged, RSA 5 unmanaged, RSA managed, SHA1 unmanagedmanaged, SHA1 unmanaged

Mono.Security.Protocol.NtlmMono.Security.Protocol.Ntlm Mono.Security.Protocol.TlsMono.Security.Protocol.Tls

Работа със SSL (Secure Socket Layer)Работа със SSL (Secure Socket Layer)

Допълнителни класове в Допълнителни класове в MonoMono

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

Допълнителни класове в Допълнителни класове в MonoMono Mono.Security.X509Mono.Security.X509

Работа с цифрови сертификатиРабота с цифрови сертификати Mono.Security.X509.ExtensionsMono.Security.X509.Extensions Mono.XMLMono.XML Mono класовете прибавят понякога и Mono класовете прибавят понякога и

нови методи/свойстванови методи/свойства Разширяват стандартните класове на .NETРазширяват стандартните класове на .NET

Mono е свободна имплементация!Mono е свободна имплементация! Всеки може да пробва да прибави нещо Всеки може да пробва да прибави нещо

полезно (напр. в Mono.Math)полезно (напр. в Mono.Math) Ако бъде одобрено, ще се разпространява Ако бъде одобрено, ще се разпространява

с целия Mono Frameworkс целия Mono Framework

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

Mono във ФМИMono във ФМИ на СУ на СУ На На http://debian.fmi.uni-sofia.bg/manual/http://debian.fmi.uni-sofia.bg/manual/ има има

интересни и образователни материалиинтересни и образователни материали Mono е инсталирано на Debian.FMIMono е инсталирано на Debian.FMI

Можете да се логнете и да пробвате Можете да се логнете и да пробвате компилатора и виртуалната машинакомпилатора и виртуалната машина

Версията е доста стара (0.31 . . . при Версията е доста стара (0.31 . . . при условие, че има 1.0.4 stable)условие, че има 1.0.4 stable)

Нова версия ще бъде инсталирана само Нова версия ще бъде инсталирана само при проявен интереспри проявен интерес

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

Порталът OpenFMIПорталът OpenFMI Стартира проектът OpenFMIСтартира проектът OpenFMI Адрес: http://openfmi.netАдрес: http://openfmi.net Хостват се проекти с отворен кодХостват се проекти с отворен код Ако има желаещи там може да се Ако има желаещи там може да се

инсталира Monoинсталира Mono

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

Mono, ASP.NET, debian.fmi – Mono, ASP.NET, debian.fmi – примерпример

dir1dir1 e виртуална директория в сървъра e виртуална директория в сървъра dir2dir2 e директорията, където се намират e директорията, където се намират

вашите вашите ..aspxaspx файлове файлове dir3dir3 e съответстващата на виртуалната e съответстващата на виртуалната

директория физическа директориядиректория физическа директория

# mono /usr/local/bin/xsp.exe –root# mono /usr/local/bin/xsp.exe –root /dir1 /dir1 --applications /dir2:/dir3--applications /dir2:/dir3

# mono /usr/local/bin/xsp.exe --root # mono /usr/local/bin/xsp.exe --root /usr/local/share/doc/xsp/test//usr/local/share/doc/xsp/test/ --applications --applications //::/usr/local/share/doc/xsp/test//usr/local/share/doc/xsp/test/

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

Mono, ASP.NET, debian.fmi Mono, ASP.NET, debian.fmi примерпример

В Mozzila/Firefox написваме: В Mozzila/Firefox написваме: http://debian:8080/index.aspxhttp://debian:8080/index.aspx

Има разлика между малки големи букви и Има разлика между малки големи букви и трябва да сме във ФМИ за този примертрябва да сме във ФМИ за този пример

Извън факултета се използва тунелиране Извън факултета се използва тунелиране през SSHпрез SSH

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

Mono софтуерMono софтуер Приложни програми написани с Mono Приложни програми написани с Mono

Framework-aFramework-a www.gnomefiles.orgwww.gnomefiles.org

Използва се графичен интерфейс GTK Използва се графичен интерфейс GTK (има GTK# за Windows)(има GTK# за Windows) Често използват и други библиотеки, някои Често използват и други библиотеки, някои

от които не са пренесени към Windowsот които не са пренесени към Windows Като резултат много трудно биха тръгнали Като резултат много трудно биха тръгнали

под Mono за Windowsпод Mono за Windows Galaxium – MSN комуникаторGalaxium – MSN комуникатор MyBudget – счетоводен софтуерMyBudget – счетоводен софтуер WoodPusher – игра на шахWoodPusher – игра на шах CDCollect – каталогизиране на дисковеCDCollect – каталогизиране на дискове

Page 57: MONO – свободна имплементация на .NET Framework
Page 58: MONO – свободна имплементация на .NET Framework
Page 59: MONO – свободна имплементация на .NET Framework
Page 60: MONO – свободна имплементация на .NET Framework
Page 61: MONO – свободна имплементация на .NET Framework

MonoMono – полезни връзки – полезни връзки Mono – официален сайт: www.go-mono.orgMono – официален сайт: www.go-mono.org Средата MonoDevelop: Средата MonoDevelop:

www.monodevelop.comwww.monodevelop.com Mono community: http://www.gotmono.netMono community: http://www.gotmono.net Дискусии за .NET в OpenFMI:Дискусии за .NET в OpenFMI: http://explore.openfmi.net/computers/http://explore.openfmi.net/computers/

programming/dotNET/programming/dotNET/ След регистрация пратете mail, за да След регистрация пратете mail, за да

получите праваполучите права Zamples – пробвайте Mono online: Zamples – пробвайте Mono online:

http://zamples.com/JspExplorer/samples/cshhttp://zamples.com/JspExplorer/samples/csharp.jsp arp.jsp

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

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

на .NET на .NET FrameworkFramework

Въпроси?Въпроси?