Beruflich Dokumente
Kultur Dokumente
2.1.1. Servicios
En la capa de servidor encontraremos los procesos de la aplicación
que se encargan recibir las peticiones de las capas superiores y, si es
necesario, devolver los datos solicitados. Esta función será
desempeñada por un servicio.
Para poder realizar estas funciones los servicios han de poseer ciertas
características que les diferencian claramente de una aplicación de
escritorio:
1. Ejecución desatendida: Un servicio normalmente
se mantiene ejecutándose en la memoria del equipo que
lo aloja. A pesar de que algunas tecnologías, como DCOM
o Remoting, permiten que el objeto que responderá a la
petición no esté cargado en memoria hasta que alguien
realiza la petición, en la infraestructura del servicio
siempre ha de haber un elemento que se mantenga en
ejecución, listo para responder a las peticiones de los
clientes. La ejecución del servicio, por lo tanto, no precisa
de la intervención de ningún usuario.
2. Conectividad: Un servicio suele estar en un equipo
dedicado, mientras que los equipos cliente acceden a él a
través de la red. Esto implica que debe existir algún
mecanismo que permita que una petición remota active la
respuesta del servicio. La infraestructura de red del
servicio debe estar configurada para enlazarse con algún
protocolo de red, por lo general TCP/IP.
3. Concurrencia: Dado que múltiples equipos
accederán al servicio simultáneamente, es necesario que
los servicios implementen algún mecanismo para
gestionar la concurrencia de acceso. Existen dos formas
básicas de gestionar la concurrencia:
a. Acceso simultáneo: En el acceso simultáneo los
servicios crean hilos de proceso paralelos que
gestionan las peticiones simultáneamente. Cada
hilo de proceso posee sus propias estructuras de
datos independientes entre sí, de modo que los
datos generados por una petición sean inaccesibles
a otra petición. En este caso nos podemos encontrar
con un problema si las peticiones simultáneas son
muy abundantes, ya que eso creará una multitud de
hilos de ejecución simultáneos que tal vez sature la
capacidad de ejecución del servidor. Sin embargo, si
la capacidad de ejecución del servidor es suficiente,
los tiempos de respuesta son mejores.
b. Acceso serializado: En este caso las peticiones
se atienden una a una, en un único hilo de
ejecución. El servicio dispondrá de algún sistema
para almacenar en “colas” las peticiones que vayan
llegando, y las ejecutará una tras otra. En este caso
es difícil que se produzca una saturación de los
recursos del servidor, pero los tiempos de respuesta
son peores si las peticiones simultáneas son muy
abundantes.
4. Seguridad: El servicio deberá asegurarse de que la
llamada está autorizada y será necesario implementar
algún mecanismo que recoja las credenciales del usuario
y autorice la ejecución.
Los sistemas actuales son cada vez más seguros, de modo que el
acceso directo a través de la red a los servicios locales no sólo no es
recomendable, sino que en según qué casos puede incluso a llegar a
ser tan complicado que represente un problema. En este caso el
planteamiento requiere la creación de un servicio que permita el
acceso remoto a los recursos locales. Estos servicios deben cumplir
con las mismas reglas que los servicios que acceden a datos, pero
esta vez es probable que no dispongamos de la infraestructura que
los SGBD ya incorporan, así que será necesario implementar esas
características en nuestro código. La figura 2.2 nos muestra cómo, a
diferencia de los SGBD, en que los módulos de infraestructura están
ya suministrados, en los servicios de sistema deberemos crear
nuestra propia infraestructura de servicio.
http://knol.google.com/k/aplicaciones-distribuidas#