5. What is Veil Piercing?
5.9 Categorisation in general by the courts
5.9.2 Fraud or improper conduct
La arquitectura del sistema viene marcada por el framework utilizado, Codeigniter, que lleva implícito el patrón MVC (modelo-vista-controlador) y por algunas modificaciones hechas sobre el framework para el sistema wisclic que permiten que se puedan diferenciar los clientes dentro del sistema.
Cuando empezamos un proyecto desde cero en Codeigniter podemos ver dos paquetes bien diferenciados “system” y “application”. El primer paquete está destinado a los archivos base del framework donde se encuentran los archivos necesarios para la funcionalidad que proporciona Codeigniter, un paquete que no se debe modificar. El segundo paquete, application, es donde se debe trabajar y donde se colocarán todos los desarrollos. Este paquete consta a su vez de diferentes paquetes:
-Models: Este paquete contendrá todas las clases correspondientes al modelo.
Las clases de este paquete serán las encargadas de acceder a la base de datos.
-Controllers: Este paquete contendrá todas las clases correspondientes a los
controladores. Las clases de este paquete serán las encargadas de utilizar los modelos para la lectura, creación, modificación y borrado de datos y de cargar las vistas correspondientes.
-Views: Este paquete contiene todas las clases correspondientes a las vistas, es
decir, el código html, css y javascript. Los controladores pueden inyectarle variables a las vistas para poder hacer aplicaciones dinámicas. Las vistas no
deberían hacer llamadas a métodos del controlador ni del modelo. Si se requiere funciones para utilizar en varias vistas se debería almacenar en la carpeta helpers o libraries.
-Config: Este paquete contiene todos los ficheros de configuración. Los ficheros
más destacados son:
· Config: Este fichero sirve para configuraciones generales de la aplicación como por ejemplo la ruta base de la aplicación.
· Routes: Sirve para definir las rutas accesibles en nuestra aplicación y relacionarlas con métodos de los controladores. Las rutas aceptan elementos dinámicos de tipo texto (:any) y numérico (:num) que después se pueden inyectar como parámetros en los métodos del controlador. Un ejemplo de ruta definida sería: $route[‘encuesta/(:num)’]=’controlador/metodo1/$1’;
· Database: Sirve para definir la configuración de la base de datos a utilizar.
· Constants: Sirve para definir constantes que después se utilizarán en el resto de aplicación.
· Autoload: Este fichero sirve para definir qué clases deben ser cargadas directamente por el sistema al iniciar la aplicación.
· Hooks: Este fichero de configuración se utiliza para definir los aspectos de la aplicación, es decir, con este fichero podemos definir qué métodos deben ejecutarse en un momento concreto de la aplicación (Antes de cargar el controlador, después de cargarlo, antes de cargar el sistema...). Gracias a los hooks se puede administrar de forma sencilla las zonas privadas y públicas de una aplicación.
-Helpers: Este paquete sirve para almacenar funciones auxiliares de la
aplicación, es como un conjunto de útiles que pueden reutilizarse fácilmente entre aplicaciones. Los helpers son clases con métodos independientes pero con un ámbito común.
-Libraries: Este paquete sirve para almacenar funciones auxiliares de la aplicación, es como un conjunto de útiles que pueden reutilizarse fácilmente entre aplicaciones. Las libraries se diferencian de los helpers en que los métodos de las libraries comparten información común mientras que los métodos de los helpers son independientes, es decir, no requieren información común.
-Hooks: Este paquete sirve para almacenar los hooks. Un hook es una clase que
contiene un conjunto de métodos que se utilizarán como aspectos en la aplicación.
A pesar de que en este proyecto no influyen en gran medida los cambios en el framework para adaptarlo al modelo de negocio de wisclic, se van a comentar brevemente.
Por las necesidades del sistema wisclic se necesita en todos los proyectos un conjunto de clases iguales, como por ejemplo, las que proporcionan la funcionalidad de email marketing, pero también se requiere un conjunto de clases distintas para permitir el
desarrollo de funcionalidades extra dentro del sistema o el desarrollo de la página web del cliente. Además, cada cliente, debe disponer de su propia base de datos y de su propio dominio. Por eso, la extensión del framework Codeigniter consiste en la creación de un nuevo paquete denominado “Sites” dentro del cual se encuentra un paquete por cada cliente con los siguientes subpaquetes:
-Models: Este paquete contiene los modelos del cliente concreto.
-Views: Este paquete contiene las vistas del cliente concreto
-Controllers: Este paquete contiene los controladores del cliente concreto.
-Config: Este paquete contiene las configuraciones concretas de cada cliente, como por ejemplo, la base de datos, las rutas, las constantes y un fichero para determinar a qué aplicaciones tiene acceso cada cliente.
-Files: Este paquete contiene todos los archivos extra del cliente (Imagenes, videos, pdfs, archivos css, archivos javascript...).
Para conseguir relacionar cada dominio con el paquete concreto al que debe apuntar existe un fichero en el paquete “Config” estándar denominado “sites” en el cual se debe definir el nombre de dominio y el paquete al que apuntan.
Esta arquitectura permite tener el sistema wisclic y todos sus clientes en un mismo servidor de una forma muy organizada, ya que cada cliente tiene todos sus ficheros muy localizados. Además esta arquitectura permite que las actualizaciones del núcleo de wisclic sean sencillas, ya que solo se debe actualizar un servidor y no uno por cada cliente. De esta forma el equipo de desarrolladores puede centrarse en desarrollar nuevas aplicaciones o funcionalidades para el sistema en lugar de en el mantenimiento.
Como se ha comentado anteriormente estos cambios en la arquitectura no afectan al desarrollo de la aplicación de encuestas, ya que esta nueva funcionalidad formará parte de todos los proyectos. Por lo tanto, solo utilizaremos los paquetes base de Codeigniter puesto que son estos las que almacenan las funcionalidades comunes del sistema wisclic.