2010-11-19 6 views
7

Estoy tratando de pensar en un marco de desarrollo de aplicaciones web para el desarrollo de nuestros productos. Quiero construir una aplicación ASP.NET que tenga muchos submódulos en ella. Mis requisitos son como:Mejores enfoques para diseñar una aplicación ASP.NET bien organizada con modularidad

  1. La aplicación será un conjunto de diferentes módulos como CRM, Bugtracker, gestión de inventario, gestión de finanzas, etc.

  2. Cada módulo debe tener sus propios archivos DLL.

  3. Un proyecto debe ser para el contenedor externo de la aplicación (como el marco) y este proyecto debe incluir todos los demás módulos (de tipo aplicación web) en la solución al contenedor externo. (Algo así como tenemos marcos en HTML). Publicaremos la aplicación web de contenedor externo solo al final del día y se accederá a todos los demás proyectos de aplicaciones web a través de este.

me gustaría tener DLL separado para cada módulo, así que no hay necesidad de temer acerca de la ruptura de la aplicación cuando estoy desplegando mi única DLL que controla toda la suite.

No estoy seguro de si mi pensamiento va en la dirección correcta. El resultado final que estoy buscando es un paquete de aplicaciones web bien organizado, organizado y mantenido.

Es formularios web ASP.NET, no MVC. Utilizaré VS2010 para el desarrollo.

¿Cuáles son los mejores enfoques para hacer esto?

Editar:

significa El contenedor externo término que actúa como una página principal que tiene enlaces a varios módulos y los distintos módulos no están siempre en el mismo proyecto. Pueden ser proyectos separados bajo la misma solución. Y tengo la impresión de que, al final del día, publicaré ese proyecto solamente y le traerá los diversos módulos.

+0

necesita especificar MVC o web Forms para obtener una respuesta más precisa :-) – IrishChieftain

+0

@ Irish.Gracias por atrapar eso.He actualizado pregunta – Shyju

+0

dotnetnuke es un buen ejemplo de esta situación que está teniendo – Arief

Respuesta

2

No voy a decir que este es un "mejor enfoque", pero recomendaría mirar más de Dot Net Nuke (DNN) para obtener algunas ideas. Esto comenzó como el viejo proyecto web inicial de "Compre espía" que Microsoft distribuyó para mostrar proyectos ASP.NET, y despegó desde allí.

edición:

1. La aplicación será un conjunto de diferentes módulos como CRM, Bugtracker, gestión de inventario, gestión de finanzas, etc.

Usted puede hacer esto con DNN. También se llaman "módulos" en DNN y Drupal.

2. Cada módulo debe tener sus propias DLL.

Sí, esta es una buena idea. Y verá este tipo de cosas en varios sistemas de administración de contenido como DNN y Drupal. De esta forma, no todas las implementaciones del mismo sitio web deben tener todos los módulos instalados.

Tenemos un sitio web importante que se utiliza para alojar una aplicación de "servicio como solución" que cobramos (si no es un actuario o contador, no habrá oído hablar de él). El desarrollador principal de los últimos dos años utilizó una versión anterior de DotNetNuke como modelo de cómo refactorizar las partes de la aplicación que se le permitió cambiar.

3

De hecho, creo que el mejor enfoque sería uno que no sea demasiado arquitecto. Me preocupa que parezca que estás produciendo una arquitectura general sin razón suficiente.

¿Son estos todos los módulos nuevos? Entonces solo comienza a escribir el primero. Use las mejores prácticas que se aplican a módulos individuales.

Luego escriba la segunda. Descubrirá que desea usar cosas que ya escribió en el primer módulo. Estupendo. Para eso es la refactorización. Refaccione estas cosas en uno o más proyectos de "biblioteca", vuelva a ejecutar todas las pruebas de su unidad, luego continúe con el segundo módulo.

Repita hasta que todos los módulos estén listos.

Al final de este proceso, si necesita el tipo de arquitectura que ha descrito, entonces lo tendrá. Si necesita menos, tendrá menos y no habrá dedicado tiempo a crear una arquitectura que no esté ligada a los requisitos del mundo real.

+0

Si todos estos proyectos en un soultion, cuál debo publicar para el despliegue? ¿Debo implementar cada uno de ellos indidualmente y luego fusionarlo manualmente? – Shyju

1

Al igual que otros, han sugerido que DNN probablemente funcione para lo que estás tratando de hacer. Si quiere rodar completamente el suyo de forma natural, recurriría a algún tipo de combinación de un contenedor "Framework" y un grupo de controles de usuario (.ascx). El contenedor podría ser tan simple como una página maestra con un menú. Dependiendo de qué tan flexible desee su diseño, puede prefabricar muchas páginas diferentes, cada una de las cuales tiene un control diferente (dll por separado). Si desea que sea un poco más dinámico, puede tener una página de contenido que cargue dinámicamente en tiempo de ejecución el control de usuario deseado en ella. De nuevo, esto es solo un enfoque general, probablemente una vista de 30000 pies sobre cómo se implementa DNN de todos modos.

1

Nombre el proyecto principal después de su empresa/producto y manténgalo corto y simple. Es probable que necesite uno o dos proyectos de biblioteca para admitirlo: estos contendrán lógica común todos los días para cosas tales como error reporting, métodos de utilidad Web, etc.

A continuación, elija uno de los previstos sub-projects (No me gusta el término módulo en este contexto particular) y agregar eso a su solución. Ya sea que reutilice un proyecto existente o, preferiblemente, comience desde cero, eventualmente tendrá cualquier lógica común en este proyecto trasladada a sus bibliotecas.

Enjuague y repita. Tal vez eche un vistazo a algo similar como el proyecto Sueetie que incluye varios subproyectos como CMS, Blog, Calendario, Foro, etc.

El siguiente artículo está marcado como "desactualizado" en MSDN, pero aún así creo que debe tomar una mirada en ella:

Structuring Solutions and Projects

también, algo similar a partir de los patrones y prácticas Grupo:

Structuring Projects and Solutions in Team Foundation Source Control

Cuestiones relacionadas