Restful 使用 MVC 的服务层

Restful service layer with MVC

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

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

现在我的问题是:-

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

2) 会影响性能吗?

3) 这是正确的方法吗?

如有任何帮助,我们将不胜感激。谢谢

我为自己创建 API 的方式是:

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

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

对于您来说,您的业务层将是项目 2。

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

根据我的经验,我见过这种面向平台的方法 - 提供 mSOA to N amount of clients. The architectural solution was a Facade 隐藏所有复杂的业务层请求,同时提供 UI 不敏感的处理。

Will it hurt performance?

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

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

1) 不,你不能。

2) 不,twitter 是 api 第一,他们看起来还不错。我想从技术上讲它会,但这确实意味着您可以水平扩展,因此可以轻松抵消额外的跃点开销。

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

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

您可以使用 session,但要求ui需要更多设置。

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