riflettendoci, avevo raggiunto una conclusione simile, anche se non ho
verificato,
quindi grazie per la spiegazione.

ovviamente adesso funziona tutto e abbiamo il layer delle form separato da
quello del db.

Gianni

2009/12/10 Simone Deponti <[email protected]>

> On Wed, 9 Dec 2009 12:36:06 +0100
> Gianni Cozzolongo <[email protected]>
> wrote:
>
>
> Ciao,
>
> >
> > e' necessario creare un istanza dell'utility ogni volta che si vuole
> > accedere al db?
> >
>
> La risposta breve: no.
>
> La risposta lunga:
>
> non ne sono sicuro al 100% perché non mi sto a spulciare gli internals
> di Z3 ogni giorno, ma il codice:
>
> fancy_utility = getUtility(IFancy, u"fancyutility")
>
> non è detto che crei sempre l'utility: diciamo, semplificando davvero
> molto, che zope si tiene le chiamate a getUtility in cache e se hai già
> chiamato getUtility con quei parametri ti ritorna direttamente l'istanza
> dell'utility senza __call__are il factory di nuovo.
> Detto ciò, io non farei però conto sul fatto che quell'istanza sia un
> singleton, difatti se non ricordo male questa "specie di cache" del
> component registry è threadlocal.
> In sostanza è molto difficile sapere se è un'istanza "nuova" o
> "vecchia" ma il fatto è che, per quanto riguarda le utility, non
> dovrebbe importartene a livello di logica.
>
> Per quanto riguarda le prestazioni beh, non ti devi preoccupare perché
> ci ha già pensato Z3 ;)
>
> Riassumendo, consiglio di fare i getUtility sempre all'interno di un
> metodo: nell'__init__ se viene usata in più metodi o direttamente nel
> metodo (senza agganciarla al self) se va usata solo in quello.
>
> _______________________________________________
> Plone-IT mailing list
> [email protected]
> http://lists.plone.org/mailman/listinfo/plone-it
> http://www.nabble.com/Plone---Italy-f21728.html
>
_______________________________________________
Plone-IT mailing list
[email protected]
http://lists.plone.org/mailman/listinfo/plone-it
http://www.nabble.com/Plone---Italy-f21728.html

Rispondere a