Quando utilizzare PHP o ASP.NET? [chiuso]


46

Ho lavorato a lungo nello sviluppo di applicazioni Web utilizzando PHP e ASP.NET, ma una delle domande che mi vengono poste costantemente dai clienti è se andare avanti con un sito Web PHP o un sito Web ASP.net.

Quindi naturalmente la prima cosa che mi viene in mente è di rispondere alla domanda in questo modo:

PHP è open-source e ASP.NET è di Microsoft.

Di solito dopo che una cosa del genere viene detta, il cliente ha un aspetto vuoto lì. Apparentemente il fatto che uno sia open source e l'altro no non li rende davvero sconcertanti. E per una buona ragione, perché quando l'ho sentito per la prima volta, in realtà non mi dice molto.

So lavorando con entrambi che ognuno ha le proprie differenze nello sviluppo di siti Web.

La mia domanda è quali sono le differenze tra ASP.NET e PHP per quanto riguarda

  1. Caratteristiche
  2. Sicurezza
  3. estendibilità
  4. Frameworks
  5. Tempo medio di sviluppo

Sto cercando di compilare un elenco di fatti per poterlo confrontare con il cliente in modo da poter fare una scelta informata sulla piattaforma di sviluppo appropriata.


7
Ho usato entrambi, penso che Visual Studio e ASP.NET siano molto più robusti. Solo l'IDE mi conquista.
The Muffin Man

7
PHP avrà sempre un debole per me perché è stato il mio primo linguaggio di programmazione web ... ma dopo 2 anni di ASP.NET C # semplicemente non potevo tornare indietro ... L'IDE di Visual Studio è meraviglioso!
Dal

Sì, vorrei che PHP avesse una sorta di IDE principale, ma immagino che ciò ucciderebbe lo stesso spirito di PHP come open source. Sicuramente un fattore da considerare.
Edward,

2
6. Costo per la durata del progetto?
VirtuosiMedia,

@VirtuosiMedia un altro fattore importante che non ho menzionato.
Edward,

Risposte:


39

Funzionalità , sicurezza ed estendibilità saranno più o meno le stesse. Cosa si può fare con PHP può essere fatto con ASP.NET.

Frameworks - Ancora una volta, quando si tratta di funzionalità di framework, sarà più o meno lo stesso. Tuttavia, essendo più specifico della lingua stessa, ti consigliamo di considerare:

  • Ciò con cui i tuoi sviluppatori sono più a loro agio. Conoscenza = efficienza .
  • Su base progetto per progetto, un framework in una lingua potrebbe essere un adattamento naturale migliore di un framework in un'altra lingua. Essere più specifici della lingua stessa significa che una struttura non può fare a meno di essere adatta ad alcuni compiti e meno adatta ad altri.

Tempo medio di sviluppo - Il tempo medio di sviluppo per un progetto molto piccolo potrebbe essere migliore con PHP poiché gli host web sono così facili da trovare e sviluppano macchine così facili da configurare. Tuttavia, con qualcosa di più grande, a patto che tu abbia dei buoni sviluppatori o sia già pronto per entrambi, probabilmente sarà un lavaggio.


La considerazione principale che dovresti prendere è quale stack tecnologico il tuo cliente vuole essere legato per andare avanti. Nessuno dei due si mescola bene (facilmente) con l'altro. Potrebbero avere sviluppatori che hanno familiarità con l'uno o l'altro.

  • Se al tuo cliente piace l'idea di essere connesso a Microsoft, scegli ASP.NET. Alcuni clienti avranno più conforto riguardo supporto futuro, aggiornamenti, ecc. Con MS.

  • Se a loro piace l'idea di server open source e Linux, scegli PHP . Ciò potrebbe interessare alcuni clienti a causa della trasferibilità di host web, software libero, ecc.

E infine, se a loro non importa, allora vai con quello che ti fa sentire più a tuo agio . Non c'è molto altro oltre a questo.


8
+1 per "La considerazione principale che dovresti prendere è quale stack tecnologico il tuo cliente vuole essere legato per andare avanti."
Sistema

diramazione della sicurezza non ci sono risorse per vedere come ha funzionato ciascuna piattaforma?
Edward,

3
@loyalpenguin - questa è una domanda in sé e per sé. Non sono sicuro di cosa intendi per "come ha funzionato ciascuna piattaforma", ma se stai parlando di buchi di sicurezza della piattaforma (che sono quasi sempre patchati rapidamente) questa è l'ultima delle tue preoccupazioni. Per la maggior parte, ogni lingua è "sicura" come lo sviluppatore che sta scrivendo il codice.
Nicole,

buon punto. Solo un'ultima domanda. Come potrei uscire dalla domanda che è più sicura allora?
Edward,

@loyalpenguin quando dico che è una domanda diversa, intendo in un certo senso che la domanda è "I problemi di sicurezza della piattaforma sono un grave motivo di preoccupazione nelle app Web? In tal caso, come posso analizzare quale ha una cronologia migliore tra le varie piattaforme, come PHP, ASP.NET, Java, Ruby on Rails, ecc.? " Per me, non sono così sicuro che in realtà sia un grande motivo di preoccupazione.
Nicole,

29

Solo per dare un'idea di ciò su cui sto basando le mie risposte, ho fatto lo sviluppo di PHP in modo professionale per 6+ anni, ho giocato con ASP.NET MVC per circa gli ultimi 3-4 mesi e ho fatto C # programmazione per circa la durata della programmazione PHP.

Per me questo è più un argomento PHP vs C # che uno PHP vs ASP.NET.

Funzionalità / estendibilità
Penso che ASP.NET vinca qui e questo è più dovuto alla capacità di usare un linguaggio come C #. C # è un linguaggio molto migliore di PHP con il supporto OO. Sono anche una persona che preferisce un linguaggio tipizzato staticamente (anche pensato con C # 4.0, credo che tu possa fare variabili tipizzate dinamicamente). L'unica cosa che PHP aveva su C # per quanto riguardava una funzione del linguaggio erano i parametri opzionali, ma questa è un'altra cosa che è stata aggiunta in C # 4.0 (non sono sicuro di come funzioni perché non l'ho ancora provato).

Sicurezza
Probabilmente direi che è un lavaggio tra i due. Penso che entrambi abbiano funzionalità in atto per aiutare con la sicurezza, ma alla fine è il compito del programmatore assicurarsi che la loro applicazione sia sicura.

Frameworks
Beh, PHP sembra avere molti più framework mainstream (CakePHP, Codeigniter, Symfony, Zend Framework) e molti altri framework più piccoli di ASP.NET. ASP.NET ha 2 framework principali di Microsoft, WebForms (un pezzo di merda) e ASP.NET MVC (il motivo per cui ho iniziato ad entrare nello sviluppo di ASP.NET). Mentre PHP ha più framework, trovo che ASP.NET MVC 3 framework sia migliore di qualsiasi framework PHP.

Tempo medio di sviluppo
Penso che per i progetti più piccoli il tempo di sviluppo sia molto migliore in PHP, tuttavia, man mano che il progetto aumenta di dimensioni, C # si adatta meglio a questo riguardo.

Costo
Alcuni che dovrebbero essere allevati sono i costi. PHP passa in basso vince su questo fronte. Sebbene sia possibile eseguire ASP.NET su Mono in Linux, presenta alcuni problemi.

Se stai realizzando un progetto di dimensioni medio-piccole e / o il costo è un fattore, PHP vince. Se stai facendo un progetto su larga scala, sceglierei ASP.NET con C # e ASP.NET MVC.


3
I moduli Web hanno comunque dei vantaggi. Ad esempio, le migliaia di controlli pronti all'uso per la creazione rapida di app Web sono stati un vantaggio per la vendita dei miei clienti su un sito Web.
Edward

1
Sono d'accordo con @ryanzec WebForms non è una schifezza ed è buono come ASP.NET MVC da una prospettiva diversa. Ho usato il framework ASP.NET MVC dall'anteprima 2 della prima versione in un ambiente commerciale. Inoltre ho usato WebForms negli ultimi 7 anni. Inoltre, non puoi più discutere dei costi per ASP.NET, Microsoft fornisce strumenti gratuiti, ora è meglio di quello che offre PHP. Inoltre Microsoft fornisce una versione gratuita di SQL Compact e SQL Server. Oggigiorno l'hosting di terze parti per .NET è paragonabile a Linux.
Nickz,

Mentre concordo sul fatto che il costo dell'hosting ASP.NET è migliorato, posso ancora trovare l'hosting LAMP VPS più economico rispetto all'hosting Windows VPS.
Ryanzec,

Anche al punto su WebForm, dire che è una merda potrebbe essere stato duro, non è solo la mia tazza di tè. È vero che puoi alzare le cose più velocemente comunque una volta che provi a fare qualcosa al di fuori di ciò che ti viene fornito dai componenti o una volta che cosa modifica pesantemente un componente esistente, diventa esponenzialmente più difficile. Anche l'intero modo in cui il sistema funziona con i postback e roba del genere mi sembra ingombrante anche per lo sviluppo web. Preferisco ASP.NET MVC in quanto mi dà il controller al 100% di ciò che è stato creato e adatto allo sviluppo web molto meglio secondo me.
Ryanzec,

8

PHP vs ASP.NET è come confrontare mele e arance, lì destinate a soluzioni diverse.

PHP è un framework più adatto per soluzioni di avvio su piccola scala. PHP funzionerà o Linux, Windows senza troppi requisiti. Microsoft ASP.NET è un framework di forza industriale, che ha tutto ciò che si possa immaginare e altro ancora. ASP.NET è un ambiente molto ricco di funzionalità pronto all'uso. Molti sosterranno che ASP.NET è costoso, come alcuni anni fa, ma non più. Innanzitutto gli strumenti sono gratuiti (edizioni express), le opzioni del database sono gratuite (SQL Compact o SQL Server 2005 o superiore Express). Acquista hosting è ora molto economico, quindi la domanda non è quale sia la soluzione migliore, ma quale sia più adatta alla tua soluzione. Personalmente preferisco ASP.NET, ma è perché lavoro in un ambiente aziendale in cui la flessibilità e la scalabilità sono molto importanti, quindi le soluzioni dettano il framework.

Una cosa molto importante è in che lingua sei meglio? Questo dovrebbe essere il fattore finale nella decisione.

Se il tuo obiettivo è convincere un cliente, allora asp.net è un'opzione migliore. Il nome di una grande azienda che sostiene una lingua fa sentire a proprio agio un cliente. In questo caso le opzioni migliori sono (Microsoft) ASP.NET e (Oracle) Java JSP.

EDIT: ricco di funzionalità : ASP.NET offre due alternative alla creazione di un WebForms di un sito Web e all'approccio MVC. A parte il framework .NET, devi disporre di funzionalità molto potenti come WF (flusso di lavoro), DLR (Dynamic Language Runtime), Parallel Linq, Linq, routing, varie forme di gestione dello stato dei dati: elementi HTTPContext, ViewState, Cache di runtime, pagina cache di output, tre diversi tipi di implementazione della sessione InProc, State e SQL Server. ASP.NET implementa varie forme di sicurezza, ad esempio provider di appartenenze e provider di ruoli. Non voglio impacchettare PHP, ma ASP.NET è in una lega diversa.


5
Ho sempre sentito questo come una scusa, che "Microsoft = costoso", motivo per cui ho imparato prima PHP. Ma devo essere d'accordo sul fatto che non è più il caso.
Edward,

Sì, il campo di gioco è abbastanza uniforme ora, è difficile sapere quale lingua usare in questi giorni.
Nickz,

Che cosa significa esattamente "quadro forza industriale" media ? "Tutto quello che potresti mai immaginare e altro"? "Ambiente ricco di funzionalità pronto all'uso"? Come è ASP.NET queste cose, in modi in cui PHP non lo è? Fino a quando non lo avrai spiegato, questo è solo il linguaggio pubblicitario di Microsoft.
Nicole,

obiettivi di progettazione-php originariamente era sinonimo di home page personali ed è stato progettato per rendere semplici gli script sul lato server. asp.net è stato creato per competere con java ee come soluzione di livello aziendale. php ha assimilato molte funzionalità nel corso degli anni, ma questa "funzionalità che affronta" passa attraverso incoerenze linguistiche e stranezze della piattaforma. uso spesso php, ma è ed è stato progettato per essere un linguaggio web, non una piattaforma di programmazione per scopi generici
bunglestink

6

Avendo lavorato a lungo con entrambi, sai già che le risposte saranno diverse a seconda del problema e del cliente. In un senso molto generico:

  • PHP è ottimo per i progetti che devono lavorare con un budget limitato. Ad esempio, non sarai colpito con le tasse di licenza di grandi database.
  • ASP.NET è ottimo per i progetti che richiedono il tipo di supporto e cultura degli sviluppatori forniti da Microsoft.

Se stai compilando un elenco di fatti per i tuoi clienti, basalo su ciò che sai. La tua ricerca, non importa quanto siano distorti i tuoi risultati, va bene per ottenere i tuoi punti elenco.


8
Mi dà un po 'fastidio quando .Net viene automaticamente associato a "tariffe di licenza per grandi database". Ovviamente devi sapere che .Net può interfacciarsi con una varietà di RDBMS, gratis e no, e ovviamente anche PHP, gratis e no (e non è che Microsoft sia l'unico RDBMS popolare con grandi spese di licenza).
Quentin-starin,

3
Per non parlare del fatto che le versioni Express e Web di SQL Server hanno tariffe di licenza molto più appetibili (gratuite nel caso di Express).
Quentin-starin,

Siamo spiacenti, non intendevo irk. MS sembra vendere meglio come uno stack completo e stavo assumendo un motore DB più grande di Express.
Fred Wilson,

1
Non preso sul personale, mi sembra di vedere l'associazione fatta abbastanza spesso.
Quentin-starin,

1
@loyalpenguin: Nella mia esperienza, è raro trovare un motore di archiviazione che non è supportato in .Net. Non posso commentare se questo è vero con PHP.
Quentin-starin,

1

I controlli .net sono molto più belli di quelli che puoi trovare con una piattaforma PhP. Guarda Infragistics per esempio, qual è l'equivalente per una LAMPADA?

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.