[Python] Programmazione web
Manlio Perillo
manlio_perillo a libero.it
Ven 25 Apr 2008 15:56:31 CEST
Lawrence Oluyede ha scritto:
> On Fri, Apr 25, 2008 at 3:09 PM, Manlio Perillo
> <manlio_perillo a libero.it> wrote:
>> No, non è affatto necessario.
>
> Certo, ma io parlavo di comodità di API, per questo esistono le
> librerie e poi i framework.
>
Anche io.
>> E lo stesso per l'oggetto Response, wsgiref contiene una classe Headers
>> per gestire gli headers, infatti io uso quella.
>
> È quel che ho detto io. Alla fine finiresti con usare delle funzioni
> di utility, che siano scritte da te o meno :)
>
Si, ma appunto WSGI è nato per essere così; non è una libreria.
Il mio dubbio riguarda come debbano essere scritte queste librerie di
supporto.
Se aumentare l'astrazione, oppure se cercare di restare a basso livello.
>> In Python abbiamo la fortuna di avere dizionari che possono contanere
>> qualsiasi oggetto, perchè mai dobbiamo introdurre una classe Request?
>
> Perché ciclare, iterare o interrogare un dizionario ha meno semantica
> che request.params o request.is_authenticated.
Boh, probabilmente sfugge qualcosa a me perchè non vedo grosse
differenze in semantica tra:
environ['is_authenticated'] e
request.is_authenticated
e non capisco perchè parli di ciclare ed iterare sul dizionario.
> Non sto sostenendo che sia utile o fondamentale usare astrazioni, solo
> che a volte è comodo.
>
>> Avere oggetti di questo tipo mi sembra più che altro una necessità che
>> si ha nei linguaggi staticamente tipizzati, ma non di certo in Python.
>
> Cosa c'entra la tipizzazione del linguaggio con un API?
>
Perchè con i linguaggi a tipizzazione statica devi per forza introdurre
una oggetto aggiuntivo per gestire lo stato della request.
>> Tutto lo stato (incluso le opzioni, ad esempio caricate da un file di
>> configurazione tramite un middleware) sono nel `environ`.
>
> Come in Pylons
>
Ah, non lo sapevo.
>> Se un middleware non è ben scritto e "rompe" la tua applicazione, non lo
>> usi. Quale è il problema?
>
> Certo, e magarti di devi scrivere tu la funzionalità per la quale in
> un qualsiasi framework ben fatto (non faccio nomi... Django) ti basta
> importare una linea e scrivere un if
>
Mi faresti un esempio pratico?
In effetti a tutt'oggi non sono ancora riuscito a vedere un esempio (con
commenti) di middleware scritto male.
E' davvero così difficile sistemare questi middleware?
>> > Tra l'altro framework
>> > come Pylons wrappano la tua applicazione con 3 o 4 middleware ogni
>> > volta, il che rende difficile qualsiasi tipo di debug cross-middleware
>> > (data la natura opaca del modello)
>> >
>>
>>
>> Mi interessa questo aspetto, mi potresti dare maggiori informazioni?
>
> Crea una Pylons application, vai a guardare middleware.py o fai
> partire l'applicazione e fai "paster shell" esplorando l'oggetto app
> che ti viene fornito
>
>> Io fino ad ora non ho incontrato problemi, anzi con i middleware (ma
>> fino ad ora direi che ne sto usando solo di semplici) trovo che
>> l'applicazione si gestisca meglio.
>
> Io preferisco il modello Django, non ne faccio segreto con nessuno.
Anche a me piace Diango, anche se certe cose sono fatte effettivamente
male (ma vabbe, non si può sperare di fare tutto bene).
> Trovo che WSGI sia una gran cosa per sostituire CGI e per comunicare
> con un web server, un po' meno per il collage.
Ma infatti WSGI è nato per comunicare con il web server ;-).
> Ma questa è la mia
> esperienza da settembre con Paste e Pylons, nulla più
>
Le cose sono tre:
1) WSGI 1.0 è stato scritto male
2) WSGI 1.0 è troppo difficile da usare bene
3) Paste e Pylons sono scritti male
Manlio Perillo
Maggiori informazioni sulla lista
Python