Come scegliere una lingua / quadro lato server [chiuso]

3

Sto cercando di creare un sistema di elenchi / classifiche per determinare quale lingua del server scegliere per un determinato sito web. Supponiamo che la familiarità con una determinata lingua non sia importante e che l'implementazione possa essere eseguita in qualsiasi lingua. Ecco alcune cose che potrebbero essere importanti ma non sono sicuro di come classificarle:

  • Maintainability.

  • Biblioteche.

Ad esempio, il supporto di Memcached e NoSql a destra della scatola sarebbe davvero una bella aggiunta a un particolare framework.

  • SDK di terze parti.

Ad esempio, se ho bisogno di Paypal sul mio sito, forniscono apertamente gli SDK per tutti i senari in Java, PHP e .Net. Se scelgo Django, dovrei affidarmi a librerie di terze parti che non supportano tutto e non sono mantenute ufficialmente. Sarebbe il dealbreaker di Django?

  • Prestazioni

Questo è difficile da inserire in un elenco generico perché può essere un problema con le offerte, ma per molti siti web le prestazioni non saranno un problema per il quale il linguaggio / framework è responsabile.

  • Costo (hosting, open source).

modifica - Qualche motivo per i voti da chiudere? Non ho visto nessun duplicato menzionato e la domanda non dovrebbe scatenare una guerra di fuoco.

    
posta pllee 27.06.2012 - 20:02
fonte

4 risposte

3

Recentemente ho scritto un blogger su questo argomento (non in inglese, sfortunatamente).

Per me, non hai davvero bisogno di essere così dettagliato. Inizia con il TIOBE top 20, attraversa linguaggi che in realtà non hanno alcun tipo di trazione sul Web (ad esempio C, Logo, ecc.) E ottieni davvero una breve lista. Se vuoi, elimina le lingue non libere. Finisci con meno di 10 lingue, da cui puoi scartarne altre (direi che node.js non è ancora maturo, scarta Javascript, ecc.). Lo ridurrete a poche lingue, che sono molto popolari e dotate di un strong ecosistema: avranno tutte librerie decenti per la maggior parte su tutto, senza differenze significative tra loro (ad es. Java ha tonnellate di librerie, specialmente per roba aziendale, PHP ha l'SDK di Facebook, ecc.) ... quindi dipende davvero dalla scelta personale.

Personalmente, direi (Python + Django) / (Java + Spring) sono le scelte migliori, a seconda che tu voglia un linguaggio dinamico (e l'admin di Django) o una lingua tipizzata in modo statico. Sarei difficilmente in grado di trovare qualsiasi altra opzione che sia "ordini di grandezza migliore" di entrambi.

    
risposta data 27.06.2012 - 20:51
fonte
1

Ci sono così tante opzioni e così tanti "confronti di costo" che dovrai garantire un attento esame dell'intera gamma di costi

Puoi iscriverti a un programma di avvio con Microsofts BizSpark e ti daranno tutto gratis per alcuni anni (3). hanno edizioni esplicite che è possibile scaricare e distribuire. I servizi cloud di Amazons hanno tutti un livello "GRATUITO", che sono piuttosto eleganti per ottenere qualcosa da zero e offrire tutti i tipi di configurazioni .. ecc. La tecnologia sarà probabilmente determinata con quote di budget iniziali e chi sono i tuoi sviluppatori.

TUTTAVIA, i costi e le ipotesi tecnologiche sono solo una piccola parte dell'equazione. I costi di sviluppo, i costi di implementazione e i costi di manutenzione variano in base alla piattaforma scelta. Alcuni ti fanno decollare più velocemente, ma la personalizzazione ostacolerà la continua crescita rapida, altri non ti daranno niente in anticipo e richiederanno un master dev per svilupparsi in modo appropriato, tuttavia i costi continui potrebbero essere minimi se progettati correttamente ..

Quindi devi stare attento alla scalabilità .. quando il tuo sito avrà successo, la piattaforma andrà in scala? ci sono dei costi associati al ridimensionamento di cui devi essere a conoscenza .. dovrai distribuire un nuovo webserver, acquistare nuovo hardware? o puoi semplicemente pagare per una maggiore larghezza di banda "di istanza"?

Quindi la logistica della questione ... stai ospitando te stesso? per quanto riguarda il disaster recovery e i sistemi di consegna CDN per garantire tempi di risposta rapidi?

Quindi stai appena scalfendo la superficie con quelle domande .. la scelta della lingua sul lato server ti spingerà sicuramente in certe direzioni, tuttavia, puoi ospitare C # su Apache (mono), e puoi ospitare PHP su IIS ..

puoi inserire alcuni database NoSQL in qualsiasi base di codice, quindi questa sarà una preferenza ... La segnalazione è importante?

le domande e le implicazioni vanno avanti all'infinito ... direi prima di andare oltre ...

What are the requirements for your website?

-what's your budget now and ongoing?
-high traffic? 
-mostly reads or lots of updates?
-how important is data integrity (banking precise?)
-reporting?

... troppi per elencare ..

    
risposta data 27.06.2012 - 22:54
fonte
0

La domanda dipende molto dal tipo di sito che si intende costruire, soprattutto dalla complessità della logica aziendale e dei dati (e dalla dimensione dei dati).

IMHO ci sono 3 casi principali:

a) Piccolo o Piccolo - > Medio

Linguaggio interpretato - Python con Django, PHP con Zend o Ruby con Rails.

Pro: offre la migliore produttività, ovvero è possibile ottenere un prodotto funzionale molto velocemente.

Con: il problema con questo è la logica limitata che può essere applicata alla scalabilità dei dati e ai problemi di prestazioni.

b) Medium

C # utilizzando .NET

Pro: vantaggio in termini di prestazioni e sicurezza rispetto al precedente a causa di un linguaggio compilato e tipizzato; anche molti vantaggi di Microsoft Visual Studio che automatizza moltissimo, dalla distribuzione in cloud al mapping relazionale di oggetti.

Contro: fonte chiusa, costi, Windows limitato;

c) Medio o Grande - dove il middleware ha uno scopo di esistenza

Java usando JSF, Struts o Spring MVC

Pro: progettato per scalabilità e indipendenza dalla piattaforma; ha molte API // framework open source per molte cose (da Spring MVC come framework web a Hadoop per calcolo distribuito o JMS per comunicazioni middleware)

Con: Tipo di complesso

E ora per discutere la mia opinione perché credo che Java sia adatto a grandi applicazioni mentre .NET non lo è. È probabile che un'applicazione di grandi dimensioni sia complessa, quindi deve essere flessibile e personalizzabile; la tecnologia per Java è principalmente open source (e direttamente personalizzabile) mentre la maggior parte della tecnologia per .NET costa denaro e closed source. Ho anche detto che .NET è buono per le automazioni che vengono con VS; ma il problema con questa automazione è che non crea codice flessibile ed elegante. Questo tipo di codice è necessario per essere scritto da un vero programmatore; quindi il denaro pagato per VS e altre tecnologie MS non vale la pena di essere pagato perché l'applicazione deve essere flessibile e il codice deve ancora essere scritto da un vero programmatore. È possibile scrivere applicazioni complesse utilizzando C #, ma non è redditizio. E Java ha anche il vantaggio dell'indipendenza dalla piattaforma.

Solo un'opinione soggettiva.

Mi piace che tu scelga qualcosa dalla prima categoria, dal momento che probabilmente non stai parlando per un'organizzazione abbastanza grande in modo da avere i soldi per la tecnologia Microsoft o per la forza lavoro necessaria per una complessa applicazione Java.

    
risposta data 27.06.2012 - 21:55
fonte
0

Per combinazioni linguistiche + di piattaforma mature e attive, ti consigliamo di attenersi a Java + Spring o GWT, .NET, Ruby on Rails o Python + Django. Puoi anche passare al cliente con es. JavaScript + Ext e un REST potenzialmente molto sottile su back-end JSON; è uno stile architettonico molto diverso. JavaScript + Node.js è una piattaforma da guardare e potrebbe essere appropriata per progetti più piccoli o all'avanguardia.

Oltre la lingua, per la scalabilità potresti anche voler guardare le piattaforme cloud che possono essere ortogonali alle risposte finora (compresa la tua risposta nella tua domanda). Coloro influenzano il linguaggio (Scala?) Ma anche l'architettura delle applicazioni, potenzialmente in modo massiccio. Prendi in considerazione Google App Engine (Java, Python), Amazon EC2, Heroku (Ruby), Oracle cloud, Microsoft ... Dove vuoi ospitare questa cosa e quanto IT vuoi fare? In questi giorni puoi esternalizzare l'intero ambiente di sviluppo da qualche parte come CloudBees o cloud9 .

    
risposta data 27.06.2012 - 22:36
fonte

Leggi altre domande sui tag