Я использую Ninject для выполнения инъекции зависимостей. (В основном для ДАЛ), мой проект состоит из 3-й аспектов и является,ASP.Net MVC, Ninject IOC
- Project.Lib (всех баз данных, услуги и anythign еще, что логики)
- Project.Admin (Администрация)
- Project.Web (передний конец, что посмотреть пользователь в)
Теперь каждый из моих контроллеров в рамках моих проектов наследовать от BaseController
public abstract class BaseController : Controller
{
protected BaseController(ISession session)
{
_Session = session;
}
public ISession _Session { get; private set; }
}
А потом и пример контроллера может быть, как это так,
public class ImageController : BaseController
{
private MediaService _mediaService;
public ImageController(ISession session) : base(session)
{
_mediaService = new MediaService(session);
}
[HttpGet]
public ActionResult List()
{
var RetVal = _mediaService.GetAllImages();
return View(RetVal);
}
}
Как вы можете видеть «Session» передается от контроллера на уровне услуг. Мне любопытно, хорошо ли это? ЛЮБЫЕ негативы тому, что мы здесь делаем?
Но есть ли почти 12 классов обслуживания? Мы не могли вводить их все в каждый контроллер? – LiamB
Технически нет причин, по которым вы не смогли бы, и это устранило бы зависимости между вашими контроллерами и службами, что упростило бы модульный тест. Сказав это, если у вас есть контроллер с множеством зависимостей, это может быть признаком того, что дизайн вашего приложения не масштабируется, или вам нужно переложить какую-то ответственность на другой контроллер. – richeym
каждый контроллер обычно использует только 1 (в некоторых случаях 2) услуги. Может быть, я неправильно интерпретировал то, что вы на самом деле имели в виду? – LiamB