Esta es una pregunta de diseño, por lo que mi respuesta será de alto nivel.
Una aplicación web del lado del cliente multiinquilino tendrá las siguientes variables, la mayoría de las cuales ya ha mencionado. Debe tomar dos enfoques generales sobre cómo proceder.
Establezca cuáles son las variaciones en cada una de las variables enumeradas a continuación por adelantado (tanto como sea posible).
- ¿En qué situaciones se debe usar una base de datos dada, como MS-SQL, MySQL, NoSQL, MongoDB o GraphDB sobre otra? ¿Cuáles son los escenarios en los que se usa cada uno? ¿Cuál es la ventaja o desventaja de uno sobre otro?
- ¿Qué debo aprender para convertirme en un buen desarrollador web 2017?
- En su opinión, ¿qué hace que un buen sitio web?
- ¿Puedo poner un menú de wordpress como contenido de la página?
- ¿Por qué dart2js produce inmensas líneas de código a partir de pequeñas aplicaciones Dart?
Enfoque a) Si cree que las variaciones en las variables entre inquilinos son manageable
cree 1 aplicación que maneje a todos los inquilinos. ¿Qué es manageable
? Puede hacer un ejercicio siguiendo las Variaciones de manejo en la sección de variables a continuación. Vea si puede manejar cosas por metadata
. Esto se entiende al comprender las variaciones entre los inquilinos para cada una de las variables.
Enfoque b) Si cree que las variaciones son demasiadas, reconsidere hacer estas aplicaciones separadas. A medida que avanza puede encontrar algo en común. Puede volver a factorizar ese código como un módulo común y exponerlo como un artefacto bower (privado).
Enfoque a) Manejo de variaciones en las variables
1) Look & Feel – Skin Use un CSS por inquilino.
2) Datos Si el esquema JSON difiere, tiene un problema. Sugeriría simplemente ir al Enfoque b). Si ve algunos campos agregados + restados, está bien. Recomiendo crear el esquema JSON.
3) Formularios de entrada Recomiendo conducir los formularios desde el esquema JSON + algunos metadatos. ¿Sería capaz de usar el mismo templo AngularJS con un montón de ng-if, ng-switch para variaciones de inquilinos? Si no, entonces ve por FORMULARIO separado. ¿Estás terminando con demasiadas “FORMAS separadas”? Luego retroceda al Enfoque b).
4) Validación de formulario
Puede esquema JSON y decorarlo aún más con los atributos de validación. (No sé lo que ofrece su pila, pero en Java Bean las anotaciones de validación son bastante útiles: puede externalizarlas en el momento de la compilación y agruparlas con el cliente para que los campos de entrada de formularios puedan aplicar la validación de forma pragmática desde el esquema).
5) Flujo de trabajo Si ve que la lógica de enrutamiento cambia por cliente, use enrutadores angulares y defina las rutas por inquilino.
6) Informes Suponiendo que estas son algunas vistas que se adaptan por inquilino. ¿En qué se diferencian? Si puede usar ng-if / ng-switch sin desordenar las plantillas, puede hacerlo; de lo contrario, cree plantillas separadas, vistas (las rutas pueden ocuparse de las vistas).
7) i18n / l10n AngularJS tiene un montón de utilidades como $ locale, ngPluralize, varios filtros como moneda, datos, número. Pago AngularJS i18n
En resumen, un buen diseño de metadata
, Validation decorated JSON schema
y un good routing ([AngularJS routing ][2]) design
diseño de good routing ([AngularJS routing ][2]) design
lo ayudaría a mantenerlo como una sola aplicación multiinquilino que puede administrar durante una buena vida útil del producto.
Espero que esto responda sus preguntas y la mejor de las suertes con sus proyectos creativos. Si desea discutir sus ideas, siéntase libre de enviarme un mensaje directo a mí y feliz de conversar.
Aclamaciones,
Micro
Contrata a AngularJS Developer