2010-03-31 7 views
6

Al construir proyectos ASP.NET hay una cierta cantidad de texto estándar, o plomería que se necesita hacer, que a menudo es idéntico en todos los proyectos. Este es especialmente el caso con los enfoques MVC y ALT.NET. [Estoy pensando en cosas tales como: COI, ORM, la estructura de la solución (proyectos), Gestión de la sesión, gestión de usuarios, etc. I18n]Visual Studio: ¿Qué enfoque usas para "moldear" tuberías para proyectos similares?

me gustaría saber que tipo de estrategia a encontrar la mejor para 'reutilización' esta plomería a través de proyectos?

  • tener una 'solución madre', que permite duplicar y cambiar el nombre de alguna forma? (Estoy usando un esto hasta cierto punto en este momento, pero es bastante desordenado. Me interesaría cómo las personas hacen esto 'mejor')
  • ¿Confiar principalmente en proyectos de bibliotecas compartidas? (Encuentro esto apropiado para algunas cosas, pero demasiado restrictivo para cosas que tienen que ser personalizadas)
  • ¿Herramientas de generación de código, como T4? (Similar al enfoque utilizado por SharpArchitecture - no lo he probado yo mismo)
  • ¿Algo más?

Gracias por compartir sus experiencias!

Respuesta

1

Creo un nuevo proyecto utilizando el nuevo asistente de proyecto para que se me asignen GUID únicos de proyecto. Luego usaría "Agregar elemento existente" para copiar elementos de proyectos similares si tuviera sentido hacerlo.

A veces utilizo una herramienta de diferencia de archivos para copiar referencias de un proyecto a otro, de lo contrario solo agrego las referencias a mano. Una herramienta de diferencia de archivos también se puede utilizar para incluir archivos fuente similares, pero los archivos subyacentes deben copiarse de todos modos, por lo que prefiero "Agregar elemento existente".

He usado T4 para generar archivos de solución y proyecto, pero definitivamente parece una carcasa de borde y no algo que normalmente sería necesario. En ese caso, probablemente envolvería la T4 en una secuencia de comandos similar a PowerShell para crear y completar el resto de la estructura de directorios.

Utilizo "bibliotecas compartidas" bastante agresivamente en general, pero no específicamente debido a este escenario.

En general, no me encuentro reutilizando mucho la plomería entre proyectos. Es probable que sea más frecuente que corte en un proyecto "prototipo", luego lo abandone y reconstruya el proyecto desde cero siguiendo el enfoque anterior y solo traigo el código "no hacky".

3

definitivamente (en su mayoría!) Para ir T4 templates en conjunción con una versión modificada de SubSonic 3. Me tipo de uso de la base de datos para modelar mi dominio y luego usar las plantillas T4 para generar el modelo y controladores y vistas asociadas. Se necesita alrededor del 50-60% del esfuerzo y mantiene una consistencia en su lugar.

Luego trabajo en las anulaciones (parciales) de las clases junto con los filtros y los métodos de extensión para 'crear la aplicación'. Ahora que estoy familiarizado con el medio ambiente y lo que estoy haciendo, puedo tener un modelo básico con una buena instalación de tuberías en muy poco tiempo. Más importante aún, debido a que creo un conjunto de archivos de clases parciales, puedo regenerar todo lo que quiero sin perder ninguno de mis códigos 'personalizados'.

funciona para mí de todos modos :)

1

Estoy creando una plantilla de aplicación MVC2 en http://erictopia.com. Contendrá todos los elementos básicos que creo que deberían estar en un proyecto de MVC. Estos incluyen las especificaciones BDD, un ORM (NHibernate y posiblemente Lightspeed), plantillas T4, proveedores personalizados, soporte ELMAH, minificador CSS/Javascript, etc.

+0

Gracias, seguiré sus mensajes - ¡Buena suerte! – UpTheCreek

2

Podrías hacerlo con estilo barbudo, camiseta, ágil y crear un bonita plantilla y ponerlo en sourcecontrol. Entonces, cuando necesitas un nuevo proyecto, ¿solo compras la plantilla?

+0

Eso suena bien, pero ¿qué pasa con el nombre del proyecto, los espacios de nombres, etc.? – UpTheCreek

+0

Hmm ... Me consiguió: D Global rename? –

+0

Sí, supongo, ¡pero parece tan complicado! Siento que debe haber una manera "correcta" de hacer esto que yo no sepa. – UpTheCreek

2

Para la configuración sitio MVC increíblemente rápida, utilizo modificado las plantillas T4 (creados con T4 Editor) y con un montón de ayuda de Oleg Sych's blogs para la generación de la página (por sus páginas típicas de añadir/editar/índice) combinado con una aplicación impresionante de un sistema automatizado create-update-delete llamado MVCCrud (si LINQ-to-SQL es su método preferido de acceso a datos)

Usando plantillas T4 modificadas y MVCCrud puede crear entidades completamente funcionales (Crear/Editar/Lista/Borrar) con manejo de errores y mensajes de error intuitivos en aproximadamente 4 minutos para cada uno.

+0

Debo mencionar que sus sitios se verán increíbles (y funcionales) con el nuevo soporte jqGrid de MVCCrud :) bonus ... – Jimbo

+0

MVCCrud parece interesante, pero ¿es realmente solo Linq-2-SQL? Eso sería sensacional para mí. – UpTheCreek

+0

@Sosh no es solo Linq-2-SQL, pero en este momento solo hay un repositorio linq-2-sql, puede crear su propio repositorio que implemente IMvcCrudRepository o asignar sus delegados manualmente en su controlador (nunca lo intenté) cualquier cosa menos Linq-2-SQL con él, pero está diseñado para ser utilizado por otras cosas también) –

Cuestiones relacionadas