PDF verze

Transkript

PDF verze
UNIVERZITA PARDUBICE
Ústav Elektrotechniky a Informatiky
PROJEKT MONO
Semestrální práce z předmětu Správa Webserveru
[email protected]
Březen 2007
Karel Dytrych
Karel Dytrych
Projekt Mono
Obsah
Obsah ............................................................................................ 2
Co je to projekt Mono ......................................................................... 3
Součásti projektu Mono .................................................................... 3
Ecma – 334 ................................................................................. 3
Ecma – 335 Common Language Infrastructure........................................ 3
Technologie .NET .............................................................................. 3
.NET Framework............................................................................. 3
Zásadní změna v přístupu k prostředkům systému .................................. 4
Schéma .NET Frameworku............................................................... 4
Hlavní rysy projektu Mono .................................................................... 5
Mono na Windows ........................................................................... 5
Příklad kompilace programu ............................................................ 5
Grafické aplikace ......................................................................... 6
Vlastní implementace Windows.Forms ................................................ 6
Instalace na Linux ........................................................................... 6
Mono na zkoušku............................................................................. 6
VMware image – openSUSE Linux ....................................................... 7
Live CD – Ubuntu Linux .................................................................. 7
Vývojové prostředí pro Mono aplikace ...................................................... 7
Cíle MonoDevelopu do budoucna.......................................................... 7
MonoDevelop vs Visual Studio ............................................................. 7
Převod aplikací na Mono ...................................................................... 8
Webové aplikace ASP.NET a Mono ........................................................... 9
ASP.NET hosting s Apachem ............................................................... 9
Instalace modulu mod_mono, konfigurace Apache .................................10
ASP.NET hosting pouze na webserveru XSP.............................................11
Konfigurace XSP..........................................................................11
Některé parametry konfigurace XSP serveru ........................................12
Závěr............................................................................................12
Literatura ......................................................................................12
2/13
Karel Dytrych
Projekt Mono
Co je to projekt Mono
Mono je sada open source programů a nástrojů umožňující vývoj a provoz aplikací
založených na technologiích .NET i mimo operační systém Windows. Aplikace lze
pomocí Mona provozovat na operačních systémech Linux , Solaris, Mac OS X,
Windows, a Unix. Jde především o desktopové aplikace, a serverové aplikace
vyvíjené v prostředí ASP.NET. Projekt Mono vede firma Novell, která ho převzala po
firmě Ximian. Projekt odstartoval v roce 2001, ale první stabilní verze 1.0 se dočkal
až ve druhém čtvrtletí 2004.
Projektu se ve velké míře věnuje zakladatel společnosti Ximian Miguel de Icaza
(v současné době zaměstnanec Novellu), který stál u zrodu desktopového prostředí
Gnome. Jeho plánem do budoucna je Gnome kompletně postavené na technologii
Mono.
Součásti projektu Mono
V Monu jsou implementovány mezinárodní standardy ECMA (European Computer
Manufacturers Association) použité v .NET a některé základní nástroje. Především
jde o kompilátor jazyka C#, a Common Language Runtime - základní kámen .NET.
Ecma – 334
Standard specifikující jazyk C# - syntaxe, pravidla pro interpretaci, a omezující
vlastnosti.
Ecma – 335 Common Language Infrastructure
Mezinárodní standard definující základní jazykovou infrastrukturu (CLI) pro aplikace
napsané v několikanásobně vyšších jazycích, které mohou být spuštěny v různých
systémových prostředích bez potřeby jakkoliv tyto aplikace upravovat.
Technologie .NET
.NET („dotnet“) je název pro sadu technologií, které tvoří celou platformu od firmy
Microsoft. Technologie .NET zahrnuje webové XML služby, servery, a klientské
aplikace.
.NET je velice podobný s Javou. Obě technologie sdílí ideu, že výsledkem
kompilace programů není strojový kód pro daný procesor, ale jakýsi mezikód
(v případě .NET je to Microsoft Intermediate Language - MSIL). MSIL je nezávislý
na operačním systému i typu procesoru. Mezikód se spouští virtuálním strojem
s využitím .NET prostředků, jehož výsledkem jsou instrukce pro daný procesor.
.NET má oproti Javě výhodu v možnosti použití různých programovacích jazyků pro
kompilaci do mezikódu.
.NET Framework
.NET Framework zprostředkovává prostředí nezbytné pro běh aplikací založených
na .NET technologiích. Poskytuje knihovny a rozhraní pro tyto aplikace. Microsoft
3/13
Karel Dytrych
Projekt Mono
tento framework vydává jako část operačního systému, která se dá zdarma
stáhnout a nainstalovat. Je tedy určený pouze pro operační systémy Windows. .NET
Framework v podstatě představuje funkční abstraktní vrstvu pro .NET aplikace.
Zásadní změna v přístupu k prostředkům systému
Hlavní rozdíl ve vývoji aplikací je v tom, že dříve program vytvořený v prostředí
Visual C++ za pomocí Windows Forms používal MFC (Microsoft Foundation Classes),
které přímo volaliWin32 API. Programy nyní využívají prostředky .NET Frameworku.
Tento přístup zaručuje systémovou nezávislost.
.NET Framework zpracovává nízkoúrovňové části aplikací, s kterými běžný
programátor ani nepřijde do styku. Jde především o následující služby:
•
•
•
•
Tvorba, a správa zpracování vláken kódu.
Správa paměti, dealokace objektů.
Bezpečnost, kontrola oprávnění k prováděným operacím.
Správa knihoven a komponent.
Tyto operace spravuje část zvaná Common Language Runtime (CLR).
Base Class Library (BCL) je knihovna tříd dostupná všem jazykům používajících
.NET Framework. BCL poskytuje třídy, které zapouzdřují nejčastější pomocné
funkce – práce se soubory, interakce s databázemi, zobrazování grafiky, třídění,
síťovou komunikaci apod.
ADO.NET je knihovna určená k manipulaci s daty a XML.
Windows Forms jsou knihovny pro vývoj uživatelského prostředí (GUI) aplikací.
ASP.NET jsou knihovny pro vývoj webových aplikací.
Schéma .NET Frameworku
Obrázek 1 Technologie .NET, Zdroj: Zive.cz
4/13
Karel Dytrych
Projekt Mono
Podporované jazyky .NET Frameworku
APL, C++, C#, Cobol, Component Pascal, Curriculum, Eiffel, Forth, Fortran, Haskell,
Java Language, Microsoft JScript, Mercury, Mondrian, Oberon, Oz, Pascal, Perl,
Python, RPG, Scheme, Small Talk, Standard ML, Microsoft Visual Basic
Hlavní rysy projektu Mono
•
•
•
•
•
•
Podpora ASP.NET a Windows Forms aplikací.
Nezávislost na použité platformě.
Základ položený na standardech ECMA/ISO.
Možnost provozu .NET, Javy, Pythonu, a dalších jazyků.
Otevřené zdrojové kódy, svobodný software.
Komerčně podporovaný (Novell).
Mono na Windows
Mono lze nainstalovat na operační systém Windows souběžně s .NET frameworkem.
Pro uživatele to znamená, že má na svém počítači dva podobné prostředky. Stačí
stáhnou ze stránek Mono projektu instalátor, který vše bez problémů zařídí. Po
instalaci je nutné se ujistit, že podadresář \bin Mona je v systémové proměnné
PATH. Standardně se na systému využívá .NET frameworku, je výchozí. Nejsnáze
lze použít Mono z příkazové řádky.
Příklad kompilace programu
Mějme jednoduchý zdrojový kód konzolové aplikace v jazyce C# v souboru
zdrojak.cs. V příkazové řádce poté můžeme program zkompilovat příkazy:
•
csc /out:program_net.exe zdroj.cs (použije MS .NET C# kompilátor)
•
mcs –out:program_mono.exe zdroj.cs (použije Mono C# kompilátor)
Výsledkem máme 2 spustitelné soubory stejné velikosti. Jednotlivé byty souborů
jsou ale různé, přesto program pracuje stejně.
Mono
Když spustíme program_mono.exe vykoná se program kompilovaný Mono
kompilátorem pod .NET frameworkem. Když chceme program spustit pomocí Mono
frameworku použijeme příkaz: mono program_mono.exe. Tento příkaz použije
Just In Time (JIT) kompilátor k přeložení mezikódu do nativního kódu cílové
platformy. Výsledek kompilace uchová v paměti pro příští spuštění.
Mint
Mint je také interpret pro vykonávání Mono aplikací. Nikdy nepoužívá JIT, projde
vždy celý kód, přeloží ho a vykoná. Protože se program kompiluje pokaždé bývá
použití mint pomalejší než mono. Nicméně JIT kompilace bývá na začátku
pomalejší, a malé aplikace tak mohou být s mint rychlejší než při použití mono.
Navíc se mint hodí pro použití na OS X, kde není k dispozici JIT.
S Mono frameworkem můžeme spustit obě verze programu.
5/13
Karel Dytrych
Projekt Mono
Grafické aplikace
S grafickými aplikacemi je to složitější. Oproti konzolové aplikaci nestačí jen
zkompilovat mcs kompilátorem.
Když si např. ve Visual Studiu .NET připravíme jednoduchou formulářovou aplikaci a
pokusíme se jí zkompilovat dostaneme zhruba následující výstup.
mcs -out:app_mono.exe Form1.cs
Form1.cs(13,23): error CS0234: The type or namespace name `Windows'
does not exist in the namespace `System'. Are you missing an
assembly reference?
Compilation failed: 1 error(s), 0 warnings
Důvod neúspěchu kompilace tkví v tom, že Mono neimplementuje CLI úplně.
Grafické .NET aplikace využívají jmenný prostor System.Windows.Forms, a ten
obsahuje sadu prvků, které jsou navrženy speciálně pro Windows. Tento problém se
dá řešit použitím Gtk.
Gtk
Gtk byl původně navržen pro podporu programu Gimp. Nyní existuje verze Gtk#,
která je distribuovaná společně s Mono projektem jako jmenný prostor Gtk a
GtkSharp. V Gtk jsou téměř všechny widgety, komponenty, atributy, události a
metody (Label, Button, clicked, …) pojmenovány stejně jako ve windows.forms.
Proto je díky Gtk zaručena přenositelnost grafických aplikací. Gtk jde nainstalovat i
na systém Windows.
Program s Gtk kompilujeme s parametrem -pkg:gtk-sharp.
Grafické aplikace s Gtk lze provozovat pod .NETem stejně jako v Mono. Před
prvním použitím je potřeba .NET framework nastavit pro použití s Gtk.
Vlastní implementace Windows.Forms
Autorům později přišlo využívání Gtk# nebo alternativního Qt# jako špatné. Začali
vyvíjet vlastní implementaci Windows.Forms. V současné době je téměř hotová a
ve fázi testování. Ke stažení je na stránkách projektu jako nestabilní verze Mona.
.NET framework 1.1 byl již téměř celý implementován včetně WinForms, u verze
2.x jsou vývojáři zhruba na 96 %. Lze kdykoliv ověřit na adrese:
http://mono.ximian.com/class-status/
Instalace na Linux
Na webu projektu Mono je k dispozici několik rpm balíčků. Především pro distribuce
SUSE, Red Hat, a Fedora Core.
Stažený balíček stačí nainstalovat příkazem rpm –Uvh –nodeps *.rpm.
.NET aplikace se po instalaci na Linux spouštějí i kompilují stejně jako na Windows.
Jednou zkompilované aplikace pomocí csc fungují bez potřeby dalších úprav.
Mono na zkoušku
Nechcete-li si na svůj počítač instalovat Mono ani žádné jeho součásti, ale přesto
ho chcete vyzkoušet, máte dvě možnosti.
6/13
Karel Dytrych
Projekt Mono
VMware image – openSUSE Linux
Přímo na stránkách projektu je k dispozici ke stažení VMware image operačního
systému openSUSE s kompletně nainstalovanými nástroji a programy pro podporu
Mono aplikací. Je to velice jednoduchá a pohodlná cesta jak vyzkoušet Mono
v praxi. Hned po instalaci je k dispozici spousta ASP.NET a klasických aplikací
včetně zdrojových kódů.
Live CD – Ubuntu Linux
Druhá možnost jak otestovat Mono je využít projektu mono-live.com. Je to Live
distribuce Ubuntu s velice podobným obsahem jako image openSUSE. Některé části
hlavně u ASP.NET aplikací však nefungovali zcela správně. Na vyzkoušení rozhodně
spíš doporučuji VMware image.
Vývojové prostředí pro Mono aplikace
MonoDevelop je volně šiřitelné GNOME vývojové prostředí vyvinuté z SharpDevelop.
Primárně bylo navrženo pro C# a ostatní .NET jazyky, ale je otevřeno jakémukoliv
jazyku. MonoDevelop se snaží být víc než jen IDE, chce být co nejvíce otevřený a
rozšiřitelný nástroj pro vývoj aplikací. MonoDevelop lze spustit na Windows i Mac.
Cíle MonoDevelopu do budoucna
•
•
•
Být nejlepší vývojové prostředí na Unix systémy pro Mono.
Podporovat a vylepšovat nadále Gtk#.
Integrace kvalitního debuggeru a dokumentačních nástrojů.
MonoDevelop vs Visual Studio
MonoDevelop poskytuje jak textový editor pro psaní zdrojového kódu s doplňováním
a zvýrazňováním syntaxe, tak designer pro návrh grafických aplikací. Obzvláště
designer je velice jednoduchý a neumí spoustu věcí v porovnání s Visual Studiem.
S Visual Studiem má podobnou, a zdařilou správu projektů (solutions). Veliké plus
pro MonoDevelop je, že umí importovat a pracovat s projekty Visual Studia .NET
2005.
MonoDevelop mi během testování při psaní tří jednoduchých aplikací několikrát
zhavaroval. Vždy bez nějaké vypsané chyby se odporoučel i s neuloženými daty.
Celkově v porovnání obou IDE jde o rozdíl asi jako mezi Superbem (VS) a Felicií
(MD). Aplikace pod Mono frameworkem bych asi vyvíjel ve Visual Studiu
s následným importem a kompilací v MonoDevelopu.
7/13
Karel Dytrych
Projekt Mono
Obrázek 2 Screenshot z Monodevelop
Převod aplikací na Mono
Při převodu aplikací na Mono je důležité myslet na některé nekompatibility, např.
neimplementované metody, třídy popř. ještě nestabilní třídy. V současné době jde
především o System.Windows.Forms.
K převodu aplikací lze využít program Mono Migration Analyzer, který umí
analyzovat aplikace napsané pro .NET. Pomáhá odhalit volání dosud
neimplementovaných metod, a sporných částí kódu. Použití tohoto nástroje by
mělo sloužit jako vstupní bod při převodu aplikací. Dále je třeba myslet na rozdíly
v operačních systémech jako je rozlišování velikosti znaků v názvech souborů,
oddělovač adresářů v cestách k souborům („/“ vs „\“), a další. U ASP.NET aplikací
také nefungují dosud neimplemetované Enterprise Services a cross-process
transakce.
Naproti tomu obvykle není potřeba velkých změn u databází. Mono podporuje
mnoho běžných a dostupných databází, včetně MS SQL.
8/13
Karel Dytrych
Projekt Mono
Obrázek 3 Mono Migration Analyzer
Webové aplikace ASP.NET a Mono
K provozu webových aplikací založených na ASP.NET je potřeba XSP server a popř.
modul do Apache mod_mono. Máme dvě hlavní možnosti:
•
•
Apache hosting: využívající mod_mono a XSP.
XSP: jednoduchý samostatný webový server napsaný v C#, pro hostování
ASP.NET aplikací. Jednoznačná volba pro začátek.
Pro ostrý provoz aplikací doporučují samotní autoři použít mod_mono Apache.
Poskytuje široké možnosti v nastavení, a dodává tak velkou flexibilitu.
Pro rychlý začátek nebo testování je ale XSP ideální řešení. Více pokročilí uživatelé
mohou použít také HttpListener.
ASP.NET hosting s Apachem
Webový server Apache (http://httpd.apache.org) je nejrozšířenější webový server
současnosti. Podle serveru Netcraft.vom drží 60% podíl webserverů (02/2007). Mono
tak přiblíží ASP.NET velkému procentu vývojářů.
Mod_mono běží uvnitř Apache, a obsluhuje všechny ASP.NET požadavky voláním
externího programu „mod-mono-server“, což je speciální verze XSP. K provozu je
potřeba nainstalovat Mono, mod_mono a xsp komponenty. Mod_mono představuje
část spolupracující s Apachem a XSP obsahuje engine pro ASP.NET. Vše se dá
stáhnout ze stránek projektu Mono.
9/13
Karel Dytrych
Projekt Mono
Instalace modulu mod_mono, konfigurace Apache
Dříve než je možné pustit se do samotné instalace modulu mod_mono musíme mít
nainstalován následující software:
•
•
•
Mono
XSP
Apache
Instalace mod_mono
1. Nejdříve musíme stáhnou zdrojové kódy modulu z webu Mono projektu.
2. Zdrojové kódy rozbalíme příkazem:
tar –xvzf mod_mono_source.tar.gz.
3. V adresáři do kterého se nám modul rozbalil nakonfigurujeme instalaci
příkazem ./configure --prefix=/usr (Nastavení adresáře).
4. Vykonáme příkaz make, a poté make install.
Konfigurace Apache
• Nejdříve otevřeme konfigurační soubor Apache – http.conf.
• Potřebujeme aby Apache zavedl modul do paměti, toho docílíme přidáním
následujícího řádku:
LoadModule mono_module /usr/modules/mod_mono.so
(cesta k modulu může být různá).
• Vytvoříme v Apache Alias pro adresář kde máme umístěny ASP.NET stránky.
Alias /AspNet "/home/kjn/aspnet_stranky"
MonoApplications "/AspNet:/home/kjn/aspnet_stranky"
•
Dále musíme nastavit jaký modul má Apache použít pro obsluhu požadavků.
#Pro Apache 1.3
<Directory /usr/share/doc/xsp/test>
SetHandler mono
<IfModule mod_dir.c>
DirectoryIndex index.aspx
</IfModule>
</Directory>
#Apache 2
<Location /AspNetOnApache>
SetHandler mono
</Location>
•
Aby vše fungovalo server XSP musí poskytovat výstup ASP.NET aplikace, viz.
konfigurace XSP.
xsp --applications /AspNet:/home/kjn/aspnet_stranky/
Spuštěná aplikace je nyní přístupná pod adresami http://localhost/AspNet
(Apache), nebo http://localhost:8080/AspNet přímo přes XSP.
10/13
Karel Dytrych
Projekt Mono
Konfigurace VirtualHostů
<VirtualHost *:80>
DocumentRoot /www_asp
ServerName www.example.com
MonoApplications default "/:/www_asp"
MonoDocumentRootDir "/www_asp"
<Location />
SetHandler mono
</Location>
</VirtualHost>
Nastavení Handleru pro více přípon souborů
AddHandler mono .aspx .ascx .asax .ashx .config .cs .asmx .axd
Ovládací panel modulu mod_mono
<Location /mono>
SetHandler mono-ctrl
Order deny,allow
Deny from all
Allow from 127.0.0.1
</Location>
ASP.NET hosting pouze na webserveru XSP
XSP je samostatný webový server napsaný v C#, pro hostování ASP.NET aplikací
s minimálním úsilím. XSP funguje jak s .NET na Windows, tak s Monem.
XSP stačí spustit jeho spouštěcím souborem a již naslouchá na svém výchozím portu
8080 (Linuxu) nebo 8088 (Windows). XSP podporuje SSL i TLS.
Konfigurace XSP
Webserver XSP se konfiguruje pomocí parametrů při spouštění serveru, nebo
pomocí XML souborů s příponou config v adresáři s instalací XSP.
Příklad konfiguračního souboru
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<appSettings>
<add key="MonoServerPort" value="8080"/>
<add key="MonoApplications" value="/:." />
<!-- MonoServerVirtualDir
MonoServerRootDir
MonoServerAddress -->
<!-- MonoServerDefaultIndexFiles is set in web.config -->
</appSettings>
</configuration>
11/13
Karel Dytrych
Projekt Mono
Některé parametry konfigurace XSP serveru
--Parametr
appSettings v XML
Hodnota
port N
MonoServerPort
address N
root ADR
appconfigfile S
appconfigdir D
MonoServerAddress
MonoServerRootDir
MonoApplicationsConfigFil
e
MonoApplicationsConfigDir
N představuje TCP port na kterém XSP
naslouchá
N je IP adresa na které XSP naslouchá
Server automaticky změní adresář na tento
Načte konfiguraci z XML souboru S
applications A
MonoApplications
nonstop
Přidá nastavení z XML souborů nalezených
adresáři D (soubory s příponou .webapp)
Čárkou oddělený seznam virtuálních
adresářů pro aplikace běžící na serveru.
Nezastavuje server po stisku Enteru.
Závěr
Mono je velice zajímavý projekt kterému bych osobně přál úspěch. Řeší veliký
problém s přenositelností software mezi operačními systémy. Její prosazení nebude
nikterak jednoduché, má velikou konkurenci v podobě hodně rozšířené Javy. Java
má již velikou podporu (Sun, Oracle, …) a komunitu. Naopak Mono by mohlo díky
své kompatibilitě s .NETem částečně těžit i z jeho úspěchu.
Mono má nyní výhodu že se neustále a rychle vyvíjí. Vznikají podpory pro další
jazyky a smazává se rozdíl mezi ním a .NET frameworkem. Určitě časem přiláká
spoustu vývojářů. Já už nyní jsem jeden z nich.
Literatura
Ecma International: Standard ECMA-334 [online]. URL: http://www.ecmainternational.org/publications/standards/Ecma-334.htm
Ecma International: Standard ECMA-334 [online]. URL: http://www.ecmainternational.org/publications/standards/Ecma-335.htm
Microsoft: Definice základních součástí .NET [online]. URL:
http://www.microsoft.com/cze/net/basics/whatis.asp
Redakce Živě a Microsoft: Začínáme s ASP.NET 2.0 [online]. URL:
http://www.zive.cz/h/Programovani/AR.asp?ARI=125787
Startvbdotnet: .NET Framework and Languages [online]. URL:
http://www.startvbdotnet.com/dotnet/languages.aspx
Wikipedia: .NET Framework [online]. URL:
http://en.wikipedia.org/wiki/.NET_Framework
Wikipedia: Mono (software) [online]. URL:
http://en.wikipedia.org/wiki/Mono_(software)
Monodevelop: Monodevelop [online]. URL: http://www.monodevelop.com/
Mono: Mono [online]. URL: http://www.mono-project.com/
12/13
Karel Dytrych
Projekt Mono
NetCraft: February 2007 Web Server Survey [online]. URL:
http://news.netcraft.com/archives/2007/02/02/february_2007_web_server_surve
y.html
The Code Project: MONO: an alternative for the .NET framework [online]. URL:
http://www.codeproject.com/cpnet/mono-merta.asp
Brian Delahunty: Introduction to Mono - ASP.NET with XSP and Apache [online].
URL: http://www.codeproject.com/cpnet/introtomono2.asp
13/13

Podobné dokumenty

02 - Konfigurace httpd Apache, testování Image: y36aws-apache

02 - Konfigurace httpd Apache, testování Image: y36aws-apache 02 - Konfigurace httpd Apache, testování Image: y36aws-apache-02 Cíl cvičení:

Více

Překladač a jeho struktura - Překladače, přednáąka č. 1

Překladač a jeho struktura - Překladače, přednáąka č. 1 Lexikální analyzátor Chyby typu „neznámý symbolÿ, například 12YT. Není problém zjistit umístění ve zdroji.

Více

Principy moderních překladačů, virtuální stroj

Principy moderních překladačů, virtuální stroj Každý z těchto druhů je vhodný pro jinou situaci. Zatímco cílový program kompilátoru (obvykle EXE soubor) se provádí relativně velmi svižně, interpretovaný program je pomalý a pro většinu vyšších p...

Více

ASP.NET Core 1.0: KONFIGURACE APLIKACÍ

ASP.NET Core 1.0: KONFIGURACE APLIKACÍ – Konfigurace platformy (IIS, system.webServer) – Konfigurace frameworku (system.web, …) – Konfigurace aplikace (appSettings, vlastní sekce)

Více

Přechod z webhostingu na VPS + instalace Plone 4 a dalších služeb

Přechod z webhostingu na VPS + instalace Plone 4 a dalších služeb V tomto místě je čas na rekapitulaci toho, co už mám hotovo. Připravil jsem na VPS HTTP rozhraní s podporou PHP a MySQL v pohotovosti. Stejně tak je nyní připravena i služba HTTPS se stejnými možno...

Více

Technická příručka instalace a zálohování

Technická příručka instalace a zálohování Záloha pomocí standardních nástrojů pro práci s MS SQL serverem. ................................................32 Obnova dat. ........................................................................

Více