Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • Home
  • SEARCH
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 79213
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 10, 20262026-05-10T21:06:38+00:00 2026-05-10T21:06:38+00:00

I’ve been using MVC frameworks for a short while now and I really like

  • 0

I’ve been using MVC frameworks for a short while now and I really like how the concerns are separated out. I’ve got into a bad habit of letting the controllers do quite a bit of work. So I’m really looking for some advice.

When I first started using MVC I quite often had the controller doing manipulation on the models after database work had been done. I knew this was bad so moved that work into the models. However I’m not happy with that as I want my models to be very learn.

I’ve done a bit of reading and I see that people are keeping their controllers and models lean by having a service layer, which I like the look of.

I’m just trying to understand how a service layer and repository should all work together. Here are my assumptions, can you please let me know if this is a good way of working?

  1. The controller can call the repository directly if no manipulation needs to be done on the data and as such a service layer does not need to get involved
  2. Once any work needs to be done to data (business logic) then this should be done in the service layer and the controller will make a simple call to the service layer as and when required
  3. Once a service has done it’s business logic it will then use the repository as necessary (if data needs to be persisted).
  4. Models ideally should be kept lean, ideally actings as nothing more than DTOs
  5. Validation of data will be done within the models (using MonoRail validation attributes). I appreciate not even one likes polluting their models with lots of attributes, but that is a different discussion. I like the benefit of MonoRail’s validation attributes for the automatic jQuery validation in the UI.

I’m trying to turn all my code around to the single responsibility principle, hence trying to sort out my coding practices.

Thanks

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. 2026-05-10T21:06:39+00:00Added an answer on May 10, 2026 at 9:06 pm

    First, there is no set of rules that’s going to work in every situation. How you model you’re application depends a lot on the type and complexity of the project. Having said that, here are some ideas:

    1. Nothing wrong with calling the repository from a controller. Just make sure the controller does not contain business logic.
    2. The service takes care of (some) business logic and uses other services to do so. The repository is a type of service, there’s nothing wrong with calling it from a service.
    3. The model should contain business logic, actually you should always try to put it in the model first. If you need external data to perform that business logic (from another model or from the repository) then you should create a service.
    4. Nothing wrong with validation in the models. Using attributes or not is a question of taste (if you like it then it’s good). Move the validation outside of the model if it gets too complex (create a external set of rules).

    Most important, do what feels right (that’s usually the right answer).

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Ask A Question

Stats

  • Questions 87k
  • Answers 87k
  • Best Answers 0
  • User 1
  • Popular
  • Answers
  • Editorial Team

    How to approach applying for a job at a company ...

    • 7 Answers
  • Editorial Team

    How to handle personal stress caused by utterly incompetent and ...

    • 5 Answers
  • Editorial Team

    What is a programmer’s life like?

    • 5 Answers
  • Editorial Team
    Editorial Team added an answer I use the same approach with AJAX as with a… May 11, 2026 at 5:32 pm
  • Editorial Team
    Editorial Team added an answer In IIS the root application is always the website (unless… May 11, 2026 at 5:32 pm
  • Editorial Team
    Editorial Team added an answer Looks like I can use the ProxySet directive so the… May 11, 2026 at 5:32 pm

Related Questions

I ran into a problem. Wrote the following code snippet: teksti = teksti.Trim() teksti
I am currently running into a problem where an element is coming back from
Seemingly simple, but I cannot find anything relevant on the web. What is the
Configuring TinyMCE to allow for tags, based on a customer requirement. My config is
Is it possible to replace javascript w/ HTML if JavaScript is not enabled on

Trending Tags

analytics british company computer developers django employee employer english facebook french google interview javascript language life php programmer programs salary

Top Members

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.