在大型ASP.net MVC应用程序中共享/扩展控制器

时间:2010-11-22 16:48:58

标签: c# asp.net-mvc asp.net-mvc-2

我正在开发一个相当大的应用程序。

它基本上是一个电子商务应用程序 - 与其他“功能”如论坛等......

“后台”应用程序将被称为“Wokingham”

我现在所拥有的是这样的:
(我们的命名约定基于树的名称)

MyCompany.Honeysuckle
包含论坛的模型和数据访问(IRepository等等)的项目

MyCompany.Willow
产品的型号和数据访问,产品搜索等......

MyCompany.Poplar
模型/数据访问/服务等..订单

MyCompany.Juniper
客户

以上所有都是类库,编译成common / bin / dir

Wokingham(上面提到的管理员后端系统)将与“公共”网络应用程序共享一些功能 -

例如 - 在论坛(MyCompany.Honeysuckle)中 - 公共应用程序将能够添加新问题。 Wokingham也提供此功能。

我的问题是关于MVC应用程序的控制器 将有(至少)2个ASP.NET MVC应用程序 -
一个单独的“Wokingham”

我应该有 MyCompany.Honeysuckle.Controllers 项目吗?公共UI项目和Wokingham共享。?

或 - 是否应该有上面提到的 MyCompany.Honeysuckle.Controllers ,但是.Wokingham项目扩展控制器以执行其他所需的功能?

1 个答案:

答案 0 :(得分:2)

我将两个控制器分开,一个用于前端操作,一个用于管理端。棘手的问题是在哪里放置共享操作。

简短:如果管理员用户想要创建新的论坛帖子,您可以重定向/打开新窗口吗?这样可以节省大量时间,也是常见做法。

漫长的方式:如果有两个页面做同样的事情是必要的,那么我将使用单独的控制器操作和视图,但共享CRUD服务(模型层)。这项工作主要是为了创造不同的观点。

一般来说,您希望控制器操作尽可能简单,因为它们只是Web请求的终点。并且通过麻烦来抽象两个稍微不同的控制器操作之间的相似性是过度的。

修改:删除了无关的建议。