programar en tres capas

Chema Cortes lslorg en ls-l.org
Lun Sep 19 23:35:12 CEST 2005


Quoting Milton inostroza <minoztro en gmail.com>:

> estimados (as):
>
> en un curso de la universidad estamos viendo la programación por
> tres capas y el profesor dio la facilidad de utilizar las herramientas
> que nosotros quisieramos.  Yo tengo experiencia en python + gtk +
> postgresql, pero nunca habia programado en tres capas mi consulta es
> la siguiente:
>
> - he trabajado con procedimientos almacenados con postgresql, pero
> nunca he trabajado en los lenguajes pl/python o cosas por el estilo
> (no recuerdo bien los nombres de los lenguajes que se pueden
> utilizar en este motor de base de datos), la pregunta es: es correcto
> implementar las reglas de
> negocio en estos lenguajes y alojarlos en el motor de base de datos?,
> se puede?.

El objetivo principal de los procedimientos almacenados es el de preservar la
integridad referencial de los datos, aunque pueden usarse para muchas otras
cosas como agregaciones o vistas sofisticadas. El PL/PythonU sirve
perfectamente y es bastante fácil de utilizar.

De ninguna manera te recomiendo que la capa de negocio la introduzcas 
dentro del
motor de base de datos. La capa de negocio está para desacoplar la capa de
presentación del gestor de datos. Piensa que a la hora de escalabilidad, la
capa de negocio se pasaría a un servidor de aplicaciones y que las bases de
datos podrían estar distribuídas entre varios servidores. No es muy habitual
que ocurra así, pero hay que tenerlo presente en el diseño.

Eso no quiere decir que no te puedas aprovechar de las vistas 
personalizadas de
postgresql. Aprovecha que dispones de un buen gestor de datos para 
hacer simplificar la capa de negocio en lo que puedas. Piensa que estás 
trabajando
con un modelo teórico y que debes saber adaptarlo a tus necesidades.


> en las capa GUI no tengo problema ya que tengo pensado utilizar python
> + gtk(primera opción) y PSP(cuando nos pidan cambiar la capa de GUI).

Igual se sale de tu asignatura, pero hay otro modelo de 4 capas en el que el
servidor web ofrecería servicios web y sobre él se colocaría el interface
gráfico. Muchos webtoolkits te permiten hacer esta construcción. El webware,
por ejemplo, incluye algunos "reactores" para GTk y wxPython.




Más información sobre la lista de distribución Python-es