2012-02-03 21 views

Respuesta

6

Crear proyectos separados por cliente será problemático de mantener, mientras que un único proyecto para todos los clientes podría ser difícil de personalizar. Es una línea fina y sus necesidades dictarán cómo construye su solución.

Uno de mis proyectos más recientes en el que hacemos SAS (Software as a Service) pudimos construir nuestra aplicación MVC utilizando una arquitectura de complemento para que cada cliente PODRÍA tener su propia DLL implementada en el BIN que habilitaría personalizaciones para solo ese cliente (a las vistas, los activos o incluso los controladores). Somos capaces de aprovechar una única base de código y tener muchos clientes, la mayoría sin personalizaciones y algunos con personalizaciones menores a grandes.

Cada cliente tiene una URL única por su "portal" y más a menudo que tienen dominios privados, por lo http://app.mycompany.com o http://mycompanyapp.com y algunos incluso están alojados en nuestro propio sitio, http://hostingcompany.com/client/.

Al crear una aplicación que pueda determinar qué cliente se basa en la URL, pudimos manejar todos estos casos con facilidad. Cuando implementamos, tenemos una única base de código (implementada solo UNA VEZ en una sola carpeta) y todos los sitios usan la misma implementación de código.

Ejecutamos una granja de servidores web en la que tenemos muchos .NET Web Servers y tenemos una configuración de equilibrio de carga y todos los sitios tienen páginas de ping con las que nuestros equilibradores de carga interactúan para determinar su estado.

Como dije, sus necesidades determinarán cuál es la mejor solución para usted.

0

Nick, qué base de datos deberíamos usar una base de datos por cliente o debería tener una base de datos separada para cada cliente en mi escenario nuestra aplicación está más centrada en la base de datos por lo que hay muchos cambios para cada cliente según sus roles de negocios.

+1

Lamento no haber visto su pregunta ya que no fue una respuesta a mi publicación. Puede ir en cualquier dirección, siempre y cuando la estructura de su base de datos esté construida de tal manera que admita bases de datos compartidas (use un ID de empresa para dividir datos o algo así). Con la estructura adecuada, puede transferir fácilmente clientes individuales a su propia instalación. En nuestro caso tenemos ambas, una sola base de datos MASTER que almacena alguna configuración maestra, como asignaciones de cliente a base de datos, lista de dominios para los que responde la aplicación, etc. En cualquier momento podemos mover clientes (de compartido a dedicado o dedicado a compartido). –

Cuestiones relacionadas