Rularea ASP.Net pe un server bazat pe Linux (Programare, Asp.Net, Linux, Mono)

Pentru un dezvoltator cu experiență în Java, sunt interesat să explorez dezvoltarea de software folosind și instrumentele/platforma ASP.NET.

Aplicațiile web Java (.jsp și servlets) pot rula pe mai multe platforme de server.

Întrebare: O aplicație web .NET va putea rula pe un server bazat pe Linux? Având în vedere scenariul de a nu putea utiliza un server Windows pentru găzduirea unei aplicații web.

13 răspunsuri

Depinde de tehnologiile .NET specifice pe care le folosiți. Site-ul Proiectul Mono oferă un modul Apache (mod_mono) pentru rularea site-urilor ASP.NET și, din câte am înțeles, funcționează bine.

Totuși, Mono nu suportă toate API-urile .NET – în special WPF (și posibil și WCF, nu-mi amintesc) – dar oferă un suport bun pentru multe alte părți ale cadrului.

Dacă porniți de la zero și doriți în special să vizați serverele non-Windows, atunci ar fi bine să vă asigurați că proiectul dumneavoastră funcționează cu Mono. Cu toate acestea, dacă aveți nevoie de anumite API-uri sau caracteristici ale limbajului care nu sunt suportate de Mono, atunci va trebui să utilizați un server Windows pentru implementare. Este o alegere de proiectare/arhitectură pe care ar trebui să o faceți în avans.

Comentarii

  • pentru informarea dvs., mentorul proiectului Mono are un răspuns și la această întrebare. –  > Por Joel Coehoorn.
  • Dacă nu sunteți familiarizați cu proiectul Mono și cu mentorii acestuia, acest răspuns este cel la care se referă Joel. –  > Por alastairs.
  • Am o pagină asp.net pe care vreau să o integrez cu site-ul principal php pe un server linux. Este posibil acest lucru? Într-adevăr, Este posibil să aveți php și asp.net pe același server linux? –  > Por Hosein Aqajani.

Deci, știu că este o întrebare mai veche, dar cred că ar putea suporta un răspuns actualizat.

Microsoft a lansat oficial asp.net vnext și este open source și poate fi implementat atât pe Linux cât și pe Mac. Totul este încă destul de nou, dar se bazează pe cele mai recente versiuni de mono și, prin urmare, în prezent este nevoie să compilați mono-framework dar, în timp, bănuiesc că va fi mai ușor de accesat pe măsură ce diverse distribuții Linux vor lansa versiuni actualizate de mono. Acesta este un ghid de configurare

Aceste informații pot fi oarecum volatile și, odată cu actualizările, se pot schimba.

Actualizare ASP.NET CORE 11/10/2017

Comentarii

  • Începând de astăzi, ce servere web linux sunt acceptate de ASP.NET Core? –  > Por MrCalvin.

Poate doriți să luați în considerare acest ghid care ajută dezvoltatorii Windows să își porteze codul la Mono/Linux:

Ghid: Portarea aplicațiilor ASP.NET – Mono

Pot vorbi din experiență. Chiar dacă site-ul dvs. ASP.net utilizează doar biblioteci .NET acceptate de Mono, veți avea dificultăți în a face să ruleze dacă este ceva mai mult decât Hello World.

Nu va trebui să rescrieți prea mult cod, dar veți petrece ore/zile/săptămâni ocupându-vă de mici probleme legate de configurația mod_mono/xsp/apache și de permisiunile fișierelor, de gestionarea erorilor și de toate lucrurile mărunte care intră în componența unui site web mare. (Fiți pregătiți să petreceți mult timp punând întrebări pe serverfault 🙂 )

Problema este că o mulțime de oameni nu folosesc Mono pentru site-urile ASP.net și, prin urmare, nu există atât de mulți oameni care să raporteze erori, astfel încât o mulțime de lucruri care sunt erori minore rămân nerezolvate pentru o perioadă lungă de timp.

Comentarii

  • Recunosc asta, am avut aceleași gânduri și m-am confruntat și eu cu asta într-un proiect real. –  > Por Eslam Hamouda.

Acum puteți publica aplicații ASP.NET 5 în Docker pe Linux cu Visual Studio. Consultați postarea de mai jos de la Scott Haselman

http://www.hanselman.com/blog/PublishingAnASPNET5AppToDockerOnLinuxWithVisualStudio.aspx

Comentarii

  • Nu există niciun server web de producție care să funcționeze cu ASP.NET 5, cu excepția Kestrel, care este doar un server de dezvoltare? Cum poate fi aceasta o opțiune validă, neexistând nicio modalitate de a găzdui un site ASP.NET pe Linux? –  > Por Chris Hawkes.
  • și containerele docker construite pentru Windows rulează numai pe Windows Server 16, deci nu este relevant pentru întrebare –  > Por jocelyn.

Din moment ce tehnologiile evoluează și această întrebare este în top în google, trebuie să includem dincolo de mono noul asp.net core, care reprezintă o rescriere completă a asp.net pentru a rula pentru producție în Linux și Windows și pentru dezvoltare pentru Linux, Windows și Mac:

Puteți dezvolta și rula aplicațiile ASP.NET Core cross-platform pe Windows, Mac și Linux. ASP.NET Core este open source pe GitHub.

Da, putem. să ne familiarizăm cu Proiectul Mono și citiți acest articol pentru a începe.

Comentarii

  • Se vor seta corect toate bibliotecile în formulare web ASP.Net cu Mono în Linux mediu? –  > Por Raja.

Pentru ASP.NET pe Linux, consultați Mono.

Acestea fiind spuse, mii de site-uri rulează pe Windows Server fără nicio problemă. Un server prost configurat cu orice sistem de operare va fi vulnerabil; Linux nu vă va salva de un administrator slab.

Așadar, cred că „cea mai bună practică” a mea pentru depunerea unei aplicații ASP.NET ar fi să folosesc Windows Server 2008 (probabil ediția Web). Și să angajați un administrator bun.

Comentarii

  • Ce zici de problema antivirusului… Windows necesită un software antivirus… cred că asta va crește costul zonei serverului… am dreptate? –  > Por Anand.
  • Majoritatea edițiilor „server” ale produselor antivirus sunt mai scumpe decât edițiile lor „desktop”, adesea de câteva ori mai scumpe, în principal din cauza utilizării preconizate. V-aș recomanda AVG (www.avg.com), ESET (www.eset.com) sau Computer Associates (www.ca.com). –  > Por devstuff.

Puteți utiliza Mono pentru a rula aplicații ASP.NET pe Apache/Linux, însă are un subset limitat față de ceea ce puteți face sub Windows. Cât despre faptul că „ei” spun că Windows este mai vulnerabil la atacuri – nu este adevărat. IIS a avut mai puține probleme de securitate în ultimii doi ani decât Apache, dar în ambele cazuri totul depinde de administrarea cutiilor – ambele sisteme de operare pot fi securizate cu ușurință. În zilele noastre, punctele de atac nu sunt sistemul de operare sau software-ul serverului web, ci aplicațiile în sine.

Comentarii

dotnet este casa oficială a .NET pe GitHub. Este un punct de plecare excelent pentru a găsi multe proiecte OSS .NET de la Microsoft și din comunitate, inclusiv multe care fac parte din Fundația .NET.

Acesta poate fi un bun început pentru a sprijini Linux.

În zilele noastre, .Net rulează pe mai multe platforme, cum ar fi Linux, Mac os etc., dar mono nu este complet independent de platformă, deoarece pentru a implementa .NET în alt sistem de operare este nevoie de software terț, așa că nu este independent de platformă ca java.

Mono rulează pe platforme diferite, deoarece JIT este prezent în diferite sisteme de operare.

Mono nu este un succes deplin în moonlight (lumina de argint în .NET) .Nu doar cercetarea este în curs de desfășurare.

Mono folosește serverul XSP2 sau Apache. unele dintre marile companii folosesc acest proiect, iar unele dintre proiectele de robotică rulează, de asemenea, pe Mono.

Pentru mai multe detalii http://www.mono-project.com/Main_Page.

Există proiectul Mono de la Novell care vă va permite să rulați ASP.Net pe Apache.

http://www.mono-project.com/Main_Page

Proiectul Mono este cea mai bună opțiune. Cu toate acestea, are o mulțime de capcane (cum ar fi suportul incomplet pentru API-uri în unele domenii) și este neclar din punct de vedere juridic (oameni precum Richard Stallman au luat în derâdere utilizarea Mono din cauza posibilității ca Microsoft să se răzbune pe Mono prin utilizarea drepturilor sale de brevet, dar aceasta este o altă poveste).

Oricum, Apache suportă .NET/Mono printr-un modul, dar ultima dată când am verificat versiunea furnizată cu Debian, aceasta oferea suport doar pentru limbajul Perl; nu pot spune dacă s-a schimbat de atunci, poate mă poate corecta altcineva în acest sens.