2010-02-21 13 views
8

Solo quiero saber si alguien almacena sus clases o métodos de ayuda en un ensamblaje separado y por qué ... solo para una administración limpia de ellos? He visto muchas publicaciones sobre el uso de una carpeta auxiliar dentro de tu proyecto MVC y eso me lleva de vuelta a los viejos y complicados días en ASP.NET donde las personas usaban una carpeta App_code en lugar de separar las cosas físicamente como esto en su propio proyecto. .¿Almacena sus clases de ayuda en un ensamblaje por separado?

Y del mismo modo, nadie que haga arquitectura real va a poner modelos en alguna carpeta en su conjunto web MVC. Irían en el ensamblado MyApp.DataLayer o MyApp.Models o algo así.

+0

¿Puedes aclarar una cosa? ¿Estás hablando específicamente de los métodos de extensión de HTML Helper y las clases que los contienen?¿O está hablando en términos más amplios sobre las diversas "clases de ayuda" que se crean durante el proceso de creación de una aplicación? Tu publicación dice "clases de ayuda", pero también menciona la carpeta "ayuda", que es donde muchas personas colocan "métodos de Ayuda HTML" (y las clases estáticas que contienen esos métodos). –

Respuesta

1

Uso proyectos para separar las diferentes capas en mi web o formar aplicaciones. Me permite respetar mejor las reglas comerciales. También me resulta más fácil rastrear hacia dónde debo ir si quiero hacer un cambio.

Pero he visto personas usar carpetas que etiquetan las capas en la solución, pero creo que es un poco complicado.

2

Tenemos algunos ayudantes en un proyecto separado y algunos en el proyecto web. Creo que encontrará que algunos de sus ayudantes necesitan usar abstracciones que haya definido en su proyecto web. Y eso a menudo lo forzará a poner esos ayudantes en el proyecto web, porque no es probable que tenga algún otro proyecto que tenga una referencia al proyecto web. No considero lo mismo que usar App_Code. Estos son archivos que se compilan en tiempo de compilación dentro de su IDE, sin ninguna "magia" especial que se aplica a App_Code.

+0

No me refiero a App_Code, literalmente, me refiero simplemente al concepto de poner todo lo que debería estar en un ensamble separado en realidad en alguna subcarpeta en su aplicación web que para mí es una armadura. – PositiveGuy

+1

Entiendo. Mi primera inclinación fue ponerlos en una asamblea separada también. Pero eso fue equivocado. La primera vez que necesité hacer una ayuda HTML que utilizaba una clase que estaba en mi proyecto web, me di cuenta de que, al menos para mi situación, y probablemente para muchas situaciones, los ayudantes pertenecen mejor al proyecto web. –

3

Sí, pero por razones que son comunes a otros conjuntos, así

  • convierte en fácil de conectar a cualquier otro proyecto. (Puede ser que necesite algunas ediciones).
  • reutilizable
  • fácil de mejorar
  • Fácil de refractor
  • Como no es parte de un proyecto, pero el proyecto en sí, es fácil de documentar y facilitar a los desarrolladores a entender
  • borra algunas de las desorden

Pero por todo lo anterior, su montaje, cuando esté listo, debe ser un "trabajo bien hecho" , de otra forma, es mejor mantener las clases de ayuda a Dónde pertenecen.

+0

Estoy hablando más o menos de esos ayudantes específicos para un proyecto determinado. Sigo pensando que separarlos físicamente hace que sea mucho más fácil encontrar cosas (capacidad de descubrimiento) y una forma mucho más profesional de mantener y reducir el desorden en tu aplicación web. – PositiveGuy

+0

No todos los ayudantes que cree serán reutilizables en cualquier proyecto de mvc. – PositiveGuy

1

Sí, porque son parte de Business Layer. Dos grandes beneficios:

  • Reutilización
  • Comprobabilidad

Tenga en cuenta que sus funciones de utilidad y clases de ayuda es probable que sean algunos de los componentes de mayor uso de todo su sistema. Sin una prueba BICEP completa, se corre un riesgo verdaderamente inaceptable.

0

La mayoría de los ayudantes que creo suelen ser específicos de cada capa, por lo que tiendo a mantenerlos con el ensamblaje de la base que los necesita. No veo una razón para agregar otro proyecto para almacenar una gran cantidad de clases de ayuda específicas.

Cuestiones relacionadas