Come funziona Ruby, Python, PHP senza Spring?

13

Scrivo applicazioni Java aziendali e servizi Web al lavoro ( Spring , Hibernate, Maven, RESTEasy) e PHP (CakePHP ) e Python (Django) per i miei progetti collaterali.

Mentre vedo il valore di Inversion of Control, Aspect Oriented Programming ecc. che la Spring introduce, non sono sicuro di quanto massicce applicazioni web che non sono nello stack Java gestiscano senza un framework come Spring.

Quindi, gli sviluppatori devono solo "tollerare" componenti strettamente accoppiati e altre lamentele che Spring elimina o mi sfugge qualcosa?

Per chi non ha familiarità con Spring, le funzionalità che usiamo di più sono:

  • Inversion of Control container: configurazione dei componenti dell'applicazione e del ciclo di vita gestione di oggetti Java,

  • Programmazione orientata agli aspetti: consente l'implementazione di routine cross-cut,

  • Gestione delle transazioni: unifica diverse API di gestione delle transazioni e coordina le transazioni per gli oggetti Java.

posta rdasxy 04.11.2011 - 21:58
fonte

4 risposte

15

Altre piattaforme non hanno bisogno di Spring perché quelle lingue non sono nemmeno lontanamente restrittive come Java.

Darò un esempio con node.js

  • Inversione del contenitore di controllo: configurazione dei componenti dell'applicazione e gestione del ciclo di vita degli oggetti Java

la configurazione del server viene eseguita sia in codice che in un semplice file di configurazione di json. Per quanto riguarda i sistemi IoC generici, semplicemente non ne abbiamo bisogno, Javascript è un linguaggio espressivo e dinamico. Sì, hai bisogno di IoC ma è semplice, passa le dipendenze agli oggetti come parametri di funzione.

  • Programmazione orientata all'aspetto: consente l'implementazione di routine di taglio trasversale

Semplicemente non penso che abbiamo bisogno di qualcosa di simile, scriviamo codice modulare e funziona.

  • Gestione delle transazioni: unifica diverse API di gestione delle transazioni e coordina le transazioni per gli oggetti Java

noSQL è incredibilmente popolare. Non esiste la nozione di transazione.

Personalmente direi che tali sistemi sono gonfiati e sovradimensionati e semplicemente non ne hai bisogno. Altre lingue e piattaforme rimangono semplicemente snelle e agili.

    
risposta data 04.11.2011 - 23:57
fonte
15

Nella maggior parte dei linguaggi di alto livello è banale scrivere usando i principi di progettazione AOP e / o IoC.

Tutto ciò che serve per implementare AOP è che la lingua supporti le funzioni di ordine superiore. Ad esempio:

def log(fn):
  def wrapped_fn(*a, **kw):
    logger.log(fn_formatter(fn, a, kw))
    return fn(*a, **kw)
  return wrapped_fn

@log
def do_something(my_friend):
  return have_fun_with(my_friend)

Durante la programmazione è anche possibile seguire i principi generali di IoC o di dipendenza. Non è necessario un contenitore particolare per fornire tale funzionalità. Puoi semplicemente scrivere il codice in questo modo.

def etl(iextract, transformations, iload):
  return iload(itertools.imap(compose(*transformations), iextract()))
    
risposta data 05.11.2011 - 05:18
fonte
9

Bene Python gode anche della primavera Spring Python .

Il framework Spring è stato creato per facilitare lo sviluppo di Java e ciò che è vero per lo sviluppo di Java non è necessario per lo sviluppo di Ruby o Python.

Ruby ad esempio ha capacità di Metaprogramming che significa che puoi creare il tuo AOP personale.

Per ironia della sorte, i nuovi framework web Java stanno cercando di catturare i framework di Django e Rails (vedi i framework Grails e Play! ad esempio).

    
risposta data 04.11.2011 - 23:35
fonte
3

Per Python, BlueBream (alias Zope 3) fornisce ciò che fa Spring e altro.

Complessità e potere hanno un costo, ci sono dei momenti in cui non vuoi pagarlo.

Molti programmatori trovano BlueBream scoraggiante e troppo per ciò che devono fare, preferiscono strumenti più snelli e più piccoli. La maggior parte delle altre soluzioni (Django, ecc.) Sono basate sul paradigma MVC.

Puoi vedere forze simili in azione anche nello spazio Java, con cose come la bellissima Playframework .

    
risposta data 05.11.2011 - 17:34
fonte

Leggi altre domande sui tag