component - ASP.NET MVC Project y la carpeta App_Code
forms asp net core (4)
En general, coloco las clases de "capa de servicio" y "utilidad" en un proyecto separado y lo agrego como referencia a mi aplicación web. Con el framework MVC, realmente no veo la necesidad de compilar clases en tiempo de ejecución.
¿Cómo es que App_Code no es una opción en el submenú Agregar Carpeta ASP.NET en el explorador de soluciones VS? Me doy cuenta de que puede crear uno usted mismo de forma manual con solo cambiar el nombre de una Nueva Carpeta, pero ¿cuál es el racional aquí? ¿No es aquí donde se supone que debes poner clases de tipo "servicio" o "capa de servicio"?
En una nota al margen del proyecto MVC. Me gusta el hecho de que haya una referencia a System.Configuration out-of-the-box a diferencia de los proyectos de formularios web ASP.NET predeterminados.
Esto es probablemente porque un proyecto ASP.NET MVC es una aplicación web en lugar de un sitio web. En un sitio web, los archivos de clase se compilan dinámicamente en tiempo de ejecución y deben residir en la carpeta App_Code. En una aplicación web, todo se compila estáticamente y los archivos de clase pueden vivir en cualquier lugar de su aplicación web.
Como señaló David Brown, generalmente se recomienda poner una definición de clase adicional en una biblioteca de clases separada y luego hacer referencia a eso desde su aplicación web. Si escribe pruebas unitarias o hace referencia a sus clases desde archivos de configuración, puede ser difícil o imposible acceder a estas clases si están definidas solo dentro de su aplicación web.
La verdadera respuesta es porque Microsoft quiere que usted admita que necesita VS para hacer MVC. Sin embargo, para convertir el proyecto en puro JIT, es mucho más fácil trabajar con ...
Puedes hacerlo bastante directo.
(1) Mueva todas las carpetas que contienen archivos de clase a App_Code
(deje la carpeta Views donde está)
(2) Hacer que Global.asax
no necesite un código o heredar la referencia eliminando esos atributos y luego colocando
[script runat="server"]
... place contents of code behind''s class inner code
[/script]
y eliminar el código detrás para siempre
(3) En Bin
Elimina la referencia DLL del proyecto asegurándote de mantener las otras DLL necesarias en términos de ejecutar MVC
(4) Eliminar archivos de solución y carpeta de propiedades y obj
Lo hago rutinariamente para nop MVC porque es mucho más simple trabajar con el nivel web en JIT. Los desarrolladores que no entienden esto no trabajan en las trincheras todos los días en muchos sitios web con varias soluciones rápidas personalizadas necesarias. Los sitios en los que trabajamos obtienen cientos de miles de visitas por día, por lo que usar JIT no tiene ninguna penalización de rendimiento después del golpe inicial.
Parece que menos es más cuando se trata de desarrollo de sitios web más pequeños.
Para aquellos que no quieren una segunda biblioteca de proyecto / clase y solo quieren una carpeta simple para algunas clases c #, propongo "App_Classes".