Dudas con arquitectura

QuitCat

Hola buenas

Tengo serias dudas en cuanto al diseño de arquitecturas de software, supongo que por que nunca me preocupe de aprenderme conceptos básicos que debería haber aprendido, y suele ser la parte que menos me agrada a día de hoy. Seguramente por mi escaso conocimiento en este aspecto.
Todo lo que sea erróneo corregidme por favor.

La idea es una arquitectura sencilla, en este caso usando plataforma .NET, pero esto es lo de menos.

Arquitectura n-layers(separación lógica) donde tendría :

  • Capa de presentación (Aplicación de escritorio WPF)
  • Capa de negocio
  • Capa de acceso a datos (EntityFramework)

Arquitectura n-tier(separación física) pensaba distribuirla de la siguiente forma :

  • En la parte cliente tendría la capa de presentación
  • En el servidor se desplegarían las capas de negocio y acceso a datos

Dudas concretas :

  • He leído que hay diversas formas de repartir las capas entre los n-tier, ¿algún inconveniente en desplegar BL y DAL en el mismo sitio?
  • Si quisiésemos que ademas de usarse en una aplicación de escritorio, se usase también en dispositivos móviles o aplicación web, ¿Que sería lo correcto? ¿Añadir una capa de servicio entre negocio y presentación?
  • La idea que tengo de cuando se debe usar una capa de servicio, a grandes rasgos, es cuando hay diferentes tipos de cliente que van a consumir esa aplicación ¿Correcto o incorrecto?

PD: Veo pocos hilos sobre dudas de arquitectura no?

ninjachu

#1

  • Nunca unificaría la capa de negocio y el acceso a datos (para mi 3 capas es lo mínimo, siempre y cuando no sea una aplicación de usar y tirar)
  • Para usar también aplicaciones móviles tienes que pensar en que tecnología utilizar. Seguramente necesites una capa de servicios y por ejemplo XAML para escritorio
  • La capa de servicios como la llamas depende de la arquitectura, es obvio que un MVC de .NET no lo vas a utilizar para aplicaciones android.
1 2 respuestas
MTX_Anubis

Las arquitecturas (aunque primero habría que definir qué es esto) son muy relativas a la aplicación y el negocio, a grandes rasgos lo que has definido es una arquitectura a muy alto nivel en la que encajan practicamente el 99% de aplicaciones cliente/servidor xD.

Sobre la primera pregunta no hay problema mientras tu aplicacion no tengas grandes cantidades de tráfico, vamos lo normal es tener tu BBDD y aplicación en el mismo server y cuando sea necesario es cambiar una url de la config a donde esté tu bbdd y listo.

Tu problema viene al diseñar tu capa de negocio, para mí la capa de servicios pertenece a ésta. Lo normal es sea un api que se encargue de mantener sesiones si es necesario, validación de datos de entrada,etc. Además si va a ser usada por diferentes clientes (capas de presentación, web/movil/otras aplicaciones) pues lo tienes todo unificado ahí aunque dependiendo de tus necesidades puedes tener que crear distintos endpoint para los distintos tipos de clientes

Como te digo, esa capa o contrato basicamente la vas a usar siempre de una forma u otra.

El tema de arquitectura es muy relativo, las cosas que se definen y son más o menos un standard se definen a grandes rasgos y dependiendo de la persona lo verá de una forma u otra porque a fin de cuentas, la arquitectura y diseño final va a depender de los requisitos del negocio, las tecnologías, el throughput y mil cosas más.

Hay cosas más o menos comunes y que tienen todas las aplicaciones que van a ser consumidas por clientes: puntos de acceso y algo de lógica (aunque sea un simple proxy). Luego otras bastante comunes como persistencia, cache, etc. que se pueden hacer mediante volcados de memoria, sistemas de colas, bbdd y mil cosas más.

Es que al final todo va a depender de lo que necesites y te venga mejor xD.

Y si, no hay ni un solo hilo de arquitectura xD

#2 No está hablando de unificar la capa de negocio y datos, está hablando de desplegarla en el mismo lugar.

1 1 respuesta
QuitCat

#1 #2 Gracias a los dos por los comentarios.

Mi primera duda era como dice #2, si podía desplegarlas en el mismo sitio, no unificarlas de manera lógica.
A ver si la gente escribe mas dudas sobre arquitectura y se anima mas gente a participar.

1 respuesta
ninjachu

#4 Sin problemas a desplegarlo en el mismo equipo, actualmente el 90% de las aplicaciones que realizo son de ese modo y como dice #3 cambias el parámetro conexión y tirando.

Si algún día se crea un debate sobre arquitecturas podéis contar conmigo. Pero aquí en España es un tema muy poco tratado, a veces muy filosófico, y que otras veces 4 "gurus" dicen como realizarlo.

1

Usuarios habituales

  • ninjachu
  • QuitCat
  • MTX_Anubis