【问题标题】:Restful service layer with MVC带有 MVC 的 Restful 服务层
【发布时间】:2016-01-09 12:29:02
【问题描述】:

我需要有关创建架构的建议,我希望 API 层位于 UI 层和业务层之间。 UI 层应该只使用 rest 服务来显示数据。

这样做的原因是我们需要为其他客户端(如 Ipad、Android 等)公开相同的服务。

现在我的问题是:-

1) 在这种情况下我们需要依赖注入吗? (我不这么认为,因为我们不会在 UI 层使用任何引用。唯一的事情是,我们正在操作服务返回的 JSON。)

2) 会影响性能吗?

3) 这是正确的方法吗?

任何帮助将不胜感激。谢谢

【问题讨论】:

  • 你也应该添加webapi标签,让webapi专家看看。

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


【解决方案1】:

我们现在正在做大致相同的事情。

1) 不,你不能。

2) 不,twitter 是 api 首先,他们似乎做得很好。我想从技术上讲它会,但这确实意味着您可以水平扩展,因此可以轻松抵消额外的跃点开销。

3) 您有多个 ui 客户端,因此这似乎是一个不错的可行解决方案。

安全 安全性:基本身份验证 它最容易设置,但请注意令牌是可逆的,因此请使用 HTTPS 加密通信。 包含用户名和密码的 HTTP 授权标头随每个请求发送到 api 级别。

您可以使用会话,但这需要更多设置。

有很多关于如何在 C# 和 web api 中设置基本身份验证的方法。

【讨论】:

  • 那么 API 安全性如何? @巧克力史密斯
  • @AmitSoni 添加了安全部分。我可能只使用基本身份验证标头。我们使用它,但我们也有 https 用于我们所有的通信。
【解决方案2】:

我为我创建 API 的方式是:

  • 项目 1:WebAPI 作为获取数据的门户
  • 项目2:类库,为WebAPI层提供服务。
  • 项目 3:类库,使用 EF 向我的服务层提供数据。

现在,web api 项目中的不同控制器需要不同的服务对象(来自项目 2)才能使用。我必须为那些使用 DI 的控制器提供构造函数。为此,我使用了 Autofac。

对您而言,您的业务层将是项目 2。

数据流过另一个项目层可能需要一些时间,您需要在 API 层中重新设置异常处理和日志记录。我认为性能在这里应该不是大问题。

【讨论】:

  • 如果你使用WEBApi,那么其他客户端将如何使用相同的框架?
  • WebAPI 专注于创建 RESTful API。 Ipad、Android 等客户端确实使用 HTTP 请求和响应。对他们来说,我们的 API 就像另一个 HTTP 请求。只要我们能够提供他们需要的内容,API 是在什么平台上创建的,对他们来说并不重要。我明白你的问题了吗?这是你想知道的吗?
  • 我的问题是:- 如果我们使用WEBAPI,那么其他客户端将如何使用系统?即IOS / Android。 Coz Web API 不能作为单独的层工作。
  • 或者你是说创建一个单独的 WEBAPI 层?
  • 是的,一个单独的 web api 层。作为一个不同的项目。这将是所有客户端将与之交互的一个端点。
【解决方案3】:

根据我的经验,我见过这种面向平台的方法 - 向 N 数量的客户提供 mSOA。架构解决方案是Facade,它隐藏了所有复杂的业务层请求,同时提供了对 UI 不敏感的处理。

会影响性能吗?

没有必要 - 因为它知道如何处理所有必需的子系统请求。所有的客户都只知道他们需要一个 JSON 合约来完成工作,而不是需要调用哪些服务以及调用多少服务。通过这样做 - 我们有一个更好和简化的沟通。看看Mediation (intra-communication) 模式:

【讨论】:

    猜你喜欢
    • 2017-11-01
    • 1970-01-01
    • 2013-11-30
    • 2013-12-03
    • 2018-01-08
    • 2011-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多