Я начинаю с MVC 3 и планирую разделить модель и контроллеры на отдельные проекты.Я буду следовать предложениям из этого поста:
asp.net mvc помещает контроллеры в отдельный проект
Целью разделения их на отдельные проекты являетсячто есть вероятность, что мне, возможно, придется добавить проект веб-службы в решение, и я бы хотел, чтобы он использовал ту же функциональность, которую предоставляет проект контроллера.Таким образом, решение будет сформировано из двух проектов представлений, WebServices и WebSite, проекта контроллера и проекта модели.
Я хотел бы знать, возможно ли это и является ли это общим сценарием с MVC.
Обновление 1:
С вашими предложениями я согласен и считаю, что лучше всего сохранять вид и контроллеры вместе.
Можно ли было бы иметь гибрид MVC и MVP?У меня такое чувство, что я действительно переусердствовал, поэтому, пожалуйста, дайте мне знать, что вы думаете.
Итак, у меня будет:
1 - веб-проект с контроллерами.
2 - проект WebServices
3 - Ведущие / Интерфейсы.
4 - Модель.
Контроллеры станут представлениями в модели MVP.Также каждый веб-сервис станет представлением в модели MVP.
Например, у нас может быть следующий интерфейс, презентатор, контроллер.
public interface ICustomers {
string[] Customers{set;}
}
public class CustomerPresenter {
ICustomers view = null;
public CustomerPresenter(ICustomers view) {
this.view = view;
}
public void GetCustomers() {
view.Customers = new string[]{"Customer1","Customer2"};
}
}
public class CustomerController:ICustomers {
CustomerPresenter presenter = null;
public CustomerController() {
presenter = new CustomerPresenter(this);
}
private string[] customers = null;
public string[] Customers {
set { throw new NotImplementedException(); }
}
public void GetCustomers() {
presenter.GetCustomers();
//Return view.
}
}
WebService будет представлением вМодель MVP.
public class CustomerWebService:ICustomers {
CustomerPresenter presenter = null;
public CustomerController() {
presenter = new CustomerPresenter(this);
}
[WebMethod]
public void GetCustomers() {
presenter.GetCustomers();
//Return response.
}