C# 具有两个视图/控制器/模型的MVC 3解决方案。(可能是MVC、MVP混合动力?)
我从MVC3开始,计划将模型和控制器分离到各自独立的项目中。我将按照这篇文章的建议来做: 将它们分离为单独的项目的目的是,我可能必须向解决方案中添加一个web服务项目,并且我希望它能够重用controller项目公开的相同功能。因此,解决方案将由两个视图项目组成,即WebServices和Web、控制器项目和模型项目 我想知道这是否可行,以及这是否是MVC的常见场景 更新1: 根据您的建议,我同意,并认为最好将视图和控制器保持在一起 有可能混合MVC和MVP吗?我有一种感觉,我真的做得太过分了,所以请让我知道你的想法 所以我会:C# 具有两个视图/控制器/模型的MVC 3解决方案。(可能是MVC、MVP混合动力?),c#,asp.net-mvc,asp.net-mvc-3,C#,Asp.net Mvc,Asp.net Mvc 3,我从MVC3开始,计划将模型和控制器分离到各自独立的项目中。我将按照这篇文章的建议来做: 将它们分离为单独的项目的目的是,我可能必须向解决方案中添加一个web服务项目,并且我希望它能够重用controller项目公开的相同功能。因此,解决方案将由两个视图项目组成,即WebServices和Web、控制器项目和模型项目 我想知道这是否可行,以及这是否是MVC的常见场景 更新1: 根据您的建议,我同意,并认为最好将视图和控制器保持在一起 有可能混合MVC和MVP吗?我有一种感觉,我真的做得太过分了
1–带控制器的Web项目。
2–Web服务项目
3–演示者/界面。
4–模型 控制器将成为MVP模型中的视图。此外,每个web服务都将成为MVP模型中的一个视图
public class CustomerWebService:ICustomers {
CustomerPresenter presenter = null;
public CustomerController() {
presenter = new CustomerPresenter(this);
}
[WebMethod]
public void GetCustomers() {
presenter.GetCustomers();
//Return response.
}
例如,我们可以有以下界面、演示者、控制器
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.
}
我不确定在它们自己的项目上分离视图和控制器是否常见。可能是,但我还没有亲眼见过 我最初会将其拆分为:
- 一个用于视图和控制器的项目
- 模型的一个项目
如果需要支持不同的视图,可以根据请求的类型更新控制器以返回不同的内容。通常,控制器会为不同的客户端返回不同的内容(例如HTML与JSON)。我的项目是专门为您所述的原因而构建的,您希望实现web服务。我不建议分离控制器,因为这是web项目的实际部分。你真正想要的是3-4个不同的项目
我把它们放在水平面上。基本上,存储库、域和服务层是完全解耦的,这意味着您可以在没有服务器或asp.net的情况下使用这些库。wpf应用程序只需调用服务层,因为web层仅用于表示目的。+1为共享逻辑引入服务层的概念。@Shawn,@Hector感谢您的回复,我已更新了我的问题。