Mono: quando ASP.NET incontra Linux

di Andrea Zani, in ASP.NET,

Non ricordo chi la scrisse, ma era una frase di questo tipo: "Il successo di un'idea è dimostrata da quanti la copiano". Anche se non è proprio un caso analogo, la bontà del .NET Framework di Microsoft è innegabile. La facilità di programmazione che questo "ambiente" permette è ormai nota sia negli ambiti delle web application che per la programmazione di applicazioni per desktop.

Anche se in questo caso è più adatto il termine "implementazione" invece di "copia", alcune community di programmatori non legate a Microsoft, sono impegnate in progetti open-source per la suddetta implementazione anche su altri sistemi operativi. Tra questi ci sono Mono - progetto non ancora completamente maturo e preso in esame in questo articolo - per Linux, il nuovo DotGnu , e altri. Questi Framework aprono scenari nuovi e ci permettono di sviluppare e testare le nostre web application in ASP.NET anche su Linux !

Pre-installazione

Qui di seguito sono riportati i vari passi seguiti per la corretta installazione di base di Mono su un sistema operativo Linux. Nel mio caso ho utilizzato una distribuzione Mandrake 9.1 , ma le differenze tra le varie installazioni per altre distribuzioni dovrebbero essere minime e non dovrebbero creare problemi a chi si muove già con una certa disinvoltura con questo sistema operativo.

Prenderò in considerazione due tipi di installazione:

  • Installazione di base con pacchetti precompilati (rpm) e utilizzo del mini webserver XSP.
  • Installazione dai sorgenti e compilazione con il web server Apache.

Il primo tipo di installazione è la più semplice ed è consigliata a chi ha poca dimestichezza con le compilazione dei pacchetti (anche se saremo obbligati ad una semplice compilazione anche con questa scelta); la seconda è adatta a chi di trova a suo agio con la shell di Linux e con le varie compilazioni.

Procuriamoci i pacchetti

Il primo passo da seguire è andare direttamente sul sito di Mono per procurarsi i vari pacchetti che dovremo utilizzare per l'installazione.

Immagine

Oltre all'ultima versione - la 0.29 al tempo della stesura di questo articolo - sono presenti anche quelli antecedenti, e per ognuna sono presenti varie versioni già compilate in pacchetti RPM per distribuzioni come Red Hat, Mandrake e Suse. Se si utilizza una di queste distribuzioni potete scaricare direttamente la versione interessata, oppure andare nella sezione " Source code " e scaricare direttamente i sorgenti.

Nel caso volessimo utilizzare le versioni precompilate, il pacchetto da scaricare e che ci interessa è mono-0.xx-1.ximian.6.1.i586.rpm (o simile, dipende dalla distribuzione scelta).

Se vogliamo compilare noi direttamente i sorgenti, dobbiamo scaricare, sempre nella sezione "Source code" il pacchetto Mono runtime.

Quindi, se vogliamo testare ASP.NET (sia che volessimo utilizzare Apache o no) dobbiamo scaricare il pacchetto xsp web server 0.x.

Se vogliamo utilizzare ASP.NET con Apache andrà anche scaricato Apache Mono module ( mod_mono ).

Installiamo Mono

Se abbiamo scaricato gli RPM, l'installazione di Mono è elementare. Direttamente dal desktop è sufficiente cliccare due volte sul pacchetto per avviare l'installazione automatica. A seconda della distribuzione utilizzata, verrà avviata l'installazione con le varie richieste di password per l'utente "root" e tutto si concluderà in pochi secondi. Ok, il Framework è installato e funzionante: e poi dicono che le installazioni su Linux sono complesse!

Se vogliamo installare Mono direttamente dai sorgenti, dovremo aprire una shell, prendere i diritti di root (comando "su"), e scompattare il pacchetto:

tar -xzvf mono-x.xx.tar.gz 

Quindi, seguire la classica procedura per la configurazione e l'installazione:

 ./configure
make
make install 

In usr/local/bin dovremo quindi trovare i programmi appena installati, tra cui Mono e Mcs .

Per controllarne il funzionamento scriviamo una semplice console application in C#:

Immagine

Quindi, da una shell compiliamo con un semplice:

mcs esempio.cs

A differenza di Windows in cui il compilatore C# ha il nome "csc", sotto mono si chiama "mcs" e presenta le stesse opzioni del compilatore della versione per Windows. Dopo la compilazione sarà presente nella stessa directory un nuovo file di nome "esempio.exe". Sotto Linux non possiamo richiamare direttamente questo file per eseguirlo, ma dovremo richiamare il comando "mono" per la corretta esecuzione del programma appena compilato:

mono esempio.exe

Immagine

Le sorprese non sono finite, se provassimo a trasferire il file creato da Mono in Windows, sarà possibile avviarlo direttamente senza alcun problema:

Immagine

E' meglio comunque raffreddare gli animi di chi, come me, dopo il primo entusiasmo ha provato immediatamente l'esecuzione di una WinForm: sotto Linux non funziona non essendo implementate le API grafiche di Windows.
Se vogliamo utilizzare questo tipo di programmi con Linux dobbiamo installare Wine o utilizzare le librerie grafiche GTK. In poche parole: non è ancora possibile scrivere WinForms che vanno indistintamente sia con Linux che con Windows.

Abbiamo solo due strade per far questo: scrivere WinForm che accedono alle API di Windows in modo da utilizzarle tranquillamente con Windows e Linux ma con Wine in esecuzione, oppure scriverle utilizzando le librerie grafiche GTK , che dovranno essere installate anche su Windows.

Peccato! Forse in futuro ci sarà qualcosa di più immediato...

Una piccola curiosità: tra i file installati da Mono è presente anche il comando "monodis". Esso ci permette di dissassemblare un file appena compilato. E' sufficiente digitare:

monodis esempio.exe

per vedere il codice CSIL del nostro programma.

2 pagine in totale: 1 2
Contenuti dell'articolo

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti