【问题标题】:MVC Controllers WCF ServiceMVC 控制器 WCF 服务
【发布时间】:2012-01-14 00:09:32
【问题描述】:

我将 ASP.net MVC3 用于我的表示层,我的数据访问和业务逻辑通过 WCF 服务公开。我的控制器应该调用 WCF 服务还是应该有更深层次的抽象,例如调用 WCF 服务的存储库。

调用服务的仓库

public ProductController(IProductRepository productRepository)
{
      _productRepository = productRepository;
}

public ProductRepository(ProductServiceClient client)
{
      _client = client;
}

直接在控制器中服务

public ProductController(ProductServiceClient client)
{
      _client = client;
}

存储库类除了调用通过服务公开的方法之外什么都不做。

【问题讨论】:

  • 我的方法是只在它做某事时才引入一个额外的层。如果您认为您的客户端逻辑是直截了当的,那么只需从控制器调用服务并完成它。如果您想在客户端中引入业务层,那么只有实现协调 wcf 调用和必要业务逻辑的“服务层”。

标签: wcf asp.net-mvc-3


【解决方案1】:

对不起,我对你的问题很困惑,但如果我误解了,我很抱歉。希望我的指点能解决这个问题。

  1. 与持久性相关的存储库并定义一种方法来处理 基础设施层,即处理数据(在内存存储库中, sql 存储库或通用存储库)
  2. 服务,如果您喜欢使用这些存储库来执行 合同操作,例如让客户参与您的案件。
  3. 服务由客户或请求服务的人调用,并且 服务依次调用存储库,存储库又调用数据 操作。

因此您可能需要更改您的 wcf 以使用存储库并让您的控制器调用服务。希望对您有所帮助

【讨论】:

  • 抱歉,我的类命名错误。我的架构:特定于演示文稿的 MVC 和业务规则 - WCF 服务 API - 业务逻辑 - 数据访问(存储库模式)
  • 特定于表示的业务规则可以在视图模型类型范式中处理。事实上,有些人认为这是一种更好的方法,因为模型完全定义了一个实体,在这种情况下,您的业务逻辑(绑定到您的视图)通过视图模型并且还允许验证。
【解决方案2】:

我会从完全相反的开始 - WCF 应该调用存储库中的方法。

数据层应该是通用的,并且应该可以通过任何方式访问(wcf应该是一个,mvc website应该是另一个,等等)。

这样您还可以对您的项目进行单元测试,并且更容易跟踪它。在这种情况下,Wcf 应被视为您程序的额外 api。

我更关心业务规则应该存储在哪里,但我会投票支持业务逻辑的 mvc 控制器,以及在内部调用这些控制器的 wcf 服务。

【讨论】:

  • 我的架构:特定于演示文稿的 MVC 和业务规则 - WCF 服务 API - 业务逻辑 - 数据访问 - 存储库
  • 你也可以看看:stackoverflow.com/questions/1657835/…,不过这是我的建议!
  • 你能提供一个你会使用的架构示例吗?
猜你喜欢
  • 1970-01-01
  • 2013-02-04
  • 1970-01-01
  • 1970-01-01
  • 2012-01-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多