MVC架构问题 - 付款处理应该在哪里?

Kel*_*tex 3 architecture model-view-controller asp.net-mvc

这个问题与我的ASP.NET MVC 2开发有关,但它可以应用于任何MVC环境以及逻辑应该去哪里的问题.

因此,假设我有一个控制器,可以进行在线支付,例如购物车应用程序.我有接受客户信用卡信息的方法:

public class CartController : Controller
    CartRepository cartRepository = new CartRepository()

    [HttpPost]
    public ActionResult Payment(PaymentViewModel rec)
    {
        if(!ModelState.IsValid)
        {
            return View(rec);
        }

        // process payment here

        return RedirectToAction("Receipt");
    }
Run Code Online (Sandbox Code Playgroud)

在评论中process payment here应该处理付款处理:

  1. 在控制器?
  2. 通过存储库?
  3. 别的地方?

37S*_*ars 6

你想要3.其他地方.

把它放在一个类库中.创建一个具有付款处理所需的所有方法的界面.使方法通用.将具体内容放在接口的实现中.然后从该界面派生您的付款处理服务.这为您提供了包括测试和多个支付处理器的选项.

http://www.asp.net/learn/mvc-videos/上查看MVC店面视频.可能是视频#23(第22部分).我看了这些已经有一段时间了.