gpt4 book ai didi

c# - 具有两个 View / Controller /模型的 MVC 3 解决方案。 (可能是 MVC、MVP 混合体?)

转载 作者:行者123 更新时间:2023-11-30 22:34:38 25 4
gpt4 key购买 nike

我从 MVC 3 开始,并计划将模型和 Controller 分离到它们自己的独立项目中。为此,我将遵循这篇文章中的建议:

asp.net mvc put controllers into a separate project

将它们分离到单独的项目中的目的是,我可能必须向解决方案添加一个 Web 服务项目,并且我希望它重用 Controller 项目公开的相同功能。因此,该解决方案将由两个 View 项目(WebServices 和 WebSite)、 Controller 项目和模型项目组成。

我想知道这是否可行,以及这是否是 MVC 的常见场景。

更新 1:

我同意你的建议,并且认为最好将 View 和 Controller 放在一起。

是否可以混合使用 MVC 和 MVP?我觉得我在这里做得太过分了,所以请告诉我你的想法。

所以我会:
1 – 带有 Controller 的 Web 项目。
2 – 网络服务项目
3 – 演示者/界面。
4 – 型号。

然后, Controller 将成为 MVP 模型中的 View 。此外,每个 Web 服务都将成为 MVP 模型中的一个 View 。

例如,我们可以有以下,接口(interface),演示器, Controller 。

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 模型中的一个 View 。

    public class CustomerWebService:ICustomers {

CustomerPresenter presenter = null;
public CustomerController() {
presenter = new CustomerPresenter(this);
}

[WebMethod]
public void GetCustomers() {
presenter.GetCustomers();
//Return response.
}

最佳答案

我的项目是专门为你所说的原因而构建的,你想实现一个网络服务。我不建议分离 Controller ,因为这是 Web 项目的实际部分。您真正想要的是大约 3-4 个不同的项目。

  1. 存储库/数据层(可能包含您的领域级模型)
  2. 领域层(可选)
  3. 服务层。 (现在这是您可以非常轻松地将 Web 服务指向的地方,所有可重用的逻辑都应该在这里,而不是在 Controller 中)
  4. 网络层。 (包含 View 模型、 View 和 Controller )

我把它们放在水平面上。基本上,存储库、域和服务层是完全分离的,这意味着您可以在没有服务器或 asp.net 的情况下使用这些库。 wpf 应用程序可以只调用服务层,因为 Web 层仅用于展示目的。

关于c# - 具有两个 View / Controller /模型的 MVC 3 解决方案。 (可能是 MVC、MVP 混合体?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7741873/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com