在哪里放置常规控制器和ApiControllers

时间:2012-05-01 18:19:37

标签: ajax asp.net-mvc-3 asp.net-mvc-4 asp.net-web-api

我最近一直在研究MVC4 WebApi示例。这些示例应用程序非常简单,只包含几页。由于它们的目的只是为了展示如何使用ApiController,因此应用程序在结构上保持最小。

在较大的Web应用程序中,会有许多常规控制器和Api控制器。我们怎么能以有组织的方式安排他们呢?将所有api控制器放在一个文件夹中,并在每个视图调用上$.ajax()是一个好习惯吗?或者,最好将api控制器与常规控制器一起放置,以便显示相关$.ajax()所在的视图吗?

建议的做法是什么?

这里添加了一些想法:

我将花更多时间思考它。现在我的计划是标准控制器仅用于渲染视图。没有视图模型将通过标准控制器传递。也就是说,没有return View(model)。将使用客户端编程(如jQuery模板)从API控制器返回的json对象填充视图。 [我这个太极端了吗?没有return View(model)?真的?]

如果可以,那么常规控制器将不会调用任何工作服务。相反,应该从API控制器调用所有工作服务。那么,我应该如何放置那些WorkerServices及其接口?

更重要的是,如果我想拥有区域怎么办?我应该在区域外放置API和WorkerServices吗?或者每个区域都有一个API文件夹和一个WorkerServices文件夹?

我一定会在今天下午一遍又一遍地思考,做出一个有计划的决定。请让我知道您的建议或经验。谢谢。

1 个答案:

答案 0 :(得分:4)

您可以对Controllers文件夹进行分支,以便在Api控制器和标准控制器之间保持分离:

              |--- Api
Controllers - |
              |--- Standard

或以下分离:

|-- Controllers
|-- Api

这真的是个人品味的问题。我只是注意不要将标准和Api控制器混合在同一个文件夹中,因为它们更难以区分。

$.ajax调用而言,控制器的位置以及它们在服务器上的组织方式并不重要。路由引擎可以将传入的URL分配给相应的控制器。