ASP.NET na Linux-u

Zeyn

Member
Joined
Feb 17, 2016
Messages
251
Reaction score
1
Pre nego što krenem sa uputstvom, napisaću kratak uvod u to šta je ASP.NET i zašto sam uopšte odlučio da napišem uputstvo za korišćenje Majkrosoftove tehnologije na Linux-u, pored već gomilu postojećih alternativa poput Laravel, Symfony, ZF (PHP), Django, Pyramid, Tango, Flask (Python), Ruby On Rails, Sinatra (Ruby), Play!, Spring (Java) itd. Nadam se da će uputstvo biti korisno barem onima koji žele da eksperimentišu. Ovo nije uputstvo za razvoj ASP.NET aplikacija već za njegovo podešavanje na Linux platformama. Tutorijal je rađen na TRIOS Mia RC23.

Odričem se bilo kakve odgovornosti za štetu koju izazovete na sistemu - svi alati pomenuti u ovom uputstvu su razvijani od strane Majkrosofta ili nezavisnih autora, pa se njima obratite za eventualne posledice.

Šta je ASP.NET | Open-source web framework for .NET

ASP.NET je Majkrosoftov MVC (model-viewer-controller) radni okvir namenjen razvoju dinamičkih web sajtova, aplikacija i servisa. Realizovan je 2002. godine kao naslednik ASP (Active Server Pages, ne treba mešati sa ASP.NET, isto kao što Visual Basic ne treba mešati sa Visual Basic.NET) tehnologije koja je koristila VBScript. Za razvoj u ASP.NET neophodno je da poznajete neki od aktuelnih .NET jezika (C#, Visual Basic.NET, F#). C# je najzastupljeniji i sličan je Javi, tako da, ukoliko imate već iskustva sa Javom, C# vam neće predstavljati problem.

Zbog čega razvijati u ASP.NET pored već postojećih alternativa?

Dobro pitanje. Najveći broj junior developera koji žele da razvijaju za web se prvo upoznaju sa PHP-om. PHP je dinamički, skriptni jezik razvijen specijalno za potrebe web sajtova. Ima podršku mnogih korporacija i mnoštvo dostupnih radnih okvira. Na prvi pogled sve kod PHP-a je u redu, no glavni problem je što se PHP razvijao organski i što godinama nije postojao utvrđen standard za razvoj web sajtova i aplikacija u PHP-u. To se polako menja od 2014. godine i PHP je sada već zreo jezik, a izlaskom verzije 7 sve više napreduje. Koji su onda razlozi u pitanju?

1. Učenje ASP.NET-a pospešuje znanje C#-a: C# je moderan jezik sintaksno sličan Javi koji je našao svoju primenu ne samo u razvoju aplikacija za Windows, već i u razvoju više-platformskih rešenja (vidi: Xamarin).

2. Učenjem ASP.NET-a steći ćete naviku za korišćenjem MVC frejmvorka: Realno, ovim vas može podučiti i bilo koji moderan PHP framework, ali ASP.NET je strožiji i pomaže vam da se naviknete na to da napravite jasnu podelu između biznis logike (model) i pregleda (view), tj. onog što korisnik vidi u pregledaču, dok se mnogi mlađi PHP developeri zadržavaju na proceduralnom programiranju i retko čak koriste OOP, a kamoli MVC pristup u razvoju.

3. ASP.NET ima prednost u performansama: Pri prvom pokretanju, kod na strani servera se skladišti u DLL fajlove na serveru. Oni se sastoje od Microsoft Intermediate Language (MSIL) koji prevodi Common Language Runtime (CLR, deo razvojnog okvira) i time se postižu bolje performanse od recimo , Python-a ili Ruby-a.

4. ASP.NET ima podršku velike korporacije: Ukoliko dođe do problema, znate kome da se obratite (Majkrosoftu), što je prednost vlasničkih tehnologija .

5. ASP.NET polako postaje open-source: Da, dobro ste pročitali. Majkrosoft poslednjih godina ulaže velike napore da svoje tehnologije omogući i na drugim platformama, što je za svaku pohvalu. Tako sada imamo ASP.NET Core, nadskup ASP.NET-a koji se aktivno razvija i moguće je koristiti ga na i na OS X-u i na Linux-u.

Odabir .NET varijante za razvoj

Ako ste na Linux-u, možete da birate između sledeće dve varijante:

  1. [].NET Core - modularan runtime, nadskup .NET okvira koji se sastoji od CoreFX (set biblioteka) i CoreCLR (prilagođene verzije CLR-a). Ovo je open-source varijanta i njen razvoj možete pratiti na GitHub-u.
    [
    ]Mono - ovu varijantu ne podržava direktno Majkrosoft, ali je takođe open-source i dosta je rasprostranjen izbor za razvoj .NET aplikacija na OS X-u i Linux-u (ovde će takođe biti razmatrana ova varijanta). Ovo je varijanta koja pruža odličnu podršku dok .NET Core ne sazri dovoljno da bi se mogao koristiti u produkciji.
Instalacija

Instalacija je vršena na TRIOS Mia RC23, ali bi trebala da prođe identično i na Ubuntu 14.04+ i ostalim novijim Debian derivatima.
  1. Instalirajte unzip i curl ukoliko već nisu instalirani na vašem sistemu:
sudo apt-get install unzip curl
  1. Nakon toga, instaliraćemo .NET Version Manager (DNVM):
curl -sSL https://raw.githubusercontent.com/aspnet/Home/dev/dnvminstall.sh | DNX_BRANCH=dev sh && source ~/.dnx/dnvm/dnvm.sh
Da proverite da li je sve prošlo kako treba, pokrenite dnvm iz Terminal-a.

View attachment 3005

Sada ćemo instalirati .NET Execution Environment (DNX) za Mono.
  1. Instalirajte Debian-ov mono-complete paket koji sadrži potreban runtime i priključke.
sudo apt-get install mono-complete

Ovo može potrajati oko par minuta. Komandom mono --version možete proveriti da li je mono instaliran.
  1. Pomoću sledeće komande preuzmite potrebne sertifikate:
mozroots --import --sync
View attachment 3006
  1. Sada ćemo iskoristiti DNVM da instaliramo DNX za Mono:
dnvm upgrade -r mono
  1. Ovaj korak mi je bio neophodan za pokretanje ASP.NET servera, no ne znači da će i vama biti. Za svaki slučaj, instalirajte i paket mono-xsp4 (ukoliko je već instaliran, bićete obavešteni o tome) kako bi sve prošlo što je moguće bolje sa pokretanjem jer se dešava da ovaj aspekt ne bude dobro konfigurisan.
sudo apt-get install mono-xsp4
  1. Ostalo je još da instaliramo libuv, asinhronu IO biblioteku za hostovanje ASP.NET 5 web aplikacija.
sudo apt-get install make automake libtool curl curl -sSL https://github.com/libuv/libuv/archive/v1.8.0.tar.gz | sudo tar zxfv - -C /usr/local/src cd /usr/local/src/libuv-1.8.0 sudo sh autogen.sh sudo ./configure sudo make sudo make install sudo rm -rf /usr/local/src/libuv-1.8.0 && cd ~/ sudo ldconfig


Testiranje

Ostalo nam je još da testiramo da li ASP.NET server radi 🙂 Otvorite svoj omiljeni uređivač teksta i unesite sledeće:

Code:
<%@ Page Language=“C#” %>
Test
[HEADING=1]Kalendar[/HEADING]
I sačuvajte ga kao main.aspx. U istom direktorijumu pokrenite web server.
xsp4 --port:9000
View attachment 3007

Možete podesiti bilo koji slobodan port u parametru. Sada u pregledaču posetite sledeći URL:

[URL='http://localhost:9000/main.aspx[/URL]']http://localhost:9000/main.aspx[/URL]

I trebala bi vam se u nekoliko sekundi prikazati ovakva stranica:

View attachment 3008

Server prekidate pritiskom na dugme Enter u Terminalu. Ovo je lagana varijanta, a ASP.NET možete hostovati i preko mod_mono[/URL] i FastCGI.

Šta dalje?

Ukoliko već imate iskustva sa C# i [URL='http://VB.NET']VB.NET
, preuzmite Mono Develop razvojno okruženje. Većina tutorijala i priručnika pisana je za Windows okruženje, no sem nekih specifičnosti vezanih za Visual Studio i Windows, sve ostalo je isto.

Ukoliko nemate iskustva sa C#, možete ga naučiti i na Linux-u. Microsoft Virtual Academy hostuje tutorijale za Microsoft tehnologije, između ostalog i C#.

C# Fundamentals for Absolute Beginners

Ukoliko imate neka dodatna pitanja, pišite u temi 🙂

 
Last edited:

SickDope

Active member
Joined
Jul 21, 2015
Messages
120
Reaction score
28
@Zeyn

Odličan tekst, koristio sam Mono i radio sam isključivo konzolske aplikacije na Linux-u. Da li se mogu, i ako mogu kako da pisem WPF aplikacije?
 
Last edited:

Zeyn

Member
Joined
Feb 17, 2016
Messages
251
Reaction score
1
alt
SickDope:
Da li se mogu, i ako mogu kako da pisem WPF aplikacije?
Nažalost, ne. Postojala je alternativa bazirana na Microsoft Silverlight, pod nazivom Moonlight, ali se ni ona više ne razvija.

Inače, WinForms i GTK# aplikacije možeš da pišeš i pod Linuksom (ako te zanima GUI programiranje). Windows Forms 2.0 je potpuno podržan.
 
Last edited:
Top