2009-07-12 19 views
84

Per uno sviluppatore con uno sfondo Java, sono interessato a esplorare lo sviluppo di software utilizzando anche la piattaforma/strumenti ASP.NET.Esecuzione di ASP.Net su un server basato su Linux

Le applicazioni Web Java (.jsp e servlet) possono essere eseguite su molte piattaforme server.

Domanda: È possibile eseguire un'applicazione Web .NET in un server basato su Linux? Considerando lo scenario di non essere in grado di utilizzare un server Windows per ospitare un'app web.

risposta

61

Dipende da quello che specifiche tecnologie .NET che si sta utilizzando. Il Mono Project fornisce un modulo Apache (mod_mono) per l'esecuzione di siti ASP.NET e da ciò che ho capito funziona bene.

Mono non supporta tutte le API .NET, tuttavia - in particolare WPF (e forse anche WCF, non ricordo) - ma fornisce un buon supporto per molto altro framework.

Se stai partendo da zero e in particolare desideri indirizzare i server non Windows, assicurarti che il tuo progetto funzioni con Mono sarebbe un buon obiettivo da raggiungere. Tuttavia, se occorrono particolari API o funzionalità linguistiche non supportate da Mono, sarà necessario utilizzare un server Windows per la distribuzione. È una scelta progettuale/architettonica che dovrebbe fare i conti.

+2

fyi, il manutentore del progetto mono ha una risposta anche in questa domanda. –

+7

Se non hai familiarità con il progetto Mono e con i suoi manutentori, [questa risposta] (http://stackoverflow.com/a/1163321/5296) è quella a cui Joel si sta riferendo. – alastairs

+0

Ho una pagina asp.net che voglio integrare con il sito Web php principale in un server Linux. È possibile? In effetti, è possibile avere php e asp.net su uno stesso server linux? –

4

Per ASP.NET su Linux, vedere Mono.

Detto questo, migliaia di siti vengono eseguiti su Windows Server senza problemi. Un server mal configurato con qualsiasi sistema operativo sarà vulnerabile; Linux non ti salverà da un povero amministratore.

Quindi immagino che la mia "best practice" per la descrizione di un'app ASP.NET sarebbe quella di utilizzare Windows Server 2008 (probabilmente edizione Web). E assumere un buon amministratore.

+0

grazie mille – Anand

+0

per quanto riguarda il problema dell'antivirus .. windows richiede un software antivirus .. penso che aumenterà il costo dell'area lato server ... ho ragione? – Anand

+0

La maggior parte delle edizioni "server" di prodotti antivirus sono più costose delle loro edizioni "desktop", spesso diverse volte, principalmente a causa dell'utilizzo previsto. Raccomando AVG (www.avg.com), ESET (www.eset.com) o Computer Associates (www.ca.com). – devstuff

4

È possibile utilizzare Mono per eseguire applicazioni ASP.NET su Apache/Linux, tuttavia ha un sottoinsieme limitato di ciò che è possibile fare sotto Windows. Quanto a "loro" che dicono che Windows è più vulnerabile agli attacchi, non è vero. IIS ha avuto meno problemi di sicurezza negli ultimi due anni rispetto ad Apache, ma in entrambi i casi è tutto merito dell'amministrazione delle scatole - entrambi i sistemi operativi possono essere facilmente protetti. In questi giorni i punti di attacco non sono il sistema operativo o il software del server Web, ma le applicazioni stesse.

+0

vuoi dire ... i server Linux possono anche essere vulnerabili agli attacchi ??? – Anand

+2

qualsiasi cosa potrebbe essere vulnerabile. nulla è sicuro a meno che non sia spento e disconnesso dalla rete – blowdart

+0

@blowdart, in questo momento diamo un'occhiata a facebook esegui su apache http://www.makeuseof.com/tag/facebook-work-nuts-bolts-technology-explained/ – Adrian

5

Sì, possiamo. familiarizzare con Mono Project e leggere this article per iniziare.

+0

Tutte le librerie saranno impostate correttamente in ** forme web ASP.Net ** con 'Mono' in ** ambiente Linux **? – Raja

2

ora un giorno Net viene eseguito in più piattaforme, come Linux, Mac OS ecc ma mono non è completamente indipendente dalla piattaforma, perché per distribuire .NET in un altro sistema operativo richiesto terzi software.so non è come piattaforma java indipendente.

Mono è in esecuzione su una piattaforma diversa, perché JIT è presente in diversi sistemi operativi.

Mono non è completamente al successo al chiaro di luna (luce argentata in .NET). Non solo Ricerca sta succedendo.

Mono utilizza server XSP2 o apache. alcune delle grandi aziende stanno usando questo progetto, alcuni dei progetti robotici sono anche in esecuzione su mono.

Per ulteriori dettagli http://www.mono-project.com/Main_Page.

1

Il progetto Mono è la scelta migliore. Tuttavia, ha molte insidie ​​(come il supporto incompleto dell'API in alcune aree), ed è legalmente grigio (persone come Richard Stallman hanno deriso l'uso di Mono a causa della possibilità che Microsoft scenda su Mono usando i suoi diritti di brevetto, ma questa è un'altra storia).

In ogni caso, Apache supporta .NET/Mono attraverso un modulo, ma l'ultima volta che ho controllato la versione fornita con Debian, ha fornito solo il supporto per il linguaggio Perl; Non posso dire se è cambiato da allora, forse qualcun altro può correggermi lì.

10

posso parlare per esperienza. Anche se il tuo sito Web ASP.net utilizza solo le librerie .NET supportate da Mono, ti sarà difficile riuscire a farlo funzionare se non altro da Hello World.

Non dovrai riscrivere molto codice ma passerai ore/giorni/settimane a occuparsi di piccoli problemi con la configurazione di mod_mono/xsp/apache e le autorizzazioni di file e gestione degli errori e tutte le piccole cose che vanno in un grande sito web. (Preparati a dedicare molto tempo a porre domande su serverfault :))

Il problema è che molte persone non usano Mono per i siti Web ASP.net e quindi non ci sono così tante persone che segnalano bug così un sacco di cose che sono bug minori non vengono corrette per molto tempo.

+0

I Ammetto che, stavo avendo gli stessi pensieri e affrontato che io stesso su un progetto reale. –

77

Quindi so che questa è una domanda più vecchia ma penso che potrebbe sopportare una risposta aggiornata.

Microsoft ha ufficialmente rilasciato asp.net vnext e il suo open source e può essere implementato su Linux e Mac. È tutto ancora piuttosto nuovo ma fa affidamento sulle ultime build di mono e quindi attualmente ha bisogno di compilare il mono-framework ma con il tempo ho il sospetto che sarà più facile accedere come diverse distribuzioni di Linux rilasciano versioni aggiornate di mono. This is a how to setup guide

Queste informazioni potrebbero essere alquanto volatili e con aggiornamenti dovuti a variazioni.

aggiornamento ASP.NET NUCLEO 11/10/2017

+6

ora noto come '.NET Core' e più stabile – GibralterTop

3

dotnet è la sede ufficiale di .NET su GitHub. È un ottimo punto di partenza per trovare molti progetti .NET OSS di Microsoft e della comunità, compresi molti che fanno parte di .NET Foundation.

Questo può essere un ottimo inizio per supportare Linux.

10

Ora è possibile pubblicare l'app ASP.NET 5 su Docker su Linux con Visual Studio. Vedere il post qui sotto da Scott Haselman

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

+0

Non esiste un server Web di produzione che funzioni con ASP.NET 5 tranne Kestrel che è solo un server di sviluppo? In che modo si tratta di un'opzione valida senza alcun modo di ospitare un sito Web ASP.NET su Linux? –

+1

ei contenitori docker creati per Windows vengono eseguiti solo su Windows Server 16, quindi non è rilevante per la domanda – jocelyn

Problemi correlati