Еще добавлю чутка. Сам делал недавно проект на mvc и есть такие вещи как "Unit of Work" и прямое разделение на слои приложения и как раз в сервисном слое без интерфейсов никак. Ну и как ранее упомянули полиморфизм и ООП. Если ничего этого не делать, то в итоге можно получить на добротном проекте большую какаху. Конечно в мелких проектах можно и без них, но мы все и сами знаем что все маленькое это только старт для заказчика и можно просто взять фальшстарт, а потом затрахаться с покрытием тестами т.к. Придется переписывать и пропадает расширяемость. А если там еще будет замута с сервисами в Azure то все вилы, так что делаем выводы и пытаемся сразу стартовать правильно.