2015-03-31 85 views
1

我刚刚分配的应用程序为UI层使用了ASP.NET MVC框架。然后让我思考Ruby on Rails,以及它的MVC架构。使用rails创建RESTful API是否遵循MVC体系结构?

当我帮助使用rails构建RESTful API时,我没有真正使用View ...仅仅是RESTful端点和模型的控制器。

这是否意味着构建在Rails上的RESTful端点并不遵循MVC体系结构,即使Rails应该这样做?

或者Rails遵循MVC架构的事实意味着即使没有真正的视图,构建在Rails上的RESTful端点也遵循MVC框架?

我想知道这是因为我当前的应用程序使用ASP.NET的MVC框架的UI,但只有一个视图和一个控制器,并使AJAX调用Web服务来获取数据显示。我以为自己没有遵循MVC结构,这让我想到了这一点。

回答

1

您的Rails API仍然是MVC。可以说,“视图”组件可能只是隐含地产生的。也就是说,Rails有时会使用一组默认行为来生成隐式视图。例如,在API中,如果您使用respond_to :jsonrespond_with(@my_object),则会自动生成JSON“视图”,作为@my_object.to_json的响应。您可以通过覆盖@my_object.as_json方法来覆盖此“视图”...或者您可以看中它并将Presenter图层添加到您的对象并让它生成JSON“视图”代码。无论哪种方式,即使您始终没有明确的视图模板,它仍然是MVC。

此外,还存在一些Rails宝石,如RABL,如果您喜欢该风格,可以使“视图”组件/方法更加明确。

+0

好吧,Rails API仍然是MVC。那么ASP.NET UI呢?它使用ASP.NET MVC框架,但只使用视图和控制器。它没有Model组件,但仍然使用AJAX调用获取数据到使用ORM操作数据的服务。 我可以认为MVC(虽然它没有明确的模型组件)?还是只有应用程序没有明确的视图,仍然可以被视为MVC? – user3587754 2015-04-01 14:09:56

+0

对不起,我不适合回答ASP.NET。但我不认为我的答案应该被认为是只能隐含地处理“视图”组件。 MVC是一种组织责任的方式。如果你的ASP.NET框架有一个独立于控制器的专用业务逻辑组件,那么它可能被认为是“模型”。但它听起来像更多的视图控制器设置。 – pdobb 2015-04-01 14:16:45