【问题标题】:How to integrate WebAPI to an MVC application如何将 WebAPI 集成到 MVC 应用程序
【发布时间】:2015-05-18 07:56:37
【问题描述】:

我正在开发一个 MVC5 应用程序并首先使用 Entity Framewerok 6 代码。现在我们还将开发一个 android 应用程序,该应用程序将使用 Web 服务 与 MVC 应用程序(CRUD 操作)进行交互。在这个阶段,我想澄清以下问题:

1) 我认为 WebAPI 对我们来说是更好的选择,因为我们在 Android 应用上使用这些服务。你有什么建议?

2) 为了将 WebAPI 集成到 MVC 项目中,应该进行哪些更改?另一方面,我们是否可以通过一些修改(即继承)来使用相同的控制器和数据层方法(即 SaveChanges 等)?还是我们必须为 Web 服务创建单独的方法?能举个代码例子吗?

3) 将 WebAPI 集成到 MVC 项目是否会影响 MVC 项目的能力或方法?我的意思是,将 WebAPI 集成到 MVC 项目有什么缺点吗?

任何帮助将不胜感激。

【问题讨论】:

  • 你对 WVC 项目有何看法?
  • 对不起,我的意思是 MVC :)

标签: asp.net-mvc entity-framework web-services wcf asp.net-web-api


【解决方案1】:

1) 这是个好主意。 Web API 易于实现和使用

2) 您无需对应用程序中的集成 Web API 进行更改:只需开始使用它即可。当您想从 EF 公开 CRUD 操作时,一个好主意是 to implement ODATA services。或使用something like Breeze(取决于您希望如何使用这些服务)。请参阅下面的“MVC 和 Web API”

3) Web API 完全不影响 MVC 部分,除非您在设置路由时出错。虽然它们在同一主机上运行,​​但它们完全独立工作。

MVC 和 Web API

除非您需要做一些特殊的事情,例如在不同的 URL 或“域名”中公开 Web API,否则 MVC 和 Web API 是在同一个 Web 应用程序项目中实现的。要开始在您的 MVC 项目中使用 Web API,只需添加一个新控制器。也许您还必须包括 WEB API 路由配置和其他一些 Web API 配置。

如果您想通过 Web API 公开 EF 模型,您只需按照链接中的说明创建一个 ODATA 控制器,该控制器会将 EF 模型公开为 RESTful 服务,允许您对通过 URL 进行 EF 模型。

注意:您想要做的是 MVC 应用程序中非常常见的模式:MVC 用于生成视图,而 Web API 则公开了可以使用 Javascript + AJAX 从视图中轻松使用的功能。不要害怕使用它。你会发现一点问题都没有

【讨论】:

  • 感谢您的回复。从您的回答中,我了解到,例如选择、创建或更新数据,无需为 Web 服务创建额外的控制器或方法(假设 Web 服务也将使用具有相同参数的相同方法)。另一方面,我是否必须创建一个额外的 WebAPI 项目?如果没有,我将对控制器、数据层上的 CRUD 方法、路由配置等进行哪些更改?您能否通过更新您的答案来提供示例代码?
  • 我不太明白你的第一个问题。我已经更新了我的答案。基本上,您需要创建新的 ODATA 控制器来公开 EF。您不能使用相同的 MVC 控制器,因为它们执行不同的操作,例如返回视图。但是实施 ODATA 非常快。这么大的项目恐怕我做不了例子,但我可以解决你的具体疑惑。
  • 抱歉,我是 WebAPI 和 Web 服务的新手,需要更多帮助。那么,您的意思是我需要使用 OData 才能在我的应用程序中创建 WebAPI 服务吗?另一方面,在 WebAPI 教程中,WebAPI 复选框在创建 MVC 项目时被选中。通过选择这个,MVC 项目中发生了什么变化?在最后阶段,我需要您的答案中的代码示例。请问有什么帮助吗?提前致谢。
  • 关于 ODATA 部分,请阅读链接中的信息。请理解,用 EF 模型制作一个完整的解决方案,并通过 ODATA 公开它并显示结果代码的片段是完全无能为力的。不是我做不到,而是没有意义。看到最终的代码对你没有帮助。请按照教程进行操作。至于 Web API 部分,请在这里查看教程以了解基础知识:asp.net/web-api。他们清楚地解释了配置,路由等。如果您看到后有疑问,请随时寻求帮助
  • 当然不可能给出包含整个代码的示例,我只是希望您实际提供控制器的代码示例。另一方面,我又仔细阅读了这篇文章,并在下面提出了一些疑问>>>
猜你喜欢
  • 1970-01-01
  • 2014-02-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-19
  • 2020-02-24
相关资源
最近更新 更多