【问题标题】:ASP.NET WEBAPI Internal/External UsageASP.NET WEBAPI 内部/外部使用
【发布时间】:2013-10-31 14:24:44
【问题描述】:

简介

  • 我们正在开始为我们当前的 Web 应用程序开发新的 Web 客户端。
  • 我们将借此机会构建一个 REST WebApi 来访问我们的资产(供第三方使用,以及我们的新 Web 客户端)
  • 我们正在考虑 WebAPI 的 OAuth、服务报价、应用程序权限等
  • 我们想“吃自己的狗粮”,所以新的 webclient 必须使用 webapi...
  • 重要提示:webApi 和 webClient 将托管在同一服务器中

问题

一个简单的用例是“获取菜单页面链接”

  1. 对于网络客户端,您会选择这两种方法中的哪一种?

    • a) 生成一个包含 Js webApiCall 的 html,以便从客户端 Web 浏览器调用以获取用户可用的菜单链接。 =(2 次往返:1 次用于 html/aspx + 1 次用于 api 调用 MenuGetAvailableItems
    • b) 生成一个 html,其中已经填充了数据菜单链接(webApi MenuGetAvailableItems 在服务器端内部使用)=(html/aspx 的 1 次往返 + API 内部调用..)李>
  2. 如果您选择选项 1B,是否可以通过使用来自同一服务器的 api 并维护安全性、报价等来避免 http 开销?我的意思是,我们可以使用一些 WCF 机制或其他机制来传达这两个网站,而不是对 localhost 进行 http 调用...?

感谢您的cmets

【问题讨论】:

    标签: wcf asp.net-web-api


    【解决方案1】:

    Q 1

    关于选项 a - 我会避免从网页调用 Web API,您将开始遇到 CORS 问题。还有,如果你想使用身份验证来访问Web API服务,你将如何从网页发送用户名和密码!

    关于选项 b - 您当然可以从您的网络应用程序内部使用网络 API 服务。

    问 2

    我不明白你在问什么。


    如果您构建 Web 服务的主要目的是允许第三方与您交互,那么您将只想构建需要公开的服务。

    一般来说,“吃自己的狗粮”可能不是使用 Web API 的最佳理由,因为标准调用数据库更合适。您将运行两个应用程序,而您真正需要的只是 Web 应用程序中的数据层。

    听起来您最终会得到一个庞大的 Web API 应用程序,每次您想向网站添加内容时都需要新服务。

    【讨论】:

    • 我有一个内部托管的 MVC Web API(例如myweb:123),只能从网络内部访问。我怎样才能让它让外部的人也可以访问它?
    • @Si8 这是一个非常不同的问题。我建议问一个新的
    • 我已经问过了,但没有得到适合我的回复。 stackoverflow.com/questions/43002283/…。感谢您的回复。
    猜你喜欢
    • 2014-01-31
    • 2016-04-20
    • 2020-07-01
    • 2013-06-06
    • 1970-01-01
    • 2012-05-11
    • 1970-01-01
    • 2014-02-08
    • 1970-01-01
    相关资源
    最近更新 更多