Nuestro producto es una aplicación web ASP.Net. Actualmente, utilizamos proyectos de sitios web en Visual Studio, pero hemos estado buscando el uso de proyectos de aplicaciones web por bastante tiempo. Actualmente los estoy investigando para poder mejorar nuestro proceso de implementación.Estructura e implementación de aplicaciones web
Tenemos un sitio web base que es compartido y común entre diferentes clientes, y luego lo ampliamos con la funcionalidad específica del cliente en los proyectos del sitio web del cliente. Los proyectos del cliente amplían la base, y por lo tanto confían en sus contenidos. Para construir el producto completo, primero implementamos el sitio web base y luego lo superponemos con el contenido del proyecto del cliente.
Al considerar la conversión a proyectos de aplicaciones web en Visual Studio, esperábamos poder crear el proyecto base, luego crear proyectos de clientes y configurar referencias a la base. Esta estructura parece funcionar bien, pero cuando intentamos implementar la aplicación desde el proyecto del cliente utilizando MSDeploy, solo se está publicando el dll del sitio web base. Esto está bien para algunas cosas, hacer referencia al código compilado es útil, pero hay otros elementos como imágenes, páginas js, htm, etc. que siguen siendo fuente necesaria para que la aplicación cliente funcione. Necesitamos más que el código compilado de nuestro sitio web base.
Todo eso se dice, no puedo pensar en un par de opciones aquí:
- continúan desplegando en 2 pasos. Primero, el sitio web base, luego el sitio web del cliente para construir el producto completo.
- Modificar el proceso de implementación para copiar los archivos fuente requeridos desde el proyecto base
- Reestructurar nuestro modelo para que admita esta relación base-cliente de una manera diferente. No estoy seguro de cómo funcionaría esto, y sería la opción menos viable.
- ??
¿Hay una opción diferente que me falta? ¿Estoy haciendo algo mal con la forma en que estoy configurando mis proyectos? ¿Hay algo más para hacer que una aplicación web haga referencia a otra aplicación web además de compartir el código compilado? Si ese es el caso, ¿por qué no usarías una biblioteca de clases compartida? ¿O quizás me falta algo con el proceso de MS Deploy?
Estoy abierto a sugerencias aquí ya que siento que me falta algo. No creo que nuestro modelo para nuestras aplicaciones web sea demasiado único.
Actualización: El proceso de implementación dual funciona, pero se siente un poco tonto. Cualquier otra entrada?
Por cierto, sí, su modelo es inusual. Pero huye de los "proyectos" del sitio web en cualquier caso. Son únicos, y no en el buen sentido. –
Ya hemos sabido por un tiempo que los proyectos de sitios web son .. umm, "especiales" en varias formas. A veces es difícil arreglar algo que no está roto. ¿Qué hace que nuestra estructura sea tan única? Otra opción concebible es hacer que cada proyecto contenga la fuente completa de la aplicación y establecer algún tipo de fuente de bifurcación. Sin embargo, ya lo hemos hecho antes, y se hace muy difícil mantener los cambios. – yourbuddypal
No he pensado en utilizar la bifurcación en este escenario anteriormente, pero para su información, la bifurcación en TFS 2010 es mucho más fácil de usar que en el pasado. Vale la pena echarle un vistazo. También le recomiendo que separe cuidadosamente y aísle las partes específicas del cliente de su aplicación de las partes comunes. Cree puntos de extensibilidad y personalización específicos dentro de la aplicación. Eso hará que sea más fácil ver la mejor manera de implementar esto. También hay trucos divertidos que puedes jugar con MSDEPLOY. Ver http: //www.amazon.com/Inside-Microsoft-Build-Engine-Foundation/dp/0735645248 –