c# – 在ASP.NET MVC中使用WF for Controller / Actions

编辑 – 似乎我原来的问题没有解释我想要的东西

我想要做的是使用Windows Workflow来处理操作请求.我知道WF非常繁重且难以使用,但我还没有找到任何其他适合此任务的基于.NET的工作流程库.

有没有人有关于如何做到这一点的任何例子?或者有人试过吗?
这是否是“真正的MVC”并不重要.

编辑:我发布的“胖控制器”示例只是我想添加WF的原因之一 – 所有其他逻辑都封装在其他服务/业务层中,控制器负责的唯一事情是调用这些服务和确定要显示的视图.对我来说,使这个特定于UI的控制器代码可编辑是有意义的 – 特别是在我正在研究的CMS框架中.这就是我想使用Workflow的原因(我已经创建了一个基于jQuery的XOML编辑器)

只是为了澄清我原来的问题:我不是试图将我的所有业务逻辑转移到工作流程中以试图整理我的类,我试图将可重用的Controller / UI逻辑从编译类中移出到可分发的XOML文件中.

例如,我写的许多控制器/动作是:

public ActionResult List(string categoryId) {
  if (String.IsNullOrEmpty(categoryId))
  {
    var data = productRepository.GetCategories();
    return View("ListCategories",categories);
  }
  var data = productRepository.GetProductsByCategory(categoryId);
  return View("List",data);
}
public ActionResult Display(string productId) {
  var product = productRepository.GetProductsById(productId);
  return View("Display",product );
}

这些操作足够薄,可以提取到工作流活动中,然后可以通过拖放界面进行定义.

我目前正在开发一个自定义CMS项目,并希望使用我之前创建的基于Web的基于xoml的joml编辑器来定义应用程序中可用的操作.
管理UI的开发人员部分已经能够生成/编辑数据模型和视图 – 我希望能够使用UI定义简单的控制器操作.
我已将所有其他服务/业务逻辑放在扩展方法或服务类中.

我打算将它们导出为基于XML的模块,这样它们就可以轻松地从一个网站移植到另一个网站.我将创建的大多数网站非常相似,因此不需要很多自定义代码.

显然,一些复杂的控制器可能不合适并且需要它们自己的自定义控制器类,但是能够简单地修改工作流以在WebsiteB上引入新的“filterByEmailAddress”参数,而WebsiteA仍然保留原始过滤器.

最佳答案 这可能不是您正在寻找的答案,但如果您的控制器变得超重,这可能表明您的应用程序缺少适当的分层,因此您的控制器做得太多了.我建议您使用精心设计的体系结构(具有单独的表示,服务和数据访问层)来查看MVC教程.我推荐的是Rob Conery的MVC店面系列.

http://blog.wekeroad.com/mvc-storefront/mvc-storefront-part-1/

我不认为将所有控制器逻辑转移到WF中真的会解决您的问题 – 您只需要以不需要控制器完成除表示逻辑之外的方式构建应用程序.

点赞