我需要一个关于创建架构的建议,我想在UI层和业务层之间使用API层。 UI层应该只使用休息服务来显示数据。
这样做的原因是我们需要为其他客户端(如Ipad,Android等)公开相同的服务。
现在我的问题是: -
1)在这种情况下我们是否需要依赖注射? (我不这么认为,因为我们不会在UI层使用任何引用。唯一的问题是,我们正在通过服务来操作返回的JSON。)
2)会不会影响表现?
3)这是正确的做法吗?
任何帮助将不胜感激。感谢
答案 0 :(得分:1)
我为我创建API的方式是:
现在,web api项目中的不同控制器需要不同的服务对象(来自项目2)才能使用。我不得不为那些使用DI的控制器提供构造函数。为此,我使用了Autofac。
对您而言,您的业务层将是项目2。
流经另一个Project层的数据可能需要一些时间,您需要在API层中再次进行异常处理和日志记录。我不认为表演在这里应该是个大问题。
答案 1 :(得分:1)
根据我的经验,我见过这种面向平台的方法 - 向 N 客户提供mSOA。体系结构解决方案是Facade,它隐藏了所有复杂的业务层请求,同时提供了UI不敏感处理。
这会影响性能吗?
没有必要 - 因为它知道如何处理所有必需的子系统请求。所有客户都知道他们需要一个JSON合同来完成工作,而不是要调用哪个和多少个服务。通过这样做 - 我们有一个更好和简化的沟通。看一下Mediation (intra-communication)模式:
答案 2 :(得分:1)
1)不,你不能。
2)不,twitter首先是api,他们似乎做得很好。我从技术上讲它会,但它确实意味着你可以水平扩展,这样可以很容易地抵消额外的跳跃开销。
3)您有多个ui客户端,因此它似乎是一个不错的可行解决方案。
安全强> 安全性:基本认证 它最容易设置,但请注意令牌是可逆的,因此使用HTTPS加密通信。 包含用户名和密码的HTTP Authorization标头随每个请求一起发送到api级别。
您可以使用会话但需要更多设置。
有很多关于在C#和web api中设置基本身份验证的方法。