【问题标题】:Passing objects to a Web API from an MVC application从 MVC 应用程序将对象传递给 Web API
【发布时间】:2013-11-23 21:01:41
【问题描述】:

我们正在尝试将对象从 MVC 应用程序传递到 webapi 应用程序。 基本上我们的设置是:-

模型项目 MVC 4 web 项目 - 引用模型项目 WEB API 项目 - 引用模型项目

从 mvc 应用程序中,我们希望将填充模型传递给 web api,

用户模型

public User
{
    Firstname { get; set}
    Surname { get; set}
}

网络 API

public bool Add(mUser use)
{
}

MVC

http 头文件? 网址字符串? 我们应该使用http客户端吗? 另外,有样品吗?我只找到了 1 个,但无法让它工作。

http://social.msdn.microsoft.com/Forums/vstudio/en-US/c81ee004-67f6-4f9e-8b72-1e46378b39c0/how-to-pass-several-objects-to-web-api-method?forum=csharpgeneral

任何帮助或建议将不胜感激。

【问题讨论】:

  • 为什么?为什么要通过向您控制的服务发出另一个 HTTP 请求来处理 HTTP 请求?为什么不让您的 MVC 站点直接访问您的业务层?
  • 这是因为 web API 会单独发布,我们需要多个应用程序来与这个服务通信。该服务将充当网关
  • 在服务需要与多个应用程序通信的情况下,中间有一个 web api 并不少见,它不是使用 http 请求来访问另一个应用程序,它是一个额外的层,允许您的应用程序更健壮

标签: c# asp.net asp.net-mvc asp.net-mvc-4 asp.net-web-api


【解决方案1】:

基本上有两种方法:

  1. MVC 应用程序向 Web API using an HTTP client 执行完整的 HTTP 请求。这允许您将 Web API 托管在与 MVC 应用程序不同的进程中,并独立扩展它。 Web API 可以托管在与 MVC 应用程序不同的网络场上,并且两者的生命周期完全不同/
  2. Web API 和 MVC 应用程序托管在同一个 ASP.NET 进程中,并且 MVC 应用程序通过使用 HttpMessageInvoker 的直接调用来使用 Web API,如 this post 所示。此处的优点是客户端无需支付进行 HTTP 调用的开销。缺点是这 2 个应用程序紧密耦合,并且依赖于托管在同一进程中的事实。

这两种方法都有效,由您决定哪一种更适合您的需求。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-02-18
    • 1970-01-01
    • 1970-01-01
    • 2018-05-12
    • 1970-01-01
    • 1970-01-01
    • 2018-02-09
    相关资源
    最近更新 更多