5

I currently use the App_Code folder for all of my classes, and for me (for now) it seems to be working just fine.

I have however been considering making the switch over to a Class Library Project inside my Solution instead of the App_Code folder. Can anyone tell me the pros and cons of doing this?

One thought I had was with regards to testing my web app. If I use a Class Library, do I have to compile it every time I want to tweak/test? Obviously in the App_Code folder I don't have to since all of the Classes compile at runtime.

David Basarab
  • 72,212
  • 42
  • 129
  • 156
Chase Florell
  • 46,378
  • 57
  • 186
  • 376

2 Answers2

6

You should use a class library. The reasons are simple.

You want to remove your business or application logic from the UI. The App_Code folder is for classes that deal with the UI only.

The reason for the separation is to create tiers. Meaning today you have a web site, tommorow you may be asked to make a windows program, or a new web site. If you have to change your UI you are going to be copying and pasting the code. That means you have now 2 or more places to maintain the code. This will lead to poorer code quality, fixing the same bug in 2 or more places.

If you place your code in a library. You create a new UI and then just reference the library. You are only now using 1 set of code.

Mack
  • 2,556
  • 1
  • 26
  • 44
David Basarab
  • 72,212
  • 42
  • 129
  • 156
  • This is a great answer, and one that makes perfect sense. In my question above I mentioned having to compile the Class Library over and over while testing... is there a way around this? – Chase Florell Feb 17 '10 at 04:45
  • So the answer is that I have to compile it every time I make a tweak or mod? – Chase Florell Feb 18 '10 at 16:40
  • You don't have to compile the business logic if you haven't changed it. Compiling does not take that much time and is not a good reason to keep all your code in your UI layer. – David Basarab Feb 18 '10 at 18:24
0

Jimmy Bogard (author of Automapper) has written an excellent article on how he structures his code, which may assist in confirming @David's answer.

Kane
  • 16,471
  • 11
  • 61
  • 86