我有一个客户端仪表板应用程序,用 ASP.Net MVC 4 编写(未绑定(bind)到此版本,很乐意升级)。该网站托管在 Windows Azure 中。
我们的客户希望通过 API 以编程方式访问此仪表板。
实际上,他们希望能够使用 HTTP Restful 服务以编程方式从代码中执行他们通常在仪表板网站上执行的所有相同功能。
...我的第一 react 是简单地构建一个 ASP.net Web API 项目,并将共享服务/库/组件从现有的 MVC 项目中分离出来,以便 API 和 MVC 网站都可以调用相同的内容代码库。
问题
- 是否可以在我现有的 MVC 网站项目中简单地创建 Web API Controller ,并通过 HTTP 公开它们?
- 如果不可能做到“1.”,那么如果我有一个 MVC 解决方案、一个单独的 Web API 解决方案以及一个公共(public)服务和模型的共享库项目,Azure 会运行良好吗?当我分别部署 MVC 解决方案和 Web API 解决方案时,如何确保 Azure 将共享库组件复制到云中?
更新
根据评论,以下两个独立 Controller (MVC 项目中的原始 MVC Controller 和同一项目中的附加 Web API Controller )的实现实际上确实有效。请注意,基于以下LINKED ARTICLE ,以下实现将是“MVC 6 之前”的实现。 MVC 6 本身提供了在单个 Controller 中实现 API 调用和通常的 MVC View 调用的能力(而不是从不同基类继承的单独 Controller )。
public class ProductsController : Controller
{
//Products/Index
public ActionResult Index()
{
return View();
}
}
public class ProductsAPIController : ApiController
{
// GET api/productsapi/getall
public IEnumerable<string> GetAll()
{
return new string[] { "value1", "value2" };
}
}
最佳答案
公平地说 - MVC 或 WebAPI,就您的消费客户而言,这并不重要。
MVC 和 WebAPI 都可以创建 JSON 或 XML 输出 - 只是其中之一使它变得更容易(WebAPI 根据客户端序列化相关响应)。
但是您可以很容易地将两者混合在一起,正如其他人所说,就像添加新项目
一样简单
关于c# - ASP.Net MVC 网站和 Web API 作为单一实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29890713/