2010-01-04 15 views

Respuesta

4

Esto realmente depende mucho del mecanismo que está utilizando para el acceso a los datos. Si tiene un acceso a datos muy escalable y muchos hilos, puede ser ventajoso usar algún tipo de acceso a datos estáticos de hilo.

Si no tiene acceso a datos escalables, su proveedor no admite múltiples hilos por proceso, o simplemente no necesita la escalabilidad en ese punto, usar un singleton con la sincronización adecuada es más simple y más fácil de implementar .

Para la mayoría de las aplicaciones de estilo empresarial, personalmente creo que el enfoque singleton es más fácil de mantener, y probablemente sea mejor, aunque solo sea mucho más fácil de probar de forma efectiva. Es probable que no sea necesario tener varios hilos para el acceso a los datos, ya que el acceso a los datos probablemente no sea un cuello de botella que afecte la usabilidad (si diseña correctamente y las solicitudes por lotes son adecuadas).

+0

Mis DAO se conectan realmente a dos fuentes: SimpleDB y una API de PHP a través de RPC. Mi suposición es que probablemente debería usar DAO por hilo con aproximadamente 100 hilos para evitar problemas de cuello de botella. ¿Ves alguna razón obvia para no hacerlo en este caso? – pondermatic

+0

Probablemente sea mejor hacer que el DAO sea único, e internamente, simplemente trabaje de forma asíncrona. Luego puede escalar usando un ThreadPool según sea necesario ... Esto es especialmente cierto para PHP API, ya que las solicitudes web funcionan muy bien de manera asincrónica, y la mayoría de los marcos web tienen un buen soporte para esto ... –

0

Usar el enfoque que mejor se adapte a su arquitectura de la aplicación, a menos que:

1) Sus objetos de acceso a datos son caros para crear, en cuyo caso se debe inclinarse hacia un producto único seguro para subprocesos.

2) Sus objetos mantienen el estado mutable, como en el Active Record pattern. (El estado de configuración DAO inmutable, como los umbrales de tiempo de espera, no cuenta.)