asp.net-mvc


Layering an ASP.NET MVC Web Application


When I develop a WinForms or WebForms app, I create a solution and add multiple projects. The BOL project is a class library for business objects, there's a SQL and a DAL project for ADO.NET related stuff, I have a Utilities project which contains classes for stuff like validation and whatnot. Now the presentation layer which I usually call the GUI contains the forms. The forms work directly with the BOL, which connects to the SQL which connects to the DAL, etc...
I'm sure you all know this already so here's where I get confused. In working with MVC, projects I see all contain this type of functionality but are all in one project, just separated into folders. I looked at the Nerd Dinner application and even that is all in the one project. The end result is a single DLL to handle it all. Is this a good idea, or do you guys separate the pieces into different projects? Usually one DLL has to go through another DLL before it can reach the data access DLL type of thing. Maybe I'm just confused on the whole concept.
You can always seperate this logical layers into seperate physical layers (projects). You can create a seperate project for your Entities, one for your Data Access code etc..
Here is the structure i did for one of my receny project
1) UI : The standard MVC Project with UI related stuff. Controllers and Views and Relevant CSS stuff & Scripts.
2) Entities : The class library Project. My Business entities are here. These are just POCO's which represent my domain modal ( I use this for the CodeFirst Database generation).
3) Data Access : The class library Project. I have my Data Access code here. Repositary, Interfaces and my DBContext class as well.
4) Test : My Unit Tests are in this project.
UI Project has a reference to my Entities and My Data Access Project.
Data Access Project has a reference to my Entities because my Repositary method returns objects.
I have few ViewModel classes also inside my UI project ViewModels folder. I use this for some screens where i have to show data from multiple domain objects. I have a mapping/service class which maps the domain object to view model object. If your project is bifg, you may keep this as a serperate project under the same solution.
The solution looks like this. (This is an open source project i am working on)

Related Links

Return complex object in REST Web API call
Moving JsonResult Actions from Controller to a separate Helper class
Vyacheslav Captcha validation on Ajax post not working
Angular app on IIS 8.x virtual directory has strange URL behavior
Display rows in MVC .NET from joining tables
Do not display results till search is executed in MVC
WebApi 2 Route not resolving with guid as parameter
mvc filter by dropdown selected text
Windows Authentication together with Asp.net MVC SimpleMembership?
Jquery validations stops working for an input when using masked plugin
set textarea text from ViewData asp.net mvc
Azure download blob filestream/memorystream
Bootstrap 3.1.1 less in ASP.NET MVC 5 have error with EnableOptimizations in true
simple membership provider with active directory
Lambda expression for getting a table row and update the row in database
How to call a HttpPost method from Controller in ASP.net MVC 4?

Categories

HOME
regex
ssl
xaml
blogs
runtime-error
android-sms
geany
coded-ui-tests
gcov
research
doorkeeper
higher-order-functions
scope
openmodelica
openui5
pyfftw
oracle11gr2
teamcity-9.0
dsc
abstract-syntax-tree
structure
icloud-drive
f2py
reformatting
feedly
svgpanzoom
ollydbg
imagemapster
zipline
response
otroslogviewer
amazon-vpc
procobol
program-slicing
ase
move
manifoldjs
jasmine2.0
okular
jce
jcuda
asp.net-mvc-custom-filter
ipmi
sqlite-net
amazon-dynamodb-streams
uiswitch
xlform
egl
delphi-10-seattle
symbian
appv
spinach
cbc-mode
wso2as
simpleadapter
mysql5
office-2010
email-spam
populate
windows-phone-7.1
micro-orm
rte
zephir
rcu
hamlc
locomotivejs
nextpeer
freeglut
rgba
stumbleupon
bapi
springboard
pong
nscollectionviewitem
posterous

Resources

Mobile Apps Dev
Database Users
javascript
java
csharp
php
android
MS Developer
developer works
python
ios
c
html
jquery
RDBMS discuss
Cloud Virtualization
Database Dev&Adm
javascript
java
csharp
php
python
android
jquery
ruby
ios
html
Mobile App
Mobile App
Mobile App